diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2009-09-04 22:05:33 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-09-12 10:35:33 -0400 |
commit | 661134ad3765348ecd6150a92e736bf28ba40f80 (patch) | |
tree | 48e36c4995421964faa322a5a313793e481edb55 /include/scsi | |
parent | 4c0ba5d2593b5156327263f3ef6d7399dc0717b8 (diff) |
[SCSI] libiscsi, bnx2i: make bound ep check common
bnx2i currently has a check for if a ep is properly bound, so if
iscsi_queuecommand/xmit_task is called while there is no ep
we will not queue IO.
be2iscsi sends IO from queuecommand/xmit_task like how bnx2i does
and needs a similar test. This patch has us just use the suspend_bit
test for this.
When ep_poll has succeeed iscsid will call conn_bind, the LLD will
then call iscsi_conn_bind which will clear the suspend bit.
When ep_disconnect is called (or if there is a conn error) we set
the suspend bit. For the ep_disconnect case I am adding a helper
in this patch that will take the session lock to make sure
iscsi_queuecommand/xmit_task is not running and it will set
the suspend bit.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: Jayamohan Kallickal <jayamohank@serverengines.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/libiscsi.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h index 439c8b75cb69..887e57e3e223 100644 --- a/include/scsi/libiscsi.h +++ b/include/scsi/libiscsi.h | |||
@@ -390,6 +390,7 @@ extern void iscsi_session_failure(struct iscsi_session *session, | |||
390 | extern int iscsi_conn_get_param(struct iscsi_cls_conn *cls_conn, | 390 | extern int iscsi_conn_get_param(struct iscsi_cls_conn *cls_conn, |
391 | enum iscsi_param param, char *buf); | 391 | enum iscsi_param param, char *buf); |
392 | extern void iscsi_suspend_tx(struct iscsi_conn *conn); | 392 | extern void iscsi_suspend_tx(struct iscsi_conn *conn); |
393 | extern void iscsi_suspend_queue(struct iscsi_conn *conn); | ||
393 | extern void iscsi_conn_queue_work(struct iscsi_conn *conn); | 394 | extern void iscsi_conn_queue_work(struct iscsi_conn *conn); |
394 | 395 | ||
395 | #define iscsi_conn_printk(prefix, _c, fmt, a...) \ | 396 | #define iscsi_conn_printk(prefix, _c, fmt, a...) \ |