aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorMartin K. Petersen <martin.petersen@oracle.com>2009-11-26 12:00:41 -0500
committerJames Bottomley <James.Bottomley@suse.de>2009-12-10 08:54:15 -0600
commitd8705f11d89cfabf4a9f0ea234d4809b22abb33e (patch)
treee1ce54ec1f01fc9d2f77fd9c730b87167ac02219 /drivers/scsi
parent[SCSI] sd: WRITE SAME(16) / UNMAP support (diff)
downloadlinux-dev-d8705f11d89cfabf4a9f0ea234d4809b22abb33e.tar.xz
linux-dev-d8705f11d89cfabf4a9f0ea234d4809b22abb33e.zip
[SCSI] Correctly handle thin provisioning write error
A thin provisioned device may temporarily be out of sufficient allocation units to fulfill a write request. In that case it will return a space allocation in progress error. Wait a bit and retry the write. Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/scsi_lib.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index e495d3813948..d8927681ec88 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -859,6 +859,7 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
case 0x07: /* operation in progress */
case 0x08: /* Long write in progress */
case 0x09: /* self test in progress */
+ case 0x14: /* space allocation in progress */
action = ACTION_DELAYED_RETRY;
break;
default: