|
From: | Vladimir Sementsov-Ogievskiy |
Subject: | Re: [PATCH v4 21/30] qcow2: Add subcluster support to check_refcounts_l2() |
Date: | Wed, 22 Apr 2020 15:06:56 +0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 |
17.03.2020 21:16, Alberto Garcia wrote:
Setting the QCOW_OFLAG_ZERO bit of the L2 entry is forbidden if an image has subclusters. Instead, the individual 'all zeroes' bits must be used. Signed-off-by: Alberto Garcia <address@hidden> Reviewed-by: Max Reitz <address@hidden>
Patch itself seems correct.. Still, would be good also to check, is QCOW_OFLAG_ZERO set in subclustres case and add corresponding corruptions++, and may be even fix (by using QCOW_L2_BITMAP_ALL_ZEROES instead) Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
--- block/qcow2-refcount.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 3b89a97fd0..9337496c84 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -1686,8 +1686,13 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res, int ign = active ? QCOW2_OL_ACTIVE_L2 : QCOW2_OL_INACTIVE_L2;- l2_entry = QCOW_OFLAG_ZERO;- set_l2_entry(s, l2_table, i, l2_entry); + if (has_subclusters(s)) { + set_l2_entry(s, l2_table, i, 0); + set_l2_bitmap(s, l2_table, i, + QCOW_L2_BITMAP_ALL_ZEROES); + } else { + set_l2_entry(s, l2_table, i, QCOW_OFLAG_ZERO); + } ret = qcow2_pre_write_overlap_check(bs, ign, l2e_offset, l2_entry_size(s), false); if (ret < 0) {
-- Best regards, Vladimir
[Prev in Thread] | Current Thread | [Next in Thread] |