[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 3/4] scsi: Introduce scsi_sense_buf_to_errno
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH v4 3/4] scsi: Introduce scsi_sense_buf_to_errno |
Date: |
Mon, 21 Aug 2017 22:10:07 +0800 |
This recognizes the "fixed" and "descriptor" format sense data, extracts
the sense key/asc/ascq fields then converts them to an errno.
Signed-off-by: Fam Zheng <address@hidden>
---
include/scsi/scsi.h | 1 +
util/scsi.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 31 insertions(+)
diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h
index f894ace4bf..fe330385d8 100644
--- a/include/scsi/scsi.h
+++ b/include/scsi/scsi.h
@@ -15,5 +15,6 @@
#define QEMU_SCSI_H
int scsi_sense_to_errno(int key, int asc, int ascq);
+int scsi_sense_buf_to_errno(const uint8_t *sense, size_t sense_size);
#endif
diff --git a/util/scsi.c b/util/scsi.c
index 472eb5bea5..472293d59b 100644
--- a/util/scsi.c
+++ b/util/scsi.c
@@ -58,3 +58,33 @@ int scsi_sense_to_errno(int key, int asc, int ascq)
return EIO;
}
}
+
+int scsi_sense_buf_to_errno(const uint8_t *sense, size_t sense_size)
+{
+ int key, asc, ascq;
+ if (sense_size < 1) {
+ return EIO;
+ }
+ switch (sense[0]) {
+ case 0x70: /* Fixed format sense data. */
+ if (sense_size < 14) {
+ return EIO;
+ }
+ key = sense[2] & 0xF;
+ asc = sense[12];
+ ascq = sense[13];
+ break;
+ case 0x72: /* Descriptor format sense data. */
+ if (sense_size < 4) {
+ return EIO;
+ }
+ key = sense[1] & 0xF;
+ asc = sense[2];
+ ascq = sense[3];
+ break;
+ default:
+ return EIO;
+ break;
+ }
+ return scsi_sense_to_errno(key, asc, ascq);
+}
--
2.13.5
- [Qemu-devel] [PATCH v4 0/4] scsi-block: Support werror/rerror, Fam Zheng, 2017/08/21
- [Qemu-devel] [PATCH v4 1/4] scsi: Refactor scsi sense interpreting code, Fam Zheng, 2017/08/21
- [Qemu-devel] [PATCH v4 2/4] scsi: Improve scsi_sense_to_errno, Fam Zheng, 2017/08/21
- [Qemu-devel] [PATCH v4 3/4] scsi: Introduce scsi_sense_buf_to_errno,
Fam Zheng <=
- [Qemu-devel] [PATCH v4 4/4] scsi-block: Support rerror/werror, Fam Zheng, 2017/08/21
- Re: [Qemu-devel] [PATCH v4 0/4] scsi-block: Support werror/rerror, Paolo Bonzini, 2017/08/21
- Re: [Qemu-devel] [PATCH v4 0/4] scsi-block: Support werror/rerror, no-reply, 2017/08/22