diff options
author | mav <mav@FreeBSD.org> | 2010-11-08 15:59:41 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2010-11-08 15:59:41 +0000 |
commit | 54ce13210c15545dd41c6d4a4ce929e5322c6dd8 (patch) | |
tree | 9f0654b7f77b1849499dc8b1fe37eb444e6c5995 /sys/cam/cam_periph.c | |
parent | 78df14851ad0652c4305a57a5954cdf0a6990360 (diff) | |
download | FreeBSD-src-54ce13210c15545dd41c6d4a4ce929e5322c6dd8.zip FreeBSD-src-54ce13210c15545dd41c6d4a4ce929e5322c6dd8.tar.gz |
When requesting sense data for SIM not doing it automatically (such as
ATAPI or USB), request only as much data as requested by consumer.
On the way back -- report how much sense data we have actually received.
Diffstat (limited to 'sys/cam/cam_periph.c')
-rw-r--r-- | sys/cam/cam_periph.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/cam/cam_periph.c b/sys/cam/cam_periph.c index 36a4f22..83bd075 100644 --- a/sys/cam/cam_periph.c +++ b/sys/cam/cam_periph.c @@ -1055,6 +1055,7 @@ camperiphsensedone(struct cam_periph *periph, union ccb *done_ccb) saved_ccb->ccb_h.status |= CAM_AUTOSENSE_FAIL; } + saved_ccb->csio.sense_resid = done_ccb->csio.resid; bcopy(saved_ccb, done_ccb, sizeof(union ccb)); xpt_free_ccb(saved_ccb); break; @@ -1211,7 +1212,7 @@ camperiphdone(struct cam_periph *periph, union ccb *done_ccb) scsi_request_sense(&done_ccb->csio, /*retries*/1, camperiphsensedone, &save_ccb->csio.sense_data, - sizeof(save_ccb->csio.sense_data), + save_ccb->csio.sense_len, CAM_TAG_ACTION_NONE, /*sense_len*/SSD_FULL_SIZE, /*timeout*/5000); @@ -1602,7 +1603,7 @@ camperiphscsisenseerror(union ccb *ccb, cam_flags camflags, scsi_request_sense(&ccb->csio, /*retries*/1, camperiphsensedone, &orig_ccb->csio.sense_data, - sizeof(orig_ccb->csio.sense_data), + orig_ccb->csio.sense_len, CAM_TAG_ACTION_NONE, /*sense_len*/SSD_FULL_SIZE, /*timeout*/5000); |