diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2008-03-04 13:26:55 -0600 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-03-05 12:04:09 -0600 |
commit | 45ab33b6c190c4a8c58f1d13be2ff89ee62024ba (patch) | |
tree | 7bcec9986d93b55b0693829903a959e3c96f42b1 /include/scsi | |
parent | 024f801f528220edc89275a724ea00cd18c5ebb7 (diff) | |
download | op-kernel-dev-45ab33b6c190c4a8c58f1d13be2ff89ee62024ba.zip op-kernel-dev-45ab33b6c190c4a8c58f1d13be2ff89ee62024ba.tar.gz |
[SCSI] iscsi class: regression - fix races with state manipulation and blocking/unblocking
For qla4xxx, we could be starting a session, but some error (network,
target, IO from a device that got started, etc) could cause the session
to fail and curring the block/unblock and state manipulation could race
with each other. This patch just has those operations done in the
single threaded iscsi eh work queue, so that way they are serialized.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/scsi_transport_iscsi.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h index dbc96ef..aab1eae 100644 --- a/include/scsi/scsi_transport_iscsi.h +++ b/include/scsi/scsi_transport_iscsi.h @@ -177,6 +177,8 @@ struct iscsi_cls_session { struct list_head host_list; struct iscsi_transport *transport; spinlock_t lock; + struct work_struct block_work; + struct work_struct unblock_work; struct work_struct scan_work; struct work_struct unbind_work; |