| From a7dc92dac7cedb3ba6b6d724c7579f05399e2f2e Mon Sep 17 00:00:00 2001 |
| From: Fam Zheng <famz@redhat.com> |
| Date: Mon, 21 Aug 2017 22:10:06 +0800 |
| Subject: [PATCH 05/15] scsi: Improve scsi_sense_to_errno |
| |
| Tweak the errno mapping to return more accurate/appropriate values. |
| |
| Signed-off-by: Fam Zheng <famz@redhat.com> |
| Message-Id: <20170821141008.19383-3-famz@redhat.com> |
| Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
| |
| util/scsi.c | 16 ++++++++++++---- |
| 1 file changed, 12 insertions(+), 4 deletions(-) |
| |
| diff --git a/util/scsi.c b/util/scsi.c |
| index a6710799fc..472eb5bea5 100644 |
| |
| |
| @@ -18,13 +18,16 @@ |
| int scsi_sense_to_errno(int key, int asc, int ascq) |
| { |
| switch (key) { |
| - case 0x02: /* NOT READY */ |
| - return EBUSY; |
| - case 0x07: /* DATA PROTECTION */ |
| - return EACCES; |
| + case 0x00: /* NO SENSE */ |
| + case 0x01: /* RECOVERED ERROR */ |
| + case 0x06: /* UNIT ATTENTION */ |
| + /* These sense keys are not errors */ |
| + return 0; |
| case 0x0b: /* COMMAND ABORTED */ |
| return ECANCELED; |
| + case 0x02: /* NOT READY */ |
| case 0x05: /* ILLEGAL REQUEST */ |
| + case 0x07: /* DATA PROTECTION */ |
| /* Parse ASCQ */ |
| break; |
| default: |
| @@ -37,6 +40,7 @@ int scsi_sense_to_errno(int key, int asc, int ascq) |
| case 0x2600: /* INVALID FIELD IN PARAMETER LIST */ |
| return EINVAL; |
| case 0x2100: /* LBA OUT OF RANGE */ |
| + case 0x2707: /* SPACE ALLOC FAILED */ |
| return ENOSPC; |
| case 0x2500: /* LOGICAL UNIT NOT SUPPORTED */ |
| return ENOTSUP; |
| @@ -46,6 +50,10 @@ int scsi_sense_to_errno(int key, int asc, int ascq) |
| return ENOMEDIUM; |
| case 0x2700: /* WRITE PROTECTED */ |
| return EACCES; |
| + case 0x0401: /* NOT READY, IN PROGRESS OF BECOMING READY */ |
| + return EAGAIN; |
| + case 0x0402: /* NOT READY, INITIALIZING COMMAND REQUIRED */ |
| + return ENOTCONN; |
| default: |
| return EIO; |
| } |
| -- |
| 2.13.5 |
| |