* [Qemu-devel] [PATCH 1/2] block/vdi: Don't ignore immediate read/write failures
@ 2011-02-19 21:18 Stefan Weil
2011-02-19 21:18 ` [Qemu-devel] [PATCH 2/2] block/qcow: Don't ignore immediate read/write and other failures Stefan Weil
2011-02-21 11:31 ` [Qemu-devel] [PATCH 1/2] block/vdi: Don't ignore immediate read/write failures Kevin Wolf
0 siblings, 2 replies; 3+ messages in thread
From: Stefan Weil @ 2011-02-19 21:18 UTC (permalink / raw)
To: qemu-devel; +Cc: Kevin Wolf
This patch is similar to 171e3d6b9997c98a97d0c525867f7cd9b640cadd
which fixed qcow2:
Returning -EIO is far from optimal, but at least it's an error code.
Cc: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
block/vdi.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/block/vdi.c b/block/vdi.c
index 083266e..701745b 100644
--- a/block/vdi.c
+++ b/block/vdi.c
@@ -610,6 +610,7 @@ static void vdi_aio_read_cb(void *opaque, int ret)
acb->hd_aiocb = bdrv_aio_readv(bs->file, offset, &acb->hd_qiov,
n_sectors, vdi_aio_read_cb, acb);
if (acb->hd_aiocb == NULL) {
+ ret = -EIO;
goto done;
}
}
@@ -673,6 +674,7 @@ static void vdi_aio_write_cb(void *opaque, int ret)
acb->hd_aiocb = bdrv_aio_writev(bs->file, 0, &acb->hd_qiov, 1,
vdi_aio_write_cb, acb);
if (acb->hd_aiocb == NULL) {
+ ret = -EIO;
goto done;
}
return;
@@ -702,6 +704,7 @@ static void vdi_aio_write_cb(void *opaque, int ret)
acb->hd_aiocb = bdrv_aio_writev(bs->file, offset, &acb->hd_qiov,
n_sectors, vdi_aio_write_cb, acb);
if (acb->hd_aiocb == NULL) {
+ ret = -EIO;
goto done;
}
return;
@@ -752,6 +755,7 @@ static void vdi_aio_write_cb(void *opaque, int ret)
&acb->hd_qiov, s->block_sectors,
vdi_aio_write_cb, acb);
if (acb->hd_aiocb == NULL) {
+ ret = -EIO;
goto done;
}
} else {
@@ -764,6 +768,7 @@ static void vdi_aio_write_cb(void *opaque, int ret)
acb->hd_aiocb = bdrv_aio_writev(bs->file, offset, &acb->hd_qiov,
n_sectors, vdi_aio_write_cb, acb);
if (acb->hd_aiocb == NULL) {
+ ret = -EIO;
goto done;
}
}
--
1.7.2.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH 2/2] block/qcow: Don't ignore immediate read/write and other failures
2011-02-19 21:18 [Qemu-devel] [PATCH 1/2] block/vdi: Don't ignore immediate read/write failures Stefan Weil
@ 2011-02-19 21:18 ` Stefan Weil
2011-02-21 11:31 ` [Qemu-devel] [PATCH 1/2] block/vdi: Don't ignore immediate read/write failures Kevin Wolf
1 sibling, 0 replies; 3+ messages in thread
From: Stefan Weil @ 2011-02-19 21:18 UTC (permalink / raw)
To: qemu-devel; +Cc: Kevin Wolf
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>
---
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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] block/vdi: Don't ignore immediate read/write failures
2011-02-19 21:18 [Qemu-devel] [PATCH 1/2] block/vdi: Don't ignore immediate read/write failures Stefan Weil
2011-02-19 21:18 ` [Qemu-devel] [PATCH 2/2] block/qcow: Don't ignore immediate read/write and other failures Stefan Weil
@ 2011-02-21 11:31 ` Kevin Wolf
1 sibling, 0 replies; 3+ messages in thread
From: Kevin Wolf @ 2011-02-21 11:31 UTC (permalink / raw)
To: Stefan Weil; +Cc: qemu-devel
Am 19.02.2011 22:18, schrieb Stefan Weil:
> This patch is similar to 171e3d6b9997c98a97d0c525867f7cd9b640cadd
> which fixed qcow2:
>
> Returning -EIO is far from optimal, but at least it's an error code.
>
> Cc: Kevin Wolf <kwolf@redhat.com>
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Thanks, applied both to the block branch.
Kevin
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-02-21 11:30 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-19 21:18 [Qemu-devel] [PATCH 1/2] block/vdi: Don't ignore immediate read/write failures Stefan Weil
2011-02-19 21:18 ` [Qemu-devel] [PATCH 2/2] block/qcow: Don't ignore immediate read/write and other failures Stefan Weil
2011-02-21 11:31 ` [Qemu-devel] [PATCH 1/2] block/vdi: Don't ignore immediate read/write failures Kevin Wolf
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.