From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: qemu-stable@nongnu.org
Subject: [Qemu-devel] [PATCH 18/37] qcow2: make is_allocated return true for zero clusters
Date: Tue, 2 Apr 2013 16:45:23 -0500 [thread overview]
Message-ID: <1364939142-30066-19-git-send-email-mdroth@linux.vnet.ibm.com> (raw)
In-Reply-To: <1364939142-30066-1-git-send-email-mdroth@linux.vnet.ibm.com>
From: Paolo Bonzini <pbonzini@redhat.com>
Otherwise, live migration of the top layer will miss zero clusters and
let the backing file show through. This also matches what is done in qed.
QCOW2_CLUSTER_ZERO clusters are invalid in v2 image files. Check this
directly in qcow2_get_cluster_offset instead of replicating the test
everywhere.
Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
(cherry picked from commit 381b487d54ba18c73df9db8452028a330058c505)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
block/qcow2-cluster.c | 3 +++
block/qcow2.c | 6 +-----
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index 56fccf9..bb04432 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -454,6 +454,9 @@ int qcow2_get_cluster_offset(BlockDriverState *bs, uint64_t offset,
*cluster_offset &= L2E_COMPRESSED_OFFSET_SIZE_MASK;
break;
case QCOW2_CLUSTER_ZERO:
+ if (s->qcow_version < 3) {
+ return -EIO;
+ }
c = count_contiguous_clusters(nb_clusters, s->cluster_size,
&l2_table[l2_index], 0,
QCOW_OFLAG_COMPRESSED | QCOW_OFLAG_ZERO);
diff --git a/block/qcow2.c b/block/qcow2.c
index 7610e56..b4c7c54 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -584,7 +584,7 @@ static int coroutine_fn qcow2_co_is_allocated(BlockDriverState *bs,
*pnum = 0;
}
- return (cluster_offset != 0);
+ return (cluster_offset != 0) || (ret == QCOW2_CLUSTER_ZERO);
}
/* handle reading after the end of the backing file */
@@ -665,10 +665,6 @@ static coroutine_fn int qcow2_co_readv(BlockDriverState *bs, int64_t sector_num,
break;
case QCOW2_CLUSTER_ZERO:
- if (s->qcow_version < 3) {
- ret = -EIO;
- goto fail;
- }
qemu_iovec_memset(&hd_qiov, 0, 0, 512 * cur_nr_sectors);
break;
--
1.7.9.5
next prev parent reply other threads:[~2013-04-02 21:51 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 ` Michael Roth [this message]
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 ` [Qemu-devel] [PATCH 31/37] qcow2: flush refcount cache correctly in alloc_refcount_block() Michael Roth
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-19-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).