[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 09/38] scsi-block: always use SG_IO for MMC devic
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PATCH v3 09/38] scsi-block: always use SG_IO for MMC devices |
Date: |
Wed, 23 Nov 2011 11:44:59 +0000 |
From: Paolo Bonzini <address@hidden>
CD burning messes up the state of the host page cache and host block
device. Just pass all operations down to the device, even though that
might have slightly worse performance. Everything else just is not
reliable in combination with burning.
Reported-by: Thomas Schmitt <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
hw/scsi-disk.c | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index e3690ec..673948c 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -1703,8 +1703,20 @@ static SCSIRequest *scsi_block_new_request(SCSIDevice
*d, uint32_t tag,
case WRITE_VERIFY_10:
case WRITE_VERIFY_12:
case WRITE_VERIFY_16:
- return scsi_req_alloc(&scsi_disk_reqops, &s->qdev, tag, lun,
- hba_private);
+ /* MMC writing cannot be done via pread/pwrite, because it sometimes
+ * involves writing beyond the maximum LBA or to negative LBA
(lead-in).
+ * And once you do these writes, reading from the block device is
+ * unreliable, too. It is even possible that reads deliver random data
+ * from the host page cache (this is probably a Linux bug).
+ *
+ * We might use scsi_disk_reqops as long as no writing commands are
+ * seen, but performance usually isn't paramount on optical media. So,
+ * just make scsi-block operate the same as scsi-generic for them.
+ */
+ if (s->qdev.type != TYPE_ROM) {
+ return scsi_req_alloc(&scsi_disk_reqops, &s->qdev, tag, lun,
+ hba_private);
+ }
}
return scsi_req_alloc(&scsi_generic_req_ops, &s->qdev, tag, lun,
--
1.7.7.1
- [Qemu-devel] [PATCH v3 00/38] block: generic copy-on-read, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 02/38] scsi: fix fw path, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 01/38] Documentation: Add section about iSCSI LUNS to qemu-doc, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 09/38] scsi-block: always use SG_IO for MMC devices,
Stefan Hajnoczi <=
- [Qemu-devel] [PATCH v3 07/38] scsi: remove block descriptors from CDs, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 05/38] scsi: update list of commands, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 04/38] atapi: kill MODE SENSE(6), fix MODE SENSE(10), Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 08/38] scsi: pass down REQUEST SENSE to the device when there is no stored sense, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 06/38] scsi: fix parsing of allocation length field, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 13/38] scsi-generic: add as boot device, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 12/38] scsi: fix fw path, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 10/38] virtio-blk: fix cross-endian config space, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 03/38] scsi-disk: guess geometry, Stefan Hajnoczi, 2011/11/23
- [Qemu-devel] [PATCH v3 11/38] usb-msd: do not register twice in the boot order, Stefan Hajnoczi, 2011/11/23