[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 02/25] qcow2: preserve free_byte_offset when qcow2_a
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 02/25] qcow2: preserve free_byte_offset when qcow2_alloc_bytes() fails |
Date: |
Mon, 9 Jul 2012 16:16:05 +0200 |
From: Stefan Hajnoczi <address@hidden>
When qcow2_alloc_clusters() error handling code was introduced in commit
5d757b563d59142ca81e1073a8e8396750a0ad1a, the value of free_byte_offset
was clobbered in the error case. This patch keeps free_byte_offset at 0
so we will try to allocate clusters again next time this function is
called.
Signed-off-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block/qcow2-refcount.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index 66f3915..5e3f915 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -627,10 +627,11 @@ int64_t qcow2_alloc_bytes(BlockDriverState *bs, int size)
BLKDBG_EVENT(bs->file, BLKDBG_CLUSTER_ALLOC_BYTES);
assert(size > 0 && size <= s->cluster_size);
if (s->free_byte_offset == 0) {
- s->free_byte_offset = qcow2_alloc_clusters(bs, s->cluster_size);
- if (s->free_byte_offset < 0) {
- return s->free_byte_offset;
+ offset = qcow2_alloc_clusters(bs, s->cluster_size);
+ if (offset < 0) {
+ return offset;
}
+ s->free_byte_offset = offset;
}
redo:
free_in_cluster = s->cluster_size -
--
1.7.6.5
- [Qemu-devel] [PULL 00/25] Block patches, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 04/25] sheepdog: fix dprintf format strings, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 05/25] sheepdog: restart I/O when socket becomes ready in do_co_req(), Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 03/25] blockdev: warn when copy_on_read=on and readonly=on, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 01/25] qcow2: fix #ifdef'd qcow2_check_refcounts() callers, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 07/25] sheepdog: make sure we don't free aiocb before sending all requests, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 12/25] blkdebug: pass getlength to underlying file, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 02/25] qcow2: preserve free_byte_offset when qcow2_alloc_bytes() fails,
Kevin Wolf <=
- [Qemu-devel] [PATCH 06/25] sheepdog: use coroutine based socket functions in coroutine context, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 08/25] sheepdog: split outstanding list into inflight and pending, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 09/25] sheepdog: traverse pending_list from the first for each time, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 14/25] blkdebug: optionally tie errors to a specific sector, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 10/25] blkdebug: remove sync i/o events, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 16/25] block: copy over job and dirty bitmap fields in bdrv_append, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 11/25] blkdebug: tiny cleanup, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 17/25] block: introduce bdrv_swap, implement bdrv_append on top of it, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 18/25] fdc: rewrite seek and DSKCHG bit handling, Kevin Wolf, 2012/07/09
- [Qemu-devel] [PATCH 20/25] fdc_test: update media_change test, Kevin Wolf, 2012/07/09