|
From: <vl...@us...> - 2014-04-29 00:13:27
|
Revision: 5490
http://sourceforge.net/p/scst/svn/5490
Author: vlnb
Date: 2014-04-29 00:13:24 +0000 (Tue, 29 Apr 2014)
Log Message:
-----------
It's wrong to clean reservation on failed RESERVE commands
With multiple outstanding commands it can open a race window leading to
loose of a valid reservation
Modified Paths:
--------------
trunk/scst/src/scst_targ.c
Modified: trunk/scst/src/scst_targ.c
===================================================================
--- trunk/scst/src/scst_targ.c 2014-04-28 22:30:03 UTC (rev 5489)
+++ trunk/scst/src/scst_targ.c 2014-04-29 00:13:24 UTC (rev 5490)
@@ -3595,23 +3595,6 @@
TRACE(TRACE_SCSI, "cmd %p not succeeded with status %x",
cmd, cmd->status);
- if ((cmd->cdb[0] == RESERVE) || (cmd->cdb[0] == RESERVE_10)) {
- struct scst_device *dev = cmd->dev;
-
- if (scst_is_reservation_holder(dev, cmd->sess)) {
- TRACE(TRACE_SCSI, "RESERVE failed lun=%lld, "
- "status=%x",
- (long long unsigned int)cmd->lun,
- cmd->status);
- PRINT_BUFF_FLAG(TRACE_SCSI, "Sense", cmd->sense,
- cmd->sense_valid_len);
-
- spin_lock_bh(&dev->dev_lock);
- scst_clear_dev_reservation(dev);
- spin_unlock_bh(&dev->dev_lock);
- }
- }
-
/* Check for MODE PARAMETERS CHANGED UA */
if ((cmd->dev->scsi_dev != NULL) &&
(cmd->status == SAM_STAT_CHECK_CONDITION) &&
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|