summaryrefslogtreecommitdiffstats
path: root/sys/cam/cam_xpt.c
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2015-10-05 07:40:18 +0000
committermav <mav@FreeBSD.org>2015-10-05 07:40:18 +0000
commitd5fb1f0517d19a783291de939dd2e9c1cdc91bce (patch)
tree6b50b9ca659269bd0616639ed68c6607704cbe90 /sys/cam/cam_xpt.c
parent656ac26a525c2bd9c19e4909b6655df3939a3688 (diff)
downloadFreeBSD-src-d5fb1f0517d19a783291de939dd2e9c1cdc91bce.zip
FreeBSD-src-d5fb1f0517d19a783291de939dd2e9c1cdc91bce.tar.gz
MFC r281531 (by asomers):
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.
Diffstat (limited to 'sys/cam/cam_xpt.c')
-rw-r--r--sys/cam/cam_xpt.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/cam/cam_xpt.c b/sys/cam/cam_xpt.c
index 5c3c37d..711baae 100644
--- a/sys/cam/cam_xpt.c
+++ b/sys/cam/cam_xpt.c
@@ -4268,8 +4268,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
OpenPOWER on IntegriCloud