[PATCH 00/14] block: cleanup backing and file handling

Vladimir Sementsov-Ogievskiy posted 14 patches 2 years, 4 months ago
Test checkpatch failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20211203202553.3231580-1-vsementsov@virtuozzo.com
Maintainers: Hanna Reitz <hreitz@redhat.com>, "Denis V. Lunev" <den@openvz.org>, Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>, Kevin Wolf <kwolf@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Stefan Weil <sw@weilnetz.de>, Jeff Cody <codyprime@gmail.com>, Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>, John Snow <jsnow@redhat.com>, Wen Congyang <wencongyang2@huawei.com>, Ari Sundholm <ari@tuxera.com>, Fam Zheng <fam@euphon.net>, Xie Changlong <xiechanglong.d@gmail.com>
There is a newer version of this series
include/block/block.h            |  45 +++++
include/block/block_int.h        |  30 ++-
block.c                          | 335 ++++++++++---------------------
block/blkdebug.c                 |   9 +-
block/blklogwrites.c             |  11 +-
block/blkreplay.c                |   7 +-
block/blkverify.c                |   9 +-
block/bochs.c                    |   7 +-
block/cloop.c                    |   7 +-
block/commit.c                   |   1 +
block/copy-before-write.c        |   9 +-
block/copy-on-read.c             |   9 +-
block/crypto.c                   |  11 +-
block/dmg.c                      |   7 +-
block/filter-compress.c          |   6 +-
block/mirror.c                   |   1 +
block/parallels.c                |   7 +-
block/preallocate.c              |   9 +-
block/qcow.c                     |   6 +-
block/qcow2.c                    |   8 +-
block/qed.c                      |   8 +-
block/raw-format.c               |   4 +-
block/replication.c              |   8 +-
block/snapshot.c                 |  60 ++----
block/throttle.c                 |   8 +-
block/vdi.c                      |   7 +-
block/vhdx.c                     |   7 +-
block/vmdk.c                     |   7 +-
block/vpc.c                      |   7 +-
tests/unit/test-bdrv-drain.c     |  11 +-
tests/unit/test-bdrv-graph-mod.c |  94 ++++++---
31 files changed, 343 insertions(+), 412 deletions(-)
[PATCH 00/14] block: cleanup backing and file handling
Posted by Vladimir Sementsov-Ogievskiy 2 years, 4 months ago
Hi all!

I started this as a follow-up to
"block: Attempt on fixing 030-reported errors" by Hanna.

In Hanna's series I really like how bs->children handling moved to
.attach/.detach handlers.

.file and .backing are kind of "shortcuts" or "links" to some elementes
of this list, they duplicate the information. So they should be updated
in the same place to be in sync.

On the way to this target, I do also the following cleanups:

 - establish, which restrictions we have on how much children of
 different roles should node has, and which of the should be linked in
 .file / .backing. Add documentation and assertions.

 - drop all the complicated logic around passing pointer to bs->backing
 / bs->file  (BdrvChild **c), so that the field be automatically
 updated. Now they are natively automatically updated in
 .attach/.detach, so the rest of the code becomes simpler.

 - now .file / .backing are updated ONLY in .attach / .detach, no other
 code modify these fields

Vladimir Sementsov-Ogievskiy (14):
  block: BlockDriver: add .filtered_child_is_backing field
  block: introduce bdrv_open_file_child() helper
  block/blklogwrites: don't care to remove bs->file child on failure
  test-bdrv-graph-mod: update test_parallel_perm_update test case
  tests-bdrv-drain: bdrv_replace_test driver: declare supports_backing
  test-bdrv-graph-mod: fix filters to be filters
  block: document connection between child roles and
    bs->backing/bs->file
  block/snapshot: stress that we fallback to primary child
  Revert "block: Let replace_child_noperm free children"
  Revert "block: Let replace_child_tran keep indirect pointer"
  Revert "block: Restructure remove_file_or_backing_child()"
  Revert "block: Pass BdrvChild ** to replace_child_noperm"
  block: Manipulate bs->file / bs->backing pointers in .attach/.detach
  block/snapshot: drop indirection around bdrv_snapshot_fallback_ptr

 include/block/block.h            |  45 +++++
 include/block/block_int.h        |  30 ++-
 block.c                          | 335 ++++++++++---------------------
 block/blkdebug.c                 |   9 +-
 block/blklogwrites.c             |  11 +-
 block/blkreplay.c                |   7 +-
 block/blkverify.c                |   9 +-
 block/bochs.c                    |   7 +-
 block/cloop.c                    |   7 +-
 block/commit.c                   |   1 +
 block/copy-before-write.c        |   9 +-
 block/copy-on-read.c             |   9 +-
 block/crypto.c                   |  11 +-
 block/dmg.c                      |   7 +-
 block/filter-compress.c          |   6 +-
 block/mirror.c                   |   1 +
 block/parallels.c                |   7 +-
 block/preallocate.c              |   9 +-
 block/qcow.c                     |   6 +-
 block/qcow2.c                    |   8 +-
 block/qed.c                      |   8 +-
 block/raw-format.c               |   4 +-
 block/replication.c              |   8 +-
 block/snapshot.c                 |  60 ++----
 block/throttle.c                 |   8 +-
 block/vdi.c                      |   7 +-
 block/vhdx.c                     |   7 +-
 block/vmdk.c                     |   7 +-
 block/vpc.c                      |   7 +-
 tests/unit/test-bdrv-drain.c     |  11 +-
 tests/unit/test-bdrv-graph-mod.c |  94 ++++++---
 31 files changed, 343 insertions(+), 412 deletions(-)

