[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [STABLE][PATCH 14/14] block: Handle multiwrite errors only
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [STABLE][PATCH 14/14] block: Handle multiwrite errors only when all requests have completed |
Date: |
Wed, 14 Jul 2010 13:24:13 +0200 |
Don't try to be clever by freeing all temporary data and calling all callbacks
when the return value (an error) is certain. Doing so has at least two
important problems:
* The temporary data that is freed (qiov, possibly zero buffer) is still used
by the requests that have not yet completed.
* Calling the callbacks for all requests in the multiwrite means for the caller
that it may free buffers etc. which are still in use.
Just remember the error value and do the cleanup when all requests have
completed.
Signed-off-by: Kevin Wolf <address@hidden>
(cherry picked from commit de189a1b4a471d37a2909e97646654fc9751b52f)
---
block.c | 5 +----
1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/block.c b/block.c
index 80f2fae..1694780 100644
--- a/block.c
+++ b/block.c
@@ -1661,14 +1661,11 @@ static void multiwrite_cb(void *opaque, int ret)
if (ret < 0 && !mcb->error) {
mcb->error = ret;
- multiwrite_user_cb(mcb);
}
mcb->num_requests--;
if (mcb->num_requests == 0) {
- if (mcb->error == 0) {
- multiwrite_user_cb(mcb);
- }
+ multiwrite_user_cb(mcb);
qemu_free(mcb);
}
}
--
1.7.1.1
- [Qemu-devel] [STABLE][PATCH 03/14] vmdk: Fix COW, (continued)
- [Qemu-devel] [STABLE][PATCH 03/14] vmdk: Fix COW, Kevin Wolf, 2010/07/14
- [Qemu-devel] [STABLE][PATCH 02/14] qcow2: Fix creation of large images, Kevin Wolf, 2010/07/14
- [Qemu-devel] [STABLE][PATCH 05/14] block/vpc: Fix conversion from size to disk geometry, Kevin Wolf, 2010/07/14
- [Qemu-devel] [STABLE][PATCH 06/14] block/vdi: Fix image opening and creation for odd disk sizes, Kevin Wolf, 2010/07/14
- [Qemu-devel] [STABLE][PATCH 07/14] qcow2: Restore L1 entry on l2_allocate failure, Kevin Wolf, 2010/07/14
- [Qemu-devel] [STABLE][PATCH 09/14] qcow: Use bdrv_(p)write_sync for metadata writes, Kevin Wolf, 2010/07/14
- [Qemu-devel] [STABLE][PATCH 08/14] block: Add bdrv_(p)write_sync, Kevin Wolf, 2010/07/14
- [Qemu-devel] [STABLE][PATCH 11/14] vmdk: Use bdrv_(p)write_sync for metadata writes, Kevin Wolf, 2010/07/14
- [Qemu-devel] [STABLE][PATCH 10/14] qcow2: Use bdrv_(p)write_sync for metadata writes, Kevin Wolf, 2010/07/14
- [Qemu-devel] [STABLE][PATCH 13/14] block: Fix early failure in multiwrite, Kevin Wolf, 2010/07/14
- [Qemu-devel] [STABLE][PATCH 14/14] block: Handle multiwrite errors only when all requests have completed,
Kevin Wolf <=
- [Qemu-devel] [STABLE][PATCH 12/14] vpc: Use bdrv_(p)write_sync for metadata writes, Kevin Wolf, 2010/07/14
- Re: [Qemu-devel] [STABLE][PULL 00/14] Block patches for 0.12.5, Aurelien Jarno, 2010/07/14