diff options
Diffstat (limited to 'sys/cam/cam_periph.c')
-rw-r--r-- | sys/cam/cam_periph.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/cam/cam_periph.c b/sys/cam/cam_periph.c index d947732..4ebf84c 100644 --- a/sys/cam/cam_periph.c +++ b/sys/cam/cam_periph.c @@ -1593,6 +1593,7 @@ cam_periph_error(union ccb *ccb, cam_flags camflags, const char *action_string; cam_status status; int frozen, error, openings, print, lost_device; + int error_code, sense_key, asc, ascq; u_int32_t relsim_flags, timeout; print = 1; @@ -1759,6 +1760,12 @@ cam_periph_error(union ccb *ccb, cam_flags camflags, xpt_async(AC_LOST_DEVICE, newpath, NULL); xpt_free_path(newpath); } + + /* Broadcast UNIT ATTENTIONs to all periphs. */ + } else if (scsi_extract_sense_ccb(ccb, + &error_code, &sense_key, &asc, &ascq) && + sense_key == SSD_KEY_UNIT_ATTENTION) { + xpt_async(AC_UNIT_ATTENTION, orig_ccb->ccb_h.path, orig_ccb); } /* Attempt a retry */ |