[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 08/16] scsi: Return SAM status codes
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 08/16] scsi: Return SAM status codes |
Date: |
Tue, 30 Nov 2010 18:58:12 +0100 |
From: Hannes Reinecke <address@hidden>
Traditionally, the linux stack is using SCSI status codes
which are shifted by one as compared to those defined in SAM.
A SCSI emulation should naturally return the SAM defined codes,
not the linux ones.
So to avoid any confusion this patch modifies the existing
definitions to match those found in SAM and removes any
(now obsolete) byte-shift from the returned status codes.
Signed-off-by: Hannes Reinecke <address@hidden>
Acked-by: Christoph Hellwig <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
hw/scsi-defs.h | 20 +++++++++++---------
hw/scsi-generic.c | 10 +++++-----
2 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/hw/scsi-defs.h b/hw/scsi-defs.h
index a4a3518..1473ecb 100644
--- a/hw/scsi-defs.h
+++ b/hw/scsi-defs.h
@@ -111,18 +111,20 @@
#define BLANK 0xa1
/*
- * Status codes
+ * SAM Status codes
*/
#define GOOD 0x00
-#define CHECK_CONDITION 0x01
-#define CONDITION_GOOD 0x02
-#define BUSY 0x04
-#define INTERMEDIATE_GOOD 0x08
-#define INTERMEDIATE_C_GOOD 0x0a
-#define RESERVATION_CONFLICT 0x0c
-#define COMMAND_TERMINATED 0x11
-#define QUEUE_FULL 0x14
+#define CHECK_CONDITION 0x02
+#define CONDITION_GOOD 0x04
+#define BUSY 0x08
+#define INTERMEDIATE_GOOD 0x10
+#define INTERMEDIATE_C_GOOD 0x14
+#define RESERVATION_CONFLICT 0x18
+#define COMMAND_TERMINATED 0x22
+#define TASK_SET_FULL 0x28
+#define ACA_ACTIVE 0x30
+#define TASK_ABORTED 0x40
#define STATUS_MASK 0x3e
diff --git a/hw/scsi-generic.c b/hw/scsi-generic.c
index 7212091..9be1cca 100644
--- a/hw/scsi-generic.c
+++ b/hw/scsi-generic.c
@@ -96,17 +96,17 @@ static void scsi_command_complete(void *opaque, int ret)
s->senselen = r->io_header.sb_len_wr;
if (ret != 0)
- r->req.status = BUSY << 1;
+ r->req.status = BUSY;
else {
if (s->driver_status & SG_ERR_DRIVER_TIMEOUT) {
- r->req.status = BUSY << 1;
+ r->req.status = BUSY;
BADF("Driver Timeout\n");
} else if (r->io_header.status)
r->req.status = r->io_header.status;
else if (s->driver_status & SG_ERR_DRIVER_SENSE)
- r->req.status = CHECK_CONDITION << 1;
+ r->req.status = CHECK_CONDITION;
else
- r->req.status = GOOD << 1;
+ r->req.status = GOOD;
}
DPRINTF("Command complete 0x%p tag=0x%x status=%d\n",
r, r->req.tag, r->req.status);
@@ -333,7 +333,7 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t
tag,
s->senselen = 7;
s->driver_status = SG_ERR_DRIVER_SENSE;
bus = scsi_bus_from_device(d);
- bus->complete(bus, SCSI_REASON_DONE, tag, CHECK_CONDITION << 1);
+ bus->complete(bus, SCSI_REASON_DONE, tag, CHECK_CONDITION);
return 0;
}
--
1.7.2.3
- [Qemu-devel] [PULL 00/16] Block patches, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 06/16] block: Remove unused s->hd in various drivers, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 15/16] ide: Ignore double DMA transfer starts/stops, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 11/16] scsi-disk: Remove duplicate cdb parsing, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 13/16] ide: Factor ide_dma_set_inactive out, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 07/16] scsi: Increase the number of possible devices, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 04/16] ide: convert bmdma address ioport to ioport_register(), Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 14/16] ide: Set bus master inactive on error, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 12/16] raw-posix: raw_pwrite comment fixup, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 10/16] scsi: Move sense handling into the driver, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 08/16] scsi: Return SAM status codes,
Kevin Wolf <=
- [Qemu-devel] [PATCH 05/16] qemu and qemu-xen: support empty write barriers in xen_disk, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 09/16] scsi: INQUIRY VPD fixes, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 01/16] scsi-disk: Move active request asserts, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 02/16] Implement drive_del to decouple block removal from device removal, Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 03/16] block migration: do not submit multiple AIOs for same sector (v2), Kevin Wolf, 2010/11/30
- [Qemu-devel] [PATCH 16/16] ide: Reset current_addr after stopping DMA, Kevin Wolf, 2010/11/30