qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] Consider werror/rerror on immediate bdrv_aio_* failure
@ 2010-10-27 11:20 Kevin Wolf
  2010-10-27 11:20 ` [Qemu-devel] [PATCH 1/3] ide: Handle immediate bdrv_aio_flush failure Kevin Wolf
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Kevin Wolf @ 2010-10-27 11:20 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf

There are still paths where werror/rerror is ignored and an error is directly
communicated to the guest. This series fixes some of them.

Kevin Wolf (3):
  ide: Handle immediate bdrv_aio_flush failure
  virtio-blk: Handle immediate flush failure properly
  scsi-disk: Fix immediate failure of bdrv_aio_*

 hw/ide/core.c   |   12 +++++++++---
 hw/scsi-disk.c  |   11 ++++++-----
 hw/virtio-blk.c |    2 +-
 3 files changed, 16 insertions(+), 9 deletions(-)

-- 
1.7.2.3

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH 1/3] ide: Handle immediate bdrv_aio_flush failure
  2010-10-27 11:20 [Qemu-devel] [PATCH 0/3] Consider werror/rerror on immediate bdrv_aio_* failure Kevin Wolf
@ 2010-10-27 11:20 ` Kevin Wolf
  2010-10-27 11:20 ` [Qemu-devel] [PATCH 2/3] virtio-blk: Handle immediate flush failure properly Kevin Wolf
  2010-10-27 11:20 ` [Qemu-devel] [PATCH 3/3] scsi-disk: Fix immediate failure of bdrv_aio_* Kevin Wolf
  2 siblings, 0 replies; 4+ messages in thread
From: Kevin Wolf @ 2010-10-27 11:20 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf

If bdrv_aio_flush returns NULL, this should be treated as an error.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 hw/ide/core.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/hw/ide/core.c b/hw/ide/core.c
index bc3e916..484e0ca 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -811,10 +811,16 @@ static void ide_flush_cb(void *opaque, int ret)
 
 static void ide_flush_cache(IDEState *s)
 {
-    if (s->bs) {
-        bdrv_aio_flush(s->bs, ide_flush_cb, s);
-    } else {
+    BlockDriverAIOCB *acb;
+
+    if (s->bs == NULL) {
         ide_flush_cb(s, 0);
+        return;
+    }
+
+    acb = bdrv_aio_flush(s->bs, ide_flush_cb, s);
+    if (acb == NULL) {
+        ide_flush_cb(s, -EIO);
     }
 }
 
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH 2/3] virtio-blk: Handle immediate flush failure properly
  2010-10-27 11:20 [Qemu-devel] [PATCH 0/3] Consider werror/rerror on immediate bdrv_aio_* failure Kevin Wolf
  2010-10-27 11:20 ` [Qemu-devel] [PATCH 1/3] ide: Handle immediate bdrv_aio_flush failure Kevin Wolf
@ 2010-10-27 11:20 ` Kevin Wolf
  2010-10-27 11:20 ` [Qemu-devel] [PATCH 3/3] scsi-disk: Fix immediate failure of bdrv_aio_* Kevin Wolf
  2 siblings, 0 replies; 4+ messages in thread
From: Kevin Wolf @ 2010-10-27 11:20 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf

Fix virtio-blk to use the usual completion path that involves werror handling
instead of directly completing the request in cases where bdrv_aio_flush
returns NULL.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 hw/virtio-blk.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
index dbe2070..49528a9 100644
--- a/hw/virtio-blk.c
+++ b/hw/virtio-blk.c
@@ -273,7 +273,7 @@ static void virtio_blk_handle_flush(VirtIOBlockReq *req, MultiReqBuffer *mrb)
 
     acb = bdrv_aio_flush(req->dev->bs, virtio_blk_flush_complete, req);
     if (!acb) {
-        virtio_blk_req_complete(req, VIRTIO_BLK_S_IOERR);
+        virtio_blk_flush_complete(req, -EIO);
     }
 }
 
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH 3/3] scsi-disk: Fix immediate failure of bdrv_aio_*
  2010-10-27 11:20 [Qemu-devel] [PATCH 0/3] Consider werror/rerror on immediate bdrv_aio_* failure Kevin Wolf
  2010-10-27 11:20 ` [Qemu-devel] [PATCH 1/3] ide: Handle immediate bdrv_aio_flush failure Kevin Wolf
  2010-10-27 11:20 ` [Qemu-devel] [PATCH 2/3] virtio-blk: Handle immediate flush failure properly Kevin Wolf
@ 2010-10-27 11:20 ` Kevin Wolf
  2 siblings, 0 replies; 4+ messages in thread
From: Kevin Wolf @ 2010-10-27 11:20 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf

Fix scsi-disk to use the usual completion paths that involve rerror/werror
handling instead of directly completing the requests in cases where
bdrv_aio_readv/writev returns NULL.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 hw/scsi-disk.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index a1976ea..18b4d1a 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -178,8 +178,9 @@ static void scsi_read_request(SCSIDiskReq *r)
     qemu_iovec_init_external(&r->qiov, &r->iov, 1);
     r->req.aiocb = bdrv_aio_readv(s->bs, r->sector, &r->qiov, n,
                               scsi_read_complete, r);
-    if (r->req.aiocb == NULL)
-        scsi_command_complete(r, CHECK_CONDITION, HARDWARE_ERROR);
+    if (r->req.aiocb == NULL) {
+        scsi_read_complete(r, -EIO);
+    }
 }
 
 /* Read more data from scsi device into buffer.  */
@@ -274,9 +275,9 @@ static void scsi_write_request(SCSIDiskReq *r)
         qemu_iovec_init_external(&r->qiov, &r->iov, 1);
         r->req.aiocb = bdrv_aio_writev(s->bs, r->sector, &r->qiov, n,
                                    scsi_write_complete, r);
-        if (r->req.aiocb == NULL)
-            scsi_command_complete(r, CHECK_CONDITION,
-                                  HARDWARE_ERROR);
+        if (r->req.aiocb == NULL) {
+            scsi_write_complete(r, -EIO);
+        }
     } else {
         /* Invoke completion routine to fetch data from host.  */
         scsi_write_complete(r, 0);
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-10-27 11:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-27 11:20 [Qemu-devel] [PATCH 0/3] Consider werror/rerror on immediate bdrv_aio_* failure Kevin Wolf
2010-10-27 11:20 ` [Qemu-devel] [PATCH 1/3] ide: Handle immediate bdrv_aio_flush failure Kevin Wolf
2010-10-27 11:20 ` [Qemu-devel] [PATCH 2/3] virtio-blk: Handle immediate flush failure properly Kevin Wolf
2010-10-27 11:20 ` [Qemu-devel] [PATCH 3/3] scsi-disk: Fix immediate failure of bdrv_aio_* Kevin Wolf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).