aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/iscsi_tcp.h
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2006-04-06 22:13:39 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-04-14 15:05:09 -0400
commit30a6c65236f9d26e3325cae468f330b833a3878c (patch)
tree355519ccc74d4b3984c06d7dcb5852282e47c845 /drivers/scsi/iscsi_tcp.h
parentfd7255f51a13ea915099c7e488001dfbbeb05104 (diff)
[SCSI] iscsi: fix up iscsi eh
The current iscsi_tcp eh is not nicely setup for dm-multipath and performs some extra task management functions when they are not needed. The attached patch: - Fixes the TMF issues. If a session is rebuilt then we do not send aborts. - Fixes the problem where if the host reset fired, we would return SUCCESS even though we had not really done anything yet. This ends up causing problem with scsi_error.c's TUR. - If someone has turned on the userspace nop daemon code to try and detect network problems before the scsi command timeout we can now drop and clean up the session before the scsi command timesout and fires the eh speeding up the time it takes for a command to go from one patch to another. For network problems we fail the command with DID_BUS_BUSY so if failfast is set scsi_decide_disposition fails the command up to dm for it to try on another path. - And we had to add some basic iscsi session block code. Previously if we were trying to repair a session we would retrun a MLQUEUE code in the queuecommand. This worked but it was not the most efficient or pretty thing to do since it would take a while to relogin to the target. For iscsi_tcp/open-iscsi a lot of the iscsi error handler is in userspace the block code is pretty bare. We will be adding to that for qla4xxx. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/iscsi_tcp.h')
-rw-r--r--drivers/scsi/iscsi_tcp.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/iscsi_tcp.h b/drivers/scsi/iscsi_tcp.h
index ba26741ac154..12ef64179b4c 100644
--- a/drivers/scsi/iscsi_tcp.h
+++ b/drivers/scsi/iscsi_tcp.h
@@ -159,6 +159,7 @@ struct iscsi_conn {
159 struct kfifo *immqueue; /* immediate xmit queue */ 159 struct kfifo *immqueue; /* immediate xmit queue */
160 struct kfifo *mgmtqueue; /* mgmt (control) xmit queue */ 160 struct kfifo *mgmtqueue; /* mgmt (control) xmit queue */
161 struct kfifo *xmitqueue; /* data-path cmd queue */ 161 struct kfifo *xmitqueue; /* data-path cmd queue */
162 struct list_head run_list; /* list of cmds in progress */
162 struct work_struct xmitwork; /* per-conn. xmit workqueue */ 163 struct work_struct xmitwork; /* per-conn. xmit workqueue */
163 struct mutex xmitmutex; /* serializes connection xmit, 164 struct mutex xmitmutex; /* serializes connection xmit,
164 * access to kfifos: * 165 * access to kfifos: *
@@ -228,6 +229,7 @@ struct iscsi_session {
228 * - mgmtpool, * 229 * - mgmtpool, *
229 * - r2tpool */ 230 * - r2tpool */
230 int state; /* session state */ 231 int state; /* session state */
232 int recovery_failed;
231 struct list_head item; 233 struct list_head item;
232 void *auth_client; 234 void *auth_client;
233 int conn_cnt; 235 int conn_cnt;
@@ -310,6 +312,7 @@ struct iscsi_cmd_task {
310 struct iscsi_conn *conn; /* used connection */ 312 struct iscsi_conn *conn; /* used connection */
311 struct iscsi_mgmt_task *mtask; /* tmf mtask in progr */ 313 struct iscsi_mgmt_task *mtask; /* tmf mtask in progr */
312 314
315 struct list_head running; /* running cmd list */
313 struct iscsi_r2t_info *r2t; /* in progress R2T */ 316 struct iscsi_r2t_info *r2t; /* in progress R2T */
314 struct iscsi_queue r2tpool; 317 struct iscsi_queue r2tpool;
315 struct kfifo *r2tqueue; 318 struct kfifo *r2tqueue;