[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [patch 2/3] scsi-disk aio_flush
From: |
Marcelo Tosatti |
Subject: |
[Qemu-devel] [patch 2/3] scsi-disk aio_flush |
Date: |
Wed, 02 Apr 2008 15:16:01 -0300 |
User-agent: |
quilt/0.46-1 |
On top of Ian's bdrv_flush error / bdrv_aio_patches.
This is similar to his recent patch, but uses the new scsi_command_complete()
arguments.
Index: kvm-userspace.io/qemu/hw/scsi-disk.c
===================================================================
--- kvm-userspace.io.orig/qemu/hw/scsi-disk.c
+++ kvm-userspace.io/qemu/hw/scsi-disk.c
@@ -273,6 +273,16 @@ static int scsi_write_data(SCSIDevice *d
return 0;
}
+static void scsi_flush_complete(void *opaque, int ret)
+{
+ SCSIRequest *r = (SCSIRequest *)opaque;
+
+ if (ret)
+ scsi_command_complete(r, SCSI_CHECK_COND, SENSE_HARDWARE_ERROR);
+ else
+ scsi_command_complete(r, SCSI_OK, SENSE_NO_SENSE);
+}
+
/* Return a pointer to the data buffer. */
static uint8_t *scsi_get_buf(SCSIDevice *d, uint32_t tag)
{
@@ -632,13 +642,8 @@ static int32_t scsi_send_command(SCSIDev
break;
case 0x35:
DPRINTF("Syncronise cache (sector %d, count %d)\n", lba, len);
- ret = bdrv_flush(s->bdrv);
- if (ret) {
- DPRINTF("IO error on bdrv_flush\n");
- scsi_command_complete(r, SCSI_CHECK_COND, SENSE_HARDWARE_ERROR);
- return 0;
- }
- break;
+ bdrv_aio_flush(s->bdrv, scsi_flush_complete, r);
+ return 0;
case 0x43:
{
int start_track, format, msf, toclen;
--