diff options
author | Conrad Meyer <cem@FreeBSD.org> | 2018-08-10 19:19:07 +0000 |
---|---|---|
committer | Conrad Meyer <cem@FreeBSD.org> | 2018-08-10 19:19:07 +0000 |
commit | f053ca1f0846852a472ac418218e6cdcc70d4ec2 (patch) | |
tree | 8b0597569e892128f061cb6343ebe82b344833f0 /sys/cam/nvme | |
parent | 0915d9d07061ba3f00882663a8a20337079b6f4d (diff) | |
download | src-f053ca1f0846852a472ac418218e6cdcc70d4ec2.tar.gz src-f053ca1f0846852a472ac418218e6cdcc70d4ec2.zip |
Walk back r337554 while discussion continues
The idea was to get the uncontroversial mechanical change out of the way,
then get the meatier functional changes reviewed subsequently. I had not
realized that the immediately adjacent issue was addressed in a different
direction in r334506 (see Warner's guidance in D15592).
Discussion continues, trying to determine if there is a secondary issue
still[1] and how best to fix it. With 12-related activities coming up,
while that is ongoing, just take this back for now.
[1]: Shutdown-time eventhandler events fire normally during panic's reboot
path. Driver callbacks that attempt to issue and wait on interrupt-
completed IO may never complete, hanging the system. This is particularly
obnoxious in the shutdown/panic path, as the debugger cannot be entered
anymore and the hang prevents reboot restoring availability.
(There's nothing CAM-specific about this problem -- any shutdown
event-triggered driver could do something like this during panic. But most
NICs, etc. don't try to send spin-down commands at shutdown. ;-))
Discussed with: imp, markj
Notes
Notes:
svn path=/head/; revision=337583
Diffstat (limited to 'sys/cam/nvme')
-rw-r--r-- | sys/cam/nvme/nvme_da.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/sys/cam/nvme/nvme_da.c b/sys/cam/nvme/nvme_da.c index a430798ae016..f83a038506aa 100644 --- a/sys/cam/nvme/nvme_da.c +++ b/sys/cam/nvme/nvme_da.c @@ -426,7 +426,6 @@ ndadump(void *arg, void *virtual, vm_offset_t physical, off_t offset, size_t len xpt_setup_ccb(&nvmeio.ccb_h, periph->path, CAM_PRIORITY_NORMAL); nvmeio.ccb_state = NDA_CCB_DUMP; nda_nvme_write(softc, &nvmeio, virtual, lba, length, count); - nvmeio.ccb_h.xflags |= CAM_CCB_DUMP; error = cam_periph_runccb((union ccb *)&nvmeio, cam_periph_error, 0, SF_NO_RECOVERY | SF_NO_RETRY, NULL); if (error != 0) @@ -440,7 +439,6 @@ ndadump(void *arg, void *virtual, vm_offset_t physical, off_t offset, size_t len nvmeio.ccb_state = NDA_CCB_DUMP; nda_nvme_flush(softc, &nvmeio); - nvmeio.ccb_h.xflags |= CAM_CCB_DUMP; error = cam_periph_runccb((union ccb *)&nvmeio, cam_periph_error, 0, SF_NO_RECOVERY | SF_NO_RETRY, NULL); if (error != 0) |