[Qemu-devel] [PATCH v4 00/16] block: Preallocated truncate

Max Reitz posted 16 patches 6 years, 10 months ago
Failed in applying to current master (apply log)
block/qcow2.h                  |   9 +
include/block/block.h          |   3 +-
include/block/block_int.h      |   3 +-
include/sysemu/block-backend.h |   3 +-
block.c                        |   5 +-
block/blkdebug.c               |   5 +-
block/block-backend.c          |   5 +-
block/commit.c                 |   4 +-
block/crypto.c                 |   4 +-
block/file-posix.c             | 201 +++++++++++++--------
block/file-win32.c             |   9 +-
block/gluster.c                |   8 +-
block/iscsi.c                  |   9 +-
block/mirror.c                 |   3 +-
block/nfs.c                    |   9 +-
block/parallels.c              |  13 +-
block/qcow.c                   |   8 +-
block/qcow2-refcount.c         | 277 +++++++++++++++++++----------
block/qcow2.c                  | 205 +++++++++++++++++++---
block/qed.c                    |  11 +-
block/raw-format.c             |   5 +-
block/rbd.c                    |   9 +-
block/sheepdog.c               |  11 +-
block/vdi.c                    |   3 +-
block/vhdx-log.c               |   2 +-
block/vhdx.c                   |   8 +-
block/vmdk.c                   |   7 +-
block/vpc.c                    |   2 +-
blockdev.c                     |   2 +-
qemu-img.c                     |  33 +++-
qemu-io-cmds.c                 |   2 +-
qemu-img.texi                  |   7 +-
tests/qemu-iotests/044.out     |   2 +-
tests/qemu-iotests/106         |  92 ++++++++++
tests/qemu-iotests/106.out     |  50 ++++++
tests/qemu-iotests/125         | 130 ++++++++++++++
tests/qemu-iotests/125.out     | 386 +++++++++++++++++++++++++++++++++++++++++
tests/qemu-iotests/group       |   2 +
38 files changed, 1313 insertions(+), 234 deletions(-)
create mode 100755 tests/qemu-iotests/106
create mode 100644 tests/qemu-iotests/106.out
create mode 100755 tests/qemu-iotests/125
create mode 100644 tests/qemu-iotests/125.out
[Qemu-devel] [PATCH v4 00/16] block: Preallocated truncate
Posted by Max Reitz 6 years, 10 months ago
=== Series dependencies ===

