diff options
author | David Gwynne <dlg@cvs.openbsd.org> | 2010-09-13 07:48:13 +0000 |
---|---|---|
committer | David Gwynne <dlg@cvs.openbsd.org> | 2010-09-13 07:48:13 +0000 |
commit | 81c0e6ff49f3bda87db8333a87cd5a0ef375526a (patch) | |
tree | bc54eb9b39937e841b4b4a46724c26443b977d3e /sys/dev/ic/mpivar.h | |
parent | 42612cd7f11ebee7a11be4efd3ae883c760903cb (diff) |
if a busy sas device is unplugged, the pending io on that device will
never complete.
when we get a detach event from the firmware, we currently deactivate the
device and then request the scsi midlayer attempt to detach the device.
this diff now deactivates the device and then resets the target, forcing
the ioc to complete the pending operations. once the reset has completed
we then request a detach of the kernel device.
this lets me hotplug busy sas disks without leaking scsi_xfers or bufs or
anything.
Diffstat (limited to 'sys/dev/ic/mpivar.h')
-rw-r--r-- | sys/dev/ic/mpivar.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/ic/mpivar.h b/sys/dev/ic/mpivar.h index d06f7c70151..911217d1a82 100644 --- a/sys/dev/ic/mpivar.h +++ b/sys/dev/ic/mpivar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: mpivar.h,v 1.34 2010/09/13 06:53:43 dlg Exp $ */ +/* $OpenBSD: mpivar.h,v 1.35 2010/09/13 07:48:12 dlg Exp $ */ /* * Copyright (c) 2005 David Gwynne <dlg@openbsd.org> @@ -140,6 +140,10 @@ struct mpi_softc { struct mutex sc_evt_ack_mtx; struct scsi_iohandler sc_evt_ack_handler; + struct mpi_rcb_list sc_evt_scan_queue; + struct mutex sc_evt_scan_mtx; + struct scsi_iohandler sc_evt_scan_handler; + struct workq_task sc_evt_rescan; struct mutex sc_evt_rescan_mtx; u_int sc_evt_rescan_sem; |