aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_lib.c
diff options
context:
space:
mode:
authorJames Bottomley <James.Bottomley@suse.de>2010-11-17 10:10:57 -0600
committerJames Bottomley <James.Bottomley@suse.de>2010-12-09 09:41:16 -0600
commit459dbf72e4d2b4aa13620e6b70d54f098547bf13 (patch)
treec3cdd3b69a95cba555974a72710a9aaa0b13183a /drivers/scsi/scsi_lib.c
parent5da61410054d125e63aeab9cc7a11874a69465c0 (diff)
downloadkernel_samsung_smdk4412-459dbf72e4d2b4aa13620e6b70d54f098547bf13.zip
kernel_samsung_smdk4412-459dbf72e4d2b4aa13620e6b70d54f098547bf13.tar.gz
kernel_samsung_smdk4412-459dbf72e4d2b4aa13620e6b70d54f098547bf13.tar.bz2
[SCSI] Eliminate error handler overload of the SCSI serial number
The error handler is using the test cmd->serial_number == 0 in the abort routines to signal that the command to be aborted has already completed normally. This design was to close a race window in the original error handler where a command could go through the normal completion routines after it timed out but before error handling was started. Mike Anderson pointed out that when we converted our timeout and softirq completions, we picked up atomicity here because the block layer now mediates this with the REQ_ATOM_COMPLETE flag and guarantees that *either* the command times out or our done routine is called, but ensures we can't get both occurring. That makes the serial number zero check redundant and it can be removed. Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/scsi_lib.c')
-rw-r--r--drivers/scsi/scsi_lib.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index eafeeda..5b6bbae 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1403,11 +1403,6 @@ static void scsi_softirq_done(struct request *rq)
INIT_LIST_HEAD(&cmd->eh_entry);
- /*
- * Set the serial numbers back to zero
- */
- cmd->serial_number = 0;
-
atomic_inc(&cmd->device->iodone_cnt);
if (cmd->result)
atomic_inc(&cmd->device->ioerr_cnt);