Initialize async_arg_ptr in xpt_async when called with async_code

AC_ADVINFO_CHANGED.

Without this change, newly inserted hard disks won't always have their
physical path device nodes created.  The problem reproduces most readily
when attaching a large number of disks at once.

Differential Revision:	https://reviews.freebsd.org/D2290
Reviewed by:	mav, imp
MFC after:	2 weeks
Sponsored by:	Spectra Logic
This commit is contained in:
asomers 2015-04-14 16:33:33 +00:00
parent cb4c6b9356
commit 4cf0410ad1

View File

@ -4264,8 +4264,10 @@ xpt_async(u_int32_t async_code, struct cam_path *path, void *async_arg)
}
memcpy(ccb->casync.async_arg_ptr, async_arg, size);
ccb->casync.async_arg_size = size;
} else if (size < 0)
} else if (size < 0) {
ccb->casync.async_arg_ptr = async_arg;
ccb->casync.async_arg_size = size;
}
if (path->device != NULL && path->device->lun_id != CAM_LUN_WILDCARD)
xpt_freeze_devq(path, 1);
else