[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v14 00/14] qemu-img: Implement commit like QMP
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH v14 00/14] qemu-img: Implement commit like QMP |
Date: |
Wed, 29 Oct 2014 10:25:01 +0000 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Fri, Oct 24, 2014 at 03:57:29PM +0200, Max Reitz wrote:
> qemu-img should use QMP commands whenever possible in order to ensure
> feature completeness of both online and offline image operations. For
> the "commit" command, this is relatively easy, so implement it first
> (in the hope that indeed others will follow).
>
> As qemu-img does not have access to QMP (due to QMP being intertwined
> with basically everything in qemu), we cannot directly use QMP, but at
> least use the functions the corresponding QMP commands are using (which
> would be "block-commit", in this case).
>
>
> v14:
> - Patch 3:
> - Pull the optimized code out into an own function [Kevin]
> - Only run the optimized code if the image header, the reftable, a
> single refblock and the L1 table can be described by that single
> refblock [Kevin]
> - Zero out the L1 table before modifying anything else [Kevin]
> - Always set bs->drv to NULL if an error occured which broke the
> in-memory refcount information and thus rendered the BDS unusable
> (because all of the qcow2 code assumes that the in-memory
> information is correct, obviously) [Kevin]
> - Do truncation last, because while it is the eventual goal, it is
> also the structurally least invasive and therefore least important
> operation (we don't want it to fail and leave the BDS unusable)
> [Kevin]
> - Patch 6: In the meantime, two more places which test data/len have
> crept in, remove them [Kevin]
> - Patch 8:
> - Drop the block_job_resume() call [Kevin, although he'd probably
> prefer not to be mentioned for this]
> - Improve error message when there is no backing file [Kevin]
> - Patch 10: Rebase onto patch 8 (dropped block_job_resume())
> - Patch 11:
> - Rebase onto patch 8 (different error message if the base image has
> not been explicitly specified)
> - Explanation about what "For reasons of consistency" means (or at
> least an example of inconsistency) [Kevin]
> - Patch 14:
> - Write some data to the top image so it can be leaked
> - Swap order of l1_update and empty_image_prepare (l1_update now
> occurs before empty_image_prepare; the second l1_update occurs at
> the same time as the reftable_update, so it's safe to omit that one)
> - Output changed accordingly
>
>
> git-backport-diff against v13:
>
> Key:
> [----] : patches are identical
> [####] : number of functional differences between upstream/downstream patch
> [down] : patch is downstream-only
> The flags [FC] indicate (F)unctional and (C)ontextual differences,
> respectively
>
> 001/14:[----] [--] 'qcow2: Allow "full" discard'
> 002/14:[----] [--] 'qcow2: Implement bdrv_make_empty()'
> 003/14:[0306] [FC] 'qcow2: Optimize bdrv_make_empty()'
> 004/14:[----] [--] 'blockjob: Introduce block_job_complete_sync()'
> 005/14:[----] [--] 'blockjob: Add "ready" field'
> 006/14:[0002] [FC] 'iotests: Omit length/offset test in 040 and 041'
> 007/14:[----] [--] 'block/mirror: Improve progress report'
> 008/14:[0009] [FC] 'qemu-img: Implement commit like QMP'
> 009/14:[----] [--] 'qemu-img: Empty image after commit'
> 010/14:[0001] [FC] 'qemu-img: Enable progress output for commit'
> 011/14:[0019] [FC] 'qemu-img: Specify backing file for commit'
> 012/14:[----] [--] 'iotests: Add _filter_qemu_img_map'
> 013/14:[----] [--] 'iotests: Add test for backing-chain commits'
> 014/14:[0026] [FC] 'iotests: Add test for qcow2's bdrv_make_empty'
>
>
> Max Reitz (14):
> qcow2: Allow "full" discard
> qcow2: Implement bdrv_make_empty()
> qcow2: Optimize bdrv_make_empty()
> blockjob: Introduce block_job_complete_sync()
> blockjob: Add "ready" field
> iotests: Omit length/offset test in 040 and 041
> block/mirror: Improve progress report
> qemu-img: Implement commit like QMP
> qemu-img: Empty image after commit
> qemu-img: Enable progress output for commit
> qemu-img: Specify backing file for commit
> iotests: Add _filter_qemu_img_map
> iotests: Add test for backing-chain commits
> iotests: Add test for qcow2's bdrv_make_empty
>
> block/Makefile.objs | 3 +-
> block/blkdebug.c | 2 +
> block/mirror.c | 34 ++++---
> block/qcow2-cluster.c | 27 ++++--
> block/qcow2-snapshot.c | 2 +-
> block/qcow2.c | 192
> ++++++++++++++++++++++++++++++++++++++-
> block/qcow2.h | 2 +-
> blockjob.c | 42 +++++++--
> include/block/block.h | 2 +
> include/block/blockjob.h | 20 ++++
> qapi/block-core.json | 4 +-
> qemu-img-cmds.hx | 4 +-
> qemu-img.c | 147 +++++++++++++++++++++++++-----
> qemu-img.texi | 16 +++-
> tests/qemu-iotests/040 | 4 +-
> tests/qemu-iotests/041 | 5 +-
> tests/qemu-iotests/097 | 122 +++++++++++++++++++++++++
> tests/qemu-iotests/097.out | 119 ++++++++++++++++++++++++
> tests/qemu-iotests/098 | 82 +++++++++++++++++
> tests/qemu-iotests/098.out | 52 +++++++++++
> tests/qemu-iotests/common.filter | 7 ++
> tests/qemu-iotests/group | 2 +
> tests/qemu-iotests/iotests.py | 3 +-
> 23 files changed, 823 insertions(+), 70 deletions(-)
> create mode 100755 tests/qemu-iotests/097
> create mode 100644 tests/qemu-iotests/097.out
> create mode 100755 tests/qemu-iotests/098
> create mode 100644 tests/qemu-iotests/098.out
>
> --
> 1.9.3
>
>
Thanks, applied to my block tree:
https://github.com/stefanha/qemu/commits/block
Stefan
pgpkeAUXRAPVX.pgp
Description: PGP signature