From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: qemu-stable@nongnu.org
Subject: [Qemu-devel] [PATCH 31/37] qcow2: flush refcount cache correctly in alloc_refcount_block()
Date: Tue, 2 Apr 2013 16:45:36 -0500 [thread overview]
Message-ID: <1364939142-30066-32-git-send-email-mdroth@linux.vnet.ibm.com> (raw)
In-Reply-To: <1364939142-30066-1-git-send-email-mdroth@linux.vnet.ibm.com>
From: Stefan Hajnoczi <stefanha@redhat.com>
update_refcount() affects the refcount cache, it does not write to disk.
Therefore bdrv_flush(bs->file) does nothing. We need to flush the
refcount cache in order to write out the refcount updates!
While we're here also add error returns when qcow2_cache_flush() fails.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit 9991923b262dc35f6dd8393ab4853edd7fc3724f)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
block/qcow2-refcount.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index bc1784c..6a7a230 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -201,7 +201,10 @@ static int alloc_refcount_block(BlockDriverState *bs,
*refcount_block = NULL;
/* We write to the refcount table, so we might depend on L2 tables */
- qcow2_cache_flush(bs, s->l2_table_cache);
+ ret = qcow2_cache_flush(bs, s->l2_table_cache);
+ if (ret < 0) {
+ return ret;
+ }
/* Allocate the refcount block itself and mark it as used */
int64_t new_block = alloc_clusters_noref(bs, s->cluster_size);
@@ -237,7 +240,10 @@ static int alloc_refcount_block(BlockDriverState *bs,
goto fail_block;
}
- bdrv_flush(bs->file);
+ ret = qcow2_cache_flush(bs, s->refcount_block_cache);
+ if (ret < 0) {
+ goto fail_block;
+ }
/* Initialize the new refcount block only after updating its refcount,
* update_refcount uses the refcount cache itself */
--
1.7.9.5
next prev parent reply other threads:[~2013-04-02 21:52 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-02 21:45 [Qemu-devel] Patch Round-up for stable 1.4.1, freeze next Tuesday Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 01/37] target-ppc: Fix "G2leGP3" PVR Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 02/37] coroutine: trim down nesting level in perf_nesting test Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 03/37] block: complete all IOs before .bdrv_truncate Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 04/37] tap: forbid creating multiqueue tap when hub is used Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 05/37] qemu-char.c: fix waiting for telnet connection message Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 06/37] net: reduce the unnecessary memory allocation of multiqueue Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 07/37] help: add docs for multiqueue tap options Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 08/37] vga: fix byteswapping Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 09/37] qmp: netdev_add is like -netdev, not -net, fix documentation Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 10/37] qemu-ga: make guest-sync-delimited available during fsfreeze Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 11/37] scsi-disk: handle io_canceled uniformly and correctly Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 12/37] iscsi: look for pkg-config file too Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 13/37] scsi: do not call scsi_read_data/scsi_write_data for a canceled request Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 14/37] scsi-disk: do not complete canceled UNMAP requests Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 15/37] rtc-test: Fix test failures with recent glib Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 16/37] Allow virtio-net features for legacy s390 virtio bus Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 17/37] pseries: Add compatible property to root of device tree Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 18/37] qcow2: make is_allocated return true for zero clusters Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 19/37] qemu-ga: use key-value store to avoid recycling fd handles after restart Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 20/37] qga/main.c: Don't use g_key_file_get/set_int64 Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 21/37] tcg: Fix occasional TCG broken problem when ldst optimization enabled Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 22/37] virtio-ccw: Queue sanity check for notify hypercall Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 23/37] qemu-bridge-helper: force usage of a very high MAC address for the bridge Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 24/37] configure: Require at least spice-protocol-0.12.3 Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 25/37] pseries: Add cleanup hook for PAPR virtual LAN device Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 26/37] target-ppc: Fix CPU_POWERPC_MPC8547E Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 27/37] ide/macio: Fix macio DMA initialisation Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 28/37] virtio-blk: fix unplug + virsh reboot Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 29/37] Fix page_cache leak in cache_resize Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 30/37] page_cache: fix memory leak Michael Roth
2013-04-02 21:45 ` Michael Roth [this message]
2013-04-02 21:45 ` [Qemu-devel] [PATCH 32/37] qcow2: flush refcount cache correctly in qcow2_write_snapshots() Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 33/37] linux-user/syscall.c: handle FUTEX_WAIT_BITSET in do_futex Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 34/37] linux-user: fix futex strace of FUTEX_CLOCK_REALTIME Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 35/37] linux-user: make bogus negative iovec lengths fail EINVAL Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 36/37] linux-user/syscall.c: Don't warn about unimplemented get_robust_list Michael Roth
2013-04-02 21:45 ` [Qemu-devel] [PATCH 37/37] update seabios to 1.7.2.1 Michael Roth
2013-04-02 22:04 ` [Qemu-devel] Patch Round-up for stable 1.4.1, freeze next Tuesday Eric Blake
2013-04-03 10:50 ` [Qemu-devel] [Qemu-stable] " Michael Tokarev
2013-04-03 12:13 ` Hans de Goede
2013-04-04 8:04 ` Tiziano Müller
2013-04-08 17:36 ` Serge Hallyn
2013-04-03 21:51 ` [Qemu-devel] " Aurelien Jarno
2013-04-04 22:24 ` mdroth
2013-04-08 22:58 ` Aurelien Jarno
2013-04-03 22:02 ` [Qemu-devel] [Qemu-stable] " Bruce Rogers
2013-04-04 1:24 ` [Qemu-devel] " Cole Robinson
2013-04-04 5:55 ` Peter Lieven
2013-04-05 0:50 ` mdroth
2013-04-04 12:06 ` Paolo Bonzini
2013-04-05 15:06 ` mdroth
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=1364939142-30066-32-git-send-email-mdroth@linux.vnet.ibm.com \
--to=mdroth@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@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 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).