[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCHv7 00/17] block: logical block provisioning enhan
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCHv7 00/17] block: logical block provisioning enhancements |
Date: |
Thu, 24 Oct 2013 15:20:21 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130923 Thunderbird/17.0.9 |
Il 24/10/2013 11:06, Peter Lieven ha scritto:
> this patch adds the ability for targets to stay sparse during
> block migration (if the zero_blocks capability is set) and qemu-img convert
> even if the target does not have has_zero_init = 1.
>
> the series was especially developed for iSCSI, but it should also work
> with other drivers with little or no adjustments. these adjustments
> should be limited to providing block provisioning information through
> get_block_info and/or honouring BDRV_REQ_MAY_UNMAP on writing zeroes.
>
> v6->v7:
> - switched position of "iscsi: set limits in BlockDriverState" and
> "iscsi: simplify iscsi_co_discard". (Paolo)
> - fixed commit message of
> "block/get_block_status: fix BDRV_BLOCK_ZERO for unallocated blocks".
> (Paolo)
> - moved "block/raw: copy BlockLimits on raw_open" right after
> "block: add BlockLimits structure to BlockDriverState". (Paolo)
> - Reworded desciption for -S 0 in
> "qemu-img: add support for fully allocated images" as suggested
> by Paolo.
> - Reworded commit message of:
> "qemu-img: conditionally zero out target on convert".
> regarding iscsi (Paolo)
>
> v5->v6:
> - protected iscsi_co_write_zeroes by the existence of the
> SCSI_SENSE_ASCQ_CAPACITY_DATA_HAS_CHANGED macro. This is ugly
> but necessary because the semantic of iscsi_writesame16_task
> silently changed between libiscsi 1.8.0 and 1.9.0. The above
> macro was the first added after the change. I already contacted
> Ronnie to introduce an API version macro which has to be bumped
> on each new function that will be added. Changes to the parameters
> should not happen at all of course.
>
> v4->v5:
> - new patches 4-6 to move the block provisioning information
> to the BlockDriverInfo.
> - kept 2 wrappers to read the information from the BDI and
> renamed them to make more clear what they do:
>
> bdrv_has_discard_zeroes -> bdrv_unallocated_blocks_are_zero
> bdrv_has_discard_write_zeroes -> bdrv_can_write_zeroes_with_unmap
>
> - added additional information about the 2 flags in the
> BDI struct in block.h
>
> v3->v4:
> - changed BlockLimits struct to typedef (Stefan, Eric)
> - renamed bdrv_zeroize to bdrv_make_zero (Stefan)
> - added comment about the -S flag of qemu-img convert in
> qemu-img.texi (Eric)
> - used struct assignment for bs->bl in raw_open (Stefan, Eric)
> - dropped 3 get_block_status fixes that are independent of
> this series and already partly merged.
>
> v2->v3:
> - fix merge conflict in block/qcow2_cluster.c
> - changed return type of bdrv_has_discard_zeroes and
> bdrv_has_discard_write_zeroes to bool.
> - moved alignment and limits info to a BlockLimits struct (Paolo).
> - added magic constanst for default maximum in bdrv_co_do_write_zeroes
> and bdrv_co_discard (Eric).
> - bdrv_co_do_write_zeroes: allocating the bounce buffer only once (Eric),
> fixed bounce iov_len in the fall back path.
> - bdrv_zeroize: added inline docu (Eric) and do not mask flags passed
> to bdrv_write_zeroes (Eric).
> - qemu-img: changed the default hint for -S (min_sparse) in the usage
> help to 4k. not changing the default as it is unclear why this default
> was set. size suffixes are already supported (Eric).
>
> v1->v2:
> - moved block max_discard and max_write_zeroes to BlockDriverState
> - added discard_alignment and write_zeroes_alignment to BlockDriverState
> - added bdrv_has_discard_zeroes() and bdrv_has_discard_write_zeroes()
> - added logic to bdrv_co_discard and bdrv_co_do_write_zeroes to honour
> limit and alignment info.
> - added support for -S 0 in qemu-img convert.
>
> Peter Lieven (17):
> block: make BdrvRequestFlags public
> block: add flags to bdrv_*_write_zeroes
> block: introduce BDRV_REQ_MAY_UNMAP request flag
> block: add logical block provisioning info to BlockDriverInfo
> block: add wrappers for logical block provisioning information
> block/iscsi: add .bdrv_get_info
> block: add BlockLimits structure to BlockDriverState
> block/raw: copy BlockLimits on raw_open
> block: honour BlockLimits in bdrv_co_do_write_zeroes
> block: honour BlockLimits in bdrv_co_discard
> iscsi: set limits in BlockDriverState
> iscsi: simplify iscsi_co_discard
> iscsi: add bdrv_co_write_zeroes
> block: introduce bdrv_make_zero
> block/get_block_status: fix BDRV_BLOCK_ZERO for unallocated blocks
> qemu-img: add support for fully allocated images
> qemu-img: conditionally zero out target on convert
>
> block-migration.c | 3 +-
> block.c | 200
> +++++++++++++++++++++++++++++++++++++--------
> block/backup.c | 3 +-
> block/iscsi.c | 150 +++++++++++++++++++++++++---------
> block/qcow2-cluster.c | 2 +-
> block/qcow2.c | 2 +-
> block/qed.c | 3 +-
> block/raw_bsd.c | 6 +-
> block/vmdk.c | 3 +-
> include/block/block.h | 35 +++++++-
> include/block/block_int.h | 19 ++++-
> qemu-img.c | 20 ++++-
> qemu-img.texi | 6 ++
> qemu-io-cmds.c | 2 +-
> 14 files changed, 366 insertions(+), 88 deletions(-)
>
This looks good to me.
Paolo
- [Qemu-devel] [PATCHv7 07/17] block: add BlockLimits structure to BlockDriverState, (continued)
- [Qemu-devel] [PATCHv7 07/17] block: add BlockLimits structure to BlockDriverState, Peter Lieven, 2013/10/24
- [Qemu-devel] [PATCHv7 11/17] iscsi: set limits in BlockDriverState, Peter Lieven, 2013/10/24
- [Qemu-devel] [PATCHv7 10/17] block: honour BlockLimits in bdrv_co_discard, Peter Lieven, 2013/10/24
- [Qemu-devel] [PATCHv7 09/17] block: honour BlockLimits in bdrv_co_do_write_zeroes, Peter Lieven, 2013/10/24
- [Qemu-devel] [PATCHv7 12/17] iscsi: simplify iscsi_co_discard, Peter Lieven, 2013/10/24
- [Qemu-devel] [PATCHv7 13/17] iscsi: add bdrv_co_write_zeroes, Peter Lieven, 2013/10/24
- [Qemu-devel] [PATCHv7 14/17] block: introduce bdrv_make_zero, Peter Lieven, 2013/10/24
- [Qemu-devel] [PATCHv7 16/17] qemu-img: add support for fully allocated images, Peter Lieven, 2013/10/24
- [Qemu-devel] [PATCHv7 15/17] block/get_block_status: fix BDRV_BLOCK_ZERO for unallocated blocks, Peter Lieven, 2013/10/24
- [Qemu-devel] [PATCHv7 17/17] qemu-img: conditionally zero out target on convert, Peter Lieven, 2013/10/24
- Re: [Qemu-devel] [PATCHv7 00/17] block: logical block provisioning enhancements,
Paolo Bonzini <=