From: Kevin Wolf <kwolf@redhat.com>
To: anthony@codemonkey.ws
Cc: kwolf@redhat.com, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 2/9] block/qcow: Don't ignore immediate read/write and other failures
Date: Wed, 16 Mar 2011 11:47:54 +0100 [thread overview]
Message-ID: <1300272481-8744-3-git-send-email-kwolf@redhat.com> (raw)
In-Reply-To: <1300272481-8744-1-git-send-email-kwolf@redhat.com>
From: Stefan Weil <weil@mail.berlios.de>
This patch is similar to 171e3d6b9997c98a97d0c525867f7cd9b640cadd
which fixed qcow2:
Returning -EIO is far from optimal, but at least it's an error code.
In addition to read/write failures, -EIO is also returned when
decompress_cluster failed.
Cc: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
block/qcow.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/block/qcow.c b/block/qcow.c
index f67d3d3..a26c886 100644
--- a/block/qcow.c
+++ b/block/qcow.c
@@ -589,8 +589,10 @@ static void qcow_aio_read_cb(void *opaque, int ret)
qemu_iovec_init_external(&acb->hd_qiov, &acb->hd_iov, 1);
acb->hd_aiocb = bdrv_aio_readv(bs->backing_hd, acb->sector_num,
&acb->hd_qiov, acb->n, qcow_aio_read_cb, acb);
- if (acb->hd_aiocb == NULL)
+ if (acb->hd_aiocb == NULL) {
+ ret = -EIO;
goto done;
+ }
} else {
/* Note: in this case, no need to wait */
memset(acb->buf, 0, 512 * acb->n);
@@ -598,8 +600,10 @@ static void qcow_aio_read_cb(void *opaque, int ret)
}
} else if (acb->cluster_offset & QCOW_OFLAG_COMPRESSED) {
/* add AIO support for compressed blocks ? */
- if (decompress_cluster(bs, acb->cluster_offset) < 0)
+ if (decompress_cluster(bs, acb->cluster_offset) < 0) {
+ ret = -EIO;
goto done;
+ }
memcpy(acb->buf,
s->cluster_cache + index_in_cluster * 512, 512 * acb->n);
goto redo;
@@ -614,8 +618,10 @@ static void qcow_aio_read_cb(void *opaque, int ret)
acb->hd_aiocb = bdrv_aio_readv(bs->file,
(acb->cluster_offset >> 9) + index_in_cluster,
&acb->hd_qiov, acb->n, qcow_aio_read_cb, acb);
- if (acb->hd_aiocb == NULL)
+ if (acb->hd_aiocb == NULL) {
+ ret = -EIO;
goto done;
+ }
}
return;
@@ -700,8 +706,10 @@ static void qcow_aio_write_cb(void *opaque, int ret)
(cluster_offset >> 9) + index_in_cluster,
&acb->hd_qiov, acb->n,
qcow_aio_write_cb, acb);
- if (acb->hd_aiocb == NULL)
+ if (acb->hd_aiocb == NULL) {
+ ret = -EIO;
goto done;
+ }
return;
done:
--
1.7.2.3
next prev parent reply other threads:[~2011-03-16 10:46 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-16 10:47 [Qemu-devel] [PULL 0/9] Block patches Kevin Wolf
2011-03-16 10:47 ` [Qemu-devel] [PATCH 1/9] block/vdi: Don't ignore immediate read/write failures Kevin Wolf
2011-03-16 10:47 ` Kevin Wolf [this message]
2011-03-16 10:47 ` [Qemu-devel] [PATCH 3/9] Add error message for loading snapshot without VM state Kevin Wolf
2011-03-16 10:47 ` [Qemu-devel] [PATCH 4/9] tools: Use real async.c instead of stubs Kevin Wolf
2011-03-16 10:47 ` [Qemu-devel] [PATCH 5/9] Don't allow multiwrites against a block device without underlying medium Kevin Wolf
2011-03-16 10:47 ` [Qemu-devel] [PATCH 6/9] Fix ATA SMART and CHECK POWER MODE Kevin Wolf
2011-03-16 10:47 ` [Qemu-devel] [PATCH 7/9] Improve error handling in do_snapshot_blkdev() Kevin Wolf
2011-03-16 10:48 ` [Qemu-devel] [PATCH 8/9] hw/xen_disk: aio_inflight not released in handling ioreq when nr_segments==0 Kevin Wolf
2011-03-16 10:48 ` [Qemu-devel] [PATCH 9/9] Add qcow2 documentation Kevin Wolf
2011-03-21 13:31 ` [Qemu-devel] Re: [PULL 0/9] Block patches Kevin Wolf
2011-03-21 20:43 ` Aurelien Jarno
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1300272481-8744-3-git-send-email-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.