-- 
2.31.1


Re: [PATCH 00/14] block: cleanup backing and file handling
Posted by Vladimir Sementsov-Ogievskiy 2 years, 2 months ago
Ping

03.12.2021 23:25, Vladimir Sementsov-Ogievskiy wrote:
> Hi all!
> 
> I started this as a follow-up to
> "block: Attempt on fixing 030-reported errors" by Hanna.
> 
> In Hanna's series I really like how bs->children handling moved to
> .attach/.detach handlers.
> 
> .file and .backing are kind of "shortcuts" or "links" to some elementes
> of this list, they duplicate the information. So they should be updated
> in the same place to be in sync.
> 
> On the way to this target, I do also the following cleanups:
> 
>   - establish, which restrictions we have on how much children of
>   different roles should node has, and which of the should be linked in
>   .file / .backing. Add documentation and assertions.
> 
>   - drop all the complicated logic around passing pointer to bs->backing
>   / bs->file  (BdrvChild **c), so that the field be automatically
>   updated. Now they are natively automatically updated in
>   .attach/.detach, so the rest of the code becomes simpler.
> 
>   - now .file / .backing are updated ONLY in .attach / .detach, no other
>   code modify these fields
> 
> Vladimir Sementsov-Ogievskiy (14):
>    block: BlockDriver: add .filtered_child_is_backing field
>    block: introduce bdrv_open_file_child() helper
>    block/blklogwrites: don't care to remove bs->file child on failure
>    test-bdrv-graph-mod: update test_parallel_perm_update test case
>    tests-bdrv-drain: bdrv_replace_test driver: declare supports_backing
>    test-bdrv-graph-mod: fix filters to be filters
>    block: document connection between child roles and
>      bs->backing/bs->file
>    block/snapshot: stress that we fallback to primary child
>    Revert "block: Let replace_child_noperm free children"
>    Revert "block: Let replace_child_tran keep indirect pointer"
>    Revert "block: Restructure remove_file_or_backing_child()"
>    Revert "block: Pass BdrvChild ** to replace_child_noperm"
>    block: Manipulate bs->file / bs->backing pointers in .attach/.detach
>    block/snapshot: drop indirection around bdrv_snapshot_fallback_ptr
> 
>   include/block/block.h            |  45 +++++
>   include/block/block_int.h        |  30 ++-
>   block.c                          | 335 ++++++++++---------------------
>   block/blkdebug.c                 |   9 +-
>   block/blklogwrites.c             |  11 +-
>   block/blkreplay.c                |   7 +-
>   block/blkverify.c                |   9 +-
>   block/bochs.c                    |   7 +-
>   block/cloop.c                    |   7 +-
>   block/commit.c                   |   1 +
>   block/copy-before-write.c        |   9 +-
>   block/copy-on-read.c             |   9 +-
>   block/crypto.c                   |  11 +-
>   block/dmg.c                      |   7 +-
>   block/filter-compress.c          |   6 +-
>   block/mirror.c                   |   1 +
>   block/parallels.c                |   7 +-
>   block/preallocate.c              |   9 +-
>   block/qcow.c                     |   6 +-
>   block/qcow2.c                    |   8 +-
>   block/qed.c                      |   8 +-
>   block/raw-format.c               |   4 +-
>   block/replication.c              |   8 +-
>   block/snapshot.c                 |  60 ++----
>   block/throttle.c                 |   8 +-
>   block/vdi.c                      |   7 +-
>   block/vhdx.c                     |   7 +-
>   block/vmdk.c                     |   7 +-
>   block/vpc.c                      |   7 +-
>   tests/unit/test-bdrv-drain.c     |  11 +-
>   tests/unit/test-bdrv-graph-mod.c |  94 ++++++---
>   31 files changed, 343 insertions(+), 412 deletions(-)
> 


-- 
Best regards,
Vladimir