From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56844) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XDMZq-0006ts-1A for qemu-devel@nongnu.org; Fri, 01 Aug 2014 19:49:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XDMZj-0000gD-Sm for qemu-devel@nongnu.org; Fri, 01 Aug 2014 19:49:33 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48881) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XDMZj-0000g2-LD for qemu-devel@nongnu.org; Fri, 01 Aug 2014 19:49:27 -0400 From: Max Reitz Date: Sat, 2 Aug 2014 01:49:14 +0200 Message-Id: <1406936961-20356-1-git-send-email-mreitz@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v2 0/7] block/qcow2: Improve zero cluster expansion List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , =?UTF-8?q?Beno=C3=AEt=20Canet?= , Stefan Hajnoczi , Max Reitz The main purpose of this series is to add a progress report to qemu-img amend. This is achieved by adding a callback function to bdrv_amend_options() - the reasons for this choice are explained in patch 1. While adapting qcow2's expand_zero_clusters_in_l1() accordingly, I noticed a way to simplify it and get rid of the rather ugly bitmap used there (patch 6). This v2 is based on the "alt" (alternative) variant of v1 of this series. This series depends on v2 of my "qemu-img: Allow source cache mode specification" series. Changes from v1: - Patch 1: - Drop unnecessary -Wunused-parameter silencing statement (that warning is not enabled) [Beno=C3=AEt] - The BlockDriverAmendStatusCB function takes parameters of an arbitrary unit; document that [Beno=C3=AEt and Eric] - Patch 2: - Add documentation for the new parameter [Eric] - Drop unnecessary -Wunused-parameter silencing statement [Beno=C3=AEt= ] - Patch 3: Fixed commit message [Eric] - Patch 4: - Fixed comment [Eric] - As the BlockDriverAmendStatusCB function does no longer have to be called with byte values, cancel common factor out [Beno=C3=AEt] - Call the status CB after having passed an empty L1 entry as well - Patch 5: qcow2_get_refcount() may be called with any addend; remove the artificial restriction from the documenting comment - Patch 7: - Drop unnecessary L2 COW enforcing write [Beno=C3=AEt] - Since the status CB is now called after empty L1 entries, too, the progress output is more fine-grained (every L1 entry results in a progress increase) git-upstream-diff output against v1 alt: Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream pat= ch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respec= tively 001/7:[0005] [FC] 'block: Add status callback to bdrv_amend_options()' 002/7:[0007] [FC] 'qemu-img: Add progress output for amend' 003/7:[down] 'qemu-img: Fix insignificant memleak' ^^^^ false negative due to the fixed commit message (actually [----] [--]) 004/7:[0011] [FC] 'block/qcow2: Implement status CB for amend' 005/7:[0003] [FC] 'block/qcow2: Make get_refcount() global' 006/7:[----] [-C] 'block/qcow2: Simplify shared L2 handling in amend' 007/7:[0008] [FC] 'iotests: Expand test 061' Max Reitz (7): block: Add status callback to bdrv_amend_options() qemu-img: Add progress output for amend qemu-img: Fix insignificant memleak block/qcow2: Implement status CB for amend block/qcow2: Make get_refcount() global block/qcow2: Simplify shared L2 handling in amend iotests: Expand test 061 block.c | 5 +- block/qcow2-cluster.c | 115 ++++++++++++++++++++++-----------------= ------ block/qcow2-refcount.c | 26 +++++----- block/qcow2.c | 10 ++-- block/qcow2.h | 5 +- include/block/block.h | 8 +++- include/block/block_int.h | 3 +- qemu-img-cmds.hx | 4 +- qemu-img.c | 29 ++++++++++-- qemu-img.texi | 2 +- tests/qemu-iotests/061 | 25 ++++++++++ tests/qemu-iotests/061.out | 30 ++++++++++++ tests/qemu-iotests/group | 2 +- 13 files changed, 174 insertions(+), 90 deletions(-) --=20 2.0.3