|
From: <vl...@us...> - 2008-11-25 16:44:33
|
Revision: 583
http://scst.svn.sourceforge.net/scst/?rev=583&view=rev
Author: vlnb
Date: 2008-11-25 16:44:24 +0000 (Tue, 25 Nov 2008)
Log Message:
-----------
- Now task_mgmt_fn() callback called for TARGET RESET and NEXUS LOSS only once for tgt_dev, which belongs to the session, from which the corresponding request came
- Cleanup
Modified Paths:
--------------
trunk/scst/src/scst_targ.c
Modified: trunk/scst/src/scst_targ.c
===================================================================
--- trunk/scst/src/scst_targ.c 2008-11-21 12:12:53 UTC (rev 582)
+++ trunk/scst/src/scst_targ.c 2008-11-25 16:44:24 UTC (rev 583)
@@ -3998,7 +3998,7 @@
}
static void __scst_abort_task_set(struct scst_mgmt_cmd *mcmd,
- struct scst_tgt_dev *tgt_dev, int other_ini)
+ struct scst_tgt_dev *tgt_dev)
{
struct scst_cmd *cmd;
struct scst_session *sess = tgt_dev->sess;
@@ -4019,7 +4019,7 @@
(mcmd->cmd_sn == cmd->tgt_sn))
continue;
}
- scst_abort_cmd(cmd, mcmd, other_ini, 0);
+ scst_abort_cmd(cmd, mcmd, 0, 0);
}
}
spin_unlock_irq(&sess->sess_list_lock);
@@ -4044,7 +4044,7 @@
__scst_block_dev(dev);
spin_unlock_bh(&dev->dev_lock);
- __scst_abort_task_set(mcmd, tgt_dev, 0);
+ __scst_abort_task_set(mcmd, tgt_dev);
scst_unblock_aborted_cmds(0);
@@ -4103,7 +4103,7 @@
__scst_block_dev(dev);
spin_unlock_bh(&dev->dev_lock);
- __scst_abort_task_set(mcmd, mcmd->mcmd_tgt_dev, 0);
+ __scst_abort_task_set(mcmd, mcmd->mcmd_tgt_dev);
mutex_lock(&scst_mutex);
@@ -4285,12 +4285,16 @@
list_for_each_entry(tgt_dev, &dev->dev_tgt_dev_list,
dev_tgt_dev_list_entry) {
cont = 1;
- rc = scst_call_dev_task_mgmt_fn(mcmd, tgt_dev, 0);
- if (rc == SCST_DEV_TM_NOT_COMPLETED)
- c = 1;
- else if ((rc < 0) &&
- (mcmd->status == SCST_MGMT_STATUS_SUCCESS))
- mcmd->status = rc;
+ if (mcmd->sess == tgt_dev->sess) {
+ rc = scst_call_dev_task_mgmt_fn(mcmd,
+ tgt_dev, 0);
+ if (rc == SCST_DEV_TM_NOT_COMPLETED)
+ c = 1;
+ else if ((rc < 0) &&
+ (mcmd->status == SCST_MGMT_STATUS_SUCCESS))
+ mcmd->status = rc;
+ break;
+ }
}
if (cont && !c)
continue;
@@ -4471,7 +4475,7 @@
spin_unlock_bh(&dev->dev_lock);
}
- __scst_abort_task_set(mcmd, tgt_dev, 0);
+ __scst_abort_task_set(mcmd, tgt_dev);
rc = scst_call_dev_task_mgmt_fn(mcmd, tgt_dev, 0);
if (rc < 0 && mcmd->status == SCST_MGMT_STATUS_SUCCESS)
@@ -4555,16 +4559,18 @@
sess_tgt_dev_list_entry) {
int rc;
- __scst_abort_task_set(mcmd, tgt_dev, 0);
+ __scst_abort_task_set(mcmd, tgt_dev);
if (nexus_loss)
scst_nexus_loss(tgt_dev);
- rc = scst_call_dev_task_mgmt_fn(mcmd, tgt_dev,
- 0);
- if ((rc < 0) &&
- (mcmd->status == SCST_MGMT_STATUS_SUCCESS))
- mcmd->status = rc;
+ if (mcmd->sess == tgt_dev->sess) {
+ rc = scst_call_dev_task_mgmt_fn(
+ mcmd, tgt_dev, 0);
+ if ((rc < 0) &&
+ (mcmd->status == SCST_MGMT_STATUS_SUCCESS))
+ mcmd->status = rc;
+ }
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|