This series depends on v7 of Stefan's series
"qemu-img: add measure sub-command"
(http://lists.nongnu.org/archive/html/qemu-devel/2017-06/msg03035.html).


=== Actual cover letter ===

This series adds preallocation to bdrv_truncate() and subsequently
qemu-img resize. This is implemented for qcow2 and raw only, just like
preallocation for newly created images is. There is no runtime interface
for this new parameter (yet).


v4:
- Patch 4:
  - Note bug fix in commit message [Eric]
  - "...may result in *slightly* more data being allocated..." [Eric]
- Patch 11:
  - Drop the "image may now occupy more space than necessary" note --
    that's always the case when preallocation failed, and I don't really
    want to mention it everywhere
  - Flush metadata after preallocation [Stefan]


git-backport-diff against v3:

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/16:[----] [--] 'block: Add PreallocMode to BD.bdrv_truncate()'
002/16:[----] [--] 'block: Add PreallocMode to bdrv_truncate()'
003/16:[----] [--] 'block: Add PreallocMode to blk_truncate()'
004/16:[0002] [FC] 'qemu-img: Expose PreallocMode for resizing'
005/16:[----] [--] 'block/file-posix: Small fixes in raw_create()'
006/16:[----] [--] 'block/file-posix: Extract raw_regular_truncate()'
007/16:[----] [--] 'block/file-posix: Generalize raw_regular_truncate'
008/16:[----] [--] 'block/file-posix: Preallocation for truncate'
009/16:[----] [--] 'block/qcow2: Generalize preallocate()'
010/16:[----] [--] 'block/qcow2: Lock s->lock in preallocate()'
011/16:[0013] [FC] 'block/qcow2: Metadata preallocation for truncate'
012/16:[----] [--] 'block/qcow2: Add qcow2_refcount_area()'
013/16:[----] [--] 'block/qcow2: Rename "fail_block" to just "fail"'
014/16:[----] [--] 'block/qcow2: falloc/full preallocating growth'
015/16:[----] [--] 'iotests: Add preallocated resize test for raw'
016/16:[----] [--] 'iotests: Add preallocated growth test for qcow2'


Max Reitz (16):
  block: Add PreallocMode to BD.bdrv_truncate()
  block: Add PreallocMode to bdrv_truncate()
  block: Add PreallocMode to blk_truncate()
  qemu-img: Expose PreallocMode for resizing
  block/file-posix: Small fixes in raw_create()
  block/file-posix: Extract raw_regular_truncate()
  block/file-posix: Generalize raw_regular_truncate
  block/file-posix: Preallocation for truncate
  block/qcow2: Generalize preallocate()
  block/qcow2: Lock s->lock in preallocate()
  block/qcow2: Metadata preallocation for truncate
  block/qcow2: Add qcow2_refcount_area()
  block/qcow2: Rename "fail_block" to just "fail"
  block/qcow2: falloc/full preallocating growth
  iotests: Add preallocated resize test for raw
  iotests: Add preallocated growth test for qcow2

 block/qcow2.h                  |   9 +
 include/block/block.h          |   3 +-
 include/block/block_int.h      |   3 +-
 include/sysemu/block-backend.h |   3 +-
 block.c                        |   5 +-
 block/blkdebug.c               |   5 +-
 block/block-backend.c          |   5 +-
 block/commit.c                 |   4 +-
 block/crypto.c                 |   4 +-
 block/file-posix.c             | 201 +++++++++++++--------
 block/file-win32.c             |   9 +-
 block/gluster.c                |   8 +-
 block/iscsi.c                  |   9 +-
 block/mirror.c                 |   3 +-
 block/nfs.c                    |   9 +-
 block/parallels.c              |  13 +-
 block/qcow.c                   |   8 +-
 block/qcow2-refcount.c         | 277 +++++++++++++++++++----------
 block/qcow2.c                  | 205 +++++++++++++++++++---
 block/qed.c                    |  11 +-
 block/raw-format.c             |   5 +-
 block/rbd.c                    |   9 +-
 block/sheepdog.c               |  11 +-
 block/vdi.c                    |   3 +-
 block/vhdx-log.c               |   2 +-
 block/vhdx.c                   |   8 +-
 block/vmdk.c                   |   7 +-
 block/vpc.c                    |   2 +-
 blockdev.c                     |   2 +-
 qemu-img.c                     |  33 +++-
 qemu-io-cmds.c                 |   2 +-
 qemu-img.texi                  |   7 +-
 tests/qemu-iotests/044.out     |   2 +-
 tests/qemu-iotests/106         |  92 ++++++++++
 tests/qemu-iotests/106.out     |  50 ++++++
 tests/qemu-iotests/125         | 130 ++++++++++++++
 tests/qemu-iotests/125.out     | 386 +++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/group       |   2 +
 38 files changed, 1313 insertions(+), 234 deletions(-)
 create mode 100755 tests/qemu-iotests/106
 create mode 100644 tests/qemu-iotests/106.out
 create mode 100755 tests/qemu-iotests/125
 create mode 100644 tests/qemu-iotests/125.out

-- 
2.9.4


Re: [Qemu-devel] [PATCH v4 00/16] block: Preallocated truncate
Posted by Max Reitz 6 years, 9 months ago
On 2017-06-13 22:20, Max Reitz wrote:
> === Series dependencies ===
> 
> This series depends on v7 of Stefan's series
> "qemu-img: add measure sub-command"
> (http://lists.nongnu.org/archive/html/qemu-devel/2017-06/msg03035.html).
> 
> 
> === Actual cover letter ===
> 
> This series adds preallocation to bdrv_truncate() and subsequently
> qemu-img resize. This is implemented for qcow2 and raw only, just like
> preallocation for newly created images is. There is no runtime interface
> for this new parameter (yet).
> 
> 
> v4:
> - Patch 4:
>   - Note bug fix in commit message [Eric]
>   - "...may result in *slightly* more data being allocated..." [Eric]
> - Patch 11:
>   - Drop the "image may now occupy more space than necessary" note --
>     that's always the case when preallocation failed, and I don't really
>     want to mention it everywhere
>   - Flush metadata after preallocation [Stefan]
> 
> 
> git-backport-diff against v3:
> 
> 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/16:[----] [--] 'block: Add PreallocMode to BD.bdrv_truncate()'
> 002/16:[----] [--] 'block: Add PreallocMode to bdrv_truncate()'
> 003/16:[----] [--] 'block: Add PreallocMode to blk_truncate()'
> 004/16:[0002] [FC] 'qemu-img: Expose PreallocMode for resizing'
> 005/16:[----] [--] 'block/file-posix: Small fixes in raw_create()'
> 006/16:[----] [--] 'block/file-posix: Extract raw_regular_truncate()'
> 007/16:[----] [--] 'block/file-posix: Generalize raw_regular_truncate'
> 008/16:[----] [--] 'block/file-posix: Preallocation for truncate'
> 009/16:[----] [--] 'block/qcow2: Generalize preallocate()'
> 010/16:[----] [--] 'block/qcow2: Lock s->lock in preallocate()'
> 011/16:[0013] [FC] 'block/qcow2: Metadata preallocation for truncate'
> 012/16:[----] [--] 'block/qcow2: Add qcow2_refcount_area()'
> 013/16:[----] [--] 'block/qcow2: Rename "fail_block" to just "fail"'
> 014/16:[----] [--] 'block/qcow2: falloc/full preallocating growth'
> 015/16:[----] [--] 'iotests: Add preallocated resize test for raw'
> 016/16:[----] [--] 'iotests: Add preallocated growth test for qcow2'
> 
> 
> Max Reitz (16):
>   block: Add PreallocMode to BD.bdrv_truncate()
>   block: Add PreallocMode to bdrv_truncate()
>   block: Add PreallocMode to blk_truncate()
>   qemu-img: Expose PreallocMode for resizing
>   block/file-posix: Small fixes in raw_create()
>   block/file-posix: Extract raw_regular_truncate()
>   block/file-posix: Generalize raw_regular_truncate
>   block/file-posix: Preallocation for truncate
>   block/qcow2: Generalize preallocate()
>   block/qcow2: Lock s->lock in preallocate()
>   block/qcow2: Metadata preallocation for truncate
>   block/qcow2: Add qcow2_refcount_area()
>   block/qcow2: Rename "fail_block" to just "fail"
>   block/qcow2: falloc/full preallocating growth
>   iotests: Add preallocated resize test for raw
>   iotests: Add preallocated growth test for qcow2
> 
>  block/qcow2.h                  |   9 +
>  include/block/block.h          |   3 +-
>  include/block/block_int.h      |   3 +-
>  include/sysemu/block-backend.h |   3 +-
>  block.c                        |   5 +-
>  block/blkdebug.c               |   5 +-
>  block/block-backend.c          |   5 +-
>  block/commit.c                 |   4 +-
>  block/crypto.c                 |   4 +-
>  block/file-posix.c             | 201 +++++++++++++--------
>  block/file-win32.c             |   9 +-
>  block/gluster.c                |   8 +-
>  block/iscsi.c                  |   9 +-
>  block/mirror.c                 |   3 +-
>  block/nfs.c                    |   9 +-
>  block/parallels.c              |  13 +-
>  block/qcow.c                   |   8 +-
>  block/qcow2-refcount.c         | 277 +++++++++++++++++++----------
>  block/qcow2.c                  | 205 +++++++++++++++++++---
>  block/qed.c                    |  11 +-
>  block/raw-format.c             |   5 +-
>  block/rbd.c                    |   9 +-
>  block/sheepdog.c               |  11 +-
>  block/vdi.c                    |   3 +-
>  block/vhdx-log.c               |   2 +-
>  block/vhdx.c                   |   8 +-
>  block/vmdk.c                   |   7 +-
>  block/vpc.c                    |   2 +-
>  blockdev.c                     |   2 +-
>  qemu-img.c                     |  33 +++-
>  qemu-io-cmds.c                 |   2 +-
>  qemu-img.texi                  |   7 +-
>  tests/qemu-iotests/044.out     |   2 +-
>  tests/qemu-iotests/106         |  92 ++++++++++
>  tests/qemu-iotests/106.out     |  50 ++++++
>  tests/qemu-iotests/125         | 130 ++++++++++++++
>  tests/qemu-iotests/125.out     | 386 +++++++++++++++++++++++++++++++++++++++++
>  tests/qemu-iotests/group       |   2 +
>  38 files changed, 1313 insertions(+), 234 deletions(-)
>  create mode 100755 tests/qemu-iotests/106
>  create mode 100644 tests/qemu-iotests/106.out
>  create mode 100755 tests/qemu-iotests/125
>  create mode 100644 tests/qemu-iotests/125.out

Applied to my block tree:

https://github.com/XanClic/qemu/commits/block

Max

Re: [Qemu-devel] [PATCH v4 00/16] block: Preallocated truncate
Posted by Stefan Hajnoczi 6 years, 10 months ago
On Tue, Jun 13, 2017 at 10:20:51PM +0200, Max Reitz wrote:
> === Series dependencies ===
> 
> This series depends on v7 of Stefan's series
> "qemu-img: add measure sub-command"
> (http://lists.nongnu.org/archive/html/qemu-devel/2017-06/msg03035.html).
> 
> 
> === Actual cover letter ===
> 
> This series adds preallocation to bdrv_truncate() and subsequently
> qemu-img resize. This is implemented for qcow2 and raw only, just like
> preallocation for newly created images is. There is no runtime interface
> for this new parameter (yet).
> 
> 
> v4:
> - Patch 4:
>   - Note bug fix in commit message [Eric]
>   - "...may result in *slightly* more data being allocated..." [Eric]
> - Patch 11:
>   - Drop the "image may now occupy more space than necessary" note --
>     that's always the case when preallocation failed, and I don't really
>     want to mention it everywhere
>   - Flush metadata after preallocation [Stefan]
> 
> 
> git-backport-diff against v3:
> 
> 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/16:[----] [--] 'block: Add PreallocMode to BD.bdrv_truncate()'
> 002/16:[----] [--] 'block: Add PreallocMode to bdrv_truncate()'
> 003/16:[----] [--] 'block: Add PreallocMode to blk_truncate()'
> 004/16:[0002] [FC] 'qemu-img: Expose PreallocMode for resizing'
> 005/16:[----] [--] 'block/file-posix: Small fixes in raw_create()'
> 006/16:[----] [--] 'block/file-posix: Extract raw_regular_truncate()'
> 007/16:[----] [--] 'block/file-posix: Generalize raw_regular_truncate'
> 008/16:[----] [--] 'block/file-posix: Preallocation for truncate'
> 009/16:[----] [--] 'block/qcow2: Generalize preallocate()'
> 010/16:[----] [--] 'block/qcow2: Lock s->lock in preallocate()'
> 011/16:[0013] [FC] 'block/qcow2: Metadata preallocation for truncate'
> 012/16:[----] [--] 'block/qcow2: Add qcow2_refcount_area()'
> 013/16:[----] [--] 'block/qcow2: Rename "fail_block" to just "fail"'
> 014/16:[----] [--] 'block/qcow2: falloc/full preallocating growth'
> 015/16:[----] [--] 'iotests: Add preallocated resize test for raw'
> 016/16:[----] [--] 'iotests: Add preallocated growth test for qcow2'
> 
> 
> Max Reitz (16):
>   block: Add PreallocMode to BD.bdrv_truncate()
>   block: Add PreallocMode to bdrv_truncate()
>   block: Add PreallocMode to blk_truncate()
>   qemu-img: Expose PreallocMode for resizing
>   block/file-posix: Small fixes in raw_create()
>   block/file-posix: Extract raw_regular_truncate()
>   block/file-posix: Generalize raw_regular_truncate
>   block/file-posix: Preallocation for truncate
>   block/qcow2: Generalize preallocate()
>   block/qcow2: Lock s->lock in preallocate()
>   block/qcow2: Metadata preallocation for truncate
>   block/qcow2: Add qcow2_refcount_area()
>   block/qcow2: Rename "fail_block" to just "fail"
>   block/qcow2: falloc/full preallocating growth
>   iotests: Add preallocated resize test for raw
>   iotests: Add preallocated growth test for qcow2
> 
>  block/qcow2.h                  |   9 +
>  include/block/block.h          |   3 +-
>  include/block/block_int.h      |   3 +-
>  include/sysemu/block-backend.h |   3 +-
>  block.c                        |   5 +-
>  block/blkdebug.c               |   5 +-
>  block/block-backend.c          |   5 +-
>  block/commit.c                 |   4 +-
>  block/crypto.c                 |   4 +-
>  block/file-posix.c             | 201 +++++++++++++--------
>  block/file-win32.c             |   9 +-
>  block/gluster.c                |   8 +-
>  block/iscsi.c                  |   9 +-
>  block/mirror.c                 |   3 +-
>  block/nfs.c                    |   9 +-
>  block/parallels.c              |  13 +-
>  block/qcow.c                   |   8 +-
>  block/qcow2-refcount.c         | 277 +++++++++++++++++++----------
>  block/qcow2.c                  | 205 +++++++++++++++++++---
>  block/qed.c                    |  11 +-
>  block/raw-format.c             |   5 +-
>  block/rbd.c                    |   9 +-
>  block/sheepdog.c               |  11 +-
>  block/vdi.c                    |   3 +-
>  block/vhdx-log.c               |   2 +-
>  block/vhdx.c                   |   8 +-
>  block/vmdk.c                   |   7 +-
>  block/vpc.c                    |   2 +-
>  blockdev.c                     |   2 +-
>  qemu-img.c                     |  33 +++-
>  qemu-io-cmds.c                 |   2 +-
>  qemu-img.texi                  |   7 +-
>  tests/qemu-iotests/044.out     |   2 +-
>  tests/qemu-iotests/106         |  92 ++++++++++
>  tests/qemu-iotests/106.out     |  50 ++++++
>  tests/qemu-iotests/125         | 130 ++++++++++++++
>  tests/qemu-iotests/125.out     | 386 +++++++++++++++++++++++++++++++++++++++++
>  tests/qemu-iotests/group       |   2 +
>  38 files changed, 1313 insertions(+), 234 deletions(-)
>  create mode 100755 tests/qemu-iotests/106
>  create mode 100644 tests/qemu-iotests/106.out
>  create mode 100755 tests/qemu-iotests/125
>  create mode 100644 tests/qemu-iotests/125.out
> 
> -- 
> 2.9.4
> 

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>