Two changes:

1) Look at asc/ascq for NOT_READY and DATA_PROTECT;
2) Translate SPACE_ALLOC_FAILED as ENOSPC;

Signed-off-by: Fam Zheng <[email protected]>
---
 util/scsi.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/util/scsi.c b/util/scsi.c
index 92ca436cd0..d42ce33449 100644
--- a/util/scsi.c
+++ b/util/scsi.c
@@ -18,13 +18,11 @@
 int scsi_sense_to_errno(int key, int asc, int ascq)
 {
     switch (key) {
-    case 0x02: /* SCSI_SENSE_NOT_READY */
-        return EBUSY;
-    case 0x07: /* SCSI_SENSE_DATA_PROTECTION */
-        return EACCES;
     case 0x0b: /* SCSI_SENSE_COMMAND_ABORTED */
         return ECANCELED;
+    case 0x02: /* SCSI_SENSE_NOT_READY */
     case 0x05: /* SCSI_SENSE_ILLEGAL_REQUEST */
+    case 0x07: /* SCSI_SENSE_DATA_PROTECTION */
         /* Parse ASCQ */
         break;
     default:
@@ -37,6 +35,7 @@ int scsi_sense_to_errno(int key, int asc, int ascq)
     case 0x2600: /* SCSI_SENSE_ASCQ_INVALID_FIELD_IN_PARAMETER_LIST */
         return EINVAL;
     case 0x2100: /* SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE */
+    case 0x2707: /* SCSI_SENSE_ASCQ_SPACE_ALLOC_FAILED */
         return ENOSPC;
     case 0x2500: /* SCSI_SENSE_ASCQ_LOGICAL_UNIT_NOT_SUPPORTED */
         return ENOTSUP;
-- 
2.13.4


Reply via email to