summaryrefslogtreecommitdiffstats
path: root/sys/cam/cam_periph.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cam/cam_periph.c')
-rw-r--r--sys/cam/cam_periph.c7
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 */
OpenPOWER on IntegriCloud