[PULL 00/25] Block layer patches

Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20231107184605.236540-1-kwolf@redhat.com
Maintainers: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, John Snow <jsnow@redhat.com>, Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>, Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>, Paolo Bonzini <pbonzini@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, Fam Zheng <fam@euphon.net>, "Denis V. Lunev" <den@openvz.org>, Eric Blake <eblake@redhat.com>, Wen Congyang <wencongyang2@huawei.com>, Xie Changlong <xiechanglong.d@gmail.com>, Stefan Weil <sw@weilnetz.de>, Jeff Cody <codyprime@gmail.com>, Juan Quintela <quintela@redhat.com>, Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, Leonardo Bras <leobras@redhat.com>
There is a newer version of this series
block/copy-on-read.h                   |   3 +-
block/parallels.h                      |   5 +-
block/qcow2.h                          |  59 +++++-----
block/qed.h                            |   2 +-
block/vhdx.h                           |   9 +-
include/block/block-global-state.h     |  43 ++++----
include/block/block-io.h               |  10 +-
include/block/block_int-common.h       |  31 +++---
include/block/block_int-global-state.h |  16 +--
include/block/block_int-io.h           |  19 ++--
include/block/blockjob.h               |   5 +-
include/block/blockjob_int.h           |   9 +-
block.c                                | 192 +++++++++++++++++++--------------
block/backup.c                         |  21 ++--
block/blkdebug.c                       |  29 ++---
block/blkreplay.c                      |   8 +-
block/blkverify.c                      |  18 ++--
block/block-backend.c                  |   5 +
block/block-copy.c                     |  11 +-
block/bochs.c                          |   4 +
block/cloop.c                          |   4 +
block/commit.c                         |  32 +++++-
block/copy-before-write.c              |   6 +-
block/copy-on-read.c                   |  19 +++-
block/crypto.c                         |  10 ++
block/dmg.c                            |  21 ++--
block/filter-compress.c                |   5 +-
block/io.c                             |   2 +
block/mirror.c                         |  85 ++++++++++-----
block/monitor/block-hmp-cmds.c         |   3 +
block/parallels-ext.c                  |  21 ++--
block/parallels.c                      |  22 ++--
block/preallocate.c                    |  27 +++--
block/qcow.c                           |  13 ++-
block/qcow2-bitmap.c                   |  14 +--
block/qcow2-cluster.c                  |  25 ++---
block/qcow2.c                          | 148 +++++++++++++------------
block/qed.c                            |  88 ++++++++-------
block/raw-format.c                     |  36 ++++---
block/replication.c                    |  12 ++-
block/snapshot-access.c                |   5 +-
block/stream.c                         |  48 ++++++---
block/throttle.c                       |   3 +
block/vdi.c                            |  15 ++-
block/vhdx-log.c                       |  40 +++----
block/vhdx.c                           |  37 ++++---
block/vmdk.c                           |  23 ++--
block/vpc.c                            |   6 +-
blockdev.c                             |  72 ++++++++-----
blockjob.c                             |   6 +-
hw/ide/ahci.c                          |   5 +-
migration/block-dirty-bitmap.c         |   4 +
nbd/server.c                           |   6 ++
qemu-img.c                             |  31 ++++--
tests/unit/test-bdrv-drain.c           |  39 +++++--
tests/unit/test-bdrv-graph-mod.c       |  18 +++-
56 files changed, 923 insertions(+), 527 deletions(-)
[PULL 00/25] Block layer patches
Posted by Kevin Wolf 1 year ago
The following changes since commit 462ad017ed76889d46696a3581e1b52343f9b683:

  Merge tag 'pixman-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging (2023-11-07 19:00:03 +0800)

are available in the Git repository at:

  https://repo.or.cz/qemu/kevin.git tags/for-upstream

for you to fetch changes up to 5d4a5080e43681b753f922c5c2a7682bc1d67497:

  hw/ide/ahci: trigger either error IRQ or regular IRQ, not both (2023-11-07 19:14:20 +0100)

----------------------------------------------------------------
Block layer patches

- Graph locking part 6 (bs->file/backing)
- ahci: trigger either error IRQ or regular IRQ, not both

----------------------------------------------------------------
Kevin Wolf (24):
      block: Mark bdrv_probe_blocksizes() and callers GRAPH_RDLOCK
      block: Mark bdrv_has_zero_init() and callers GRAPH_RDLOCK
      block: Mark bdrv_filter_bs() and callers GRAPH_RDLOCK
      block: Mark bdrv_root_attach_child() GRAPH_WRLOCK
      block: Mark block_job_add_bdrv() GRAPH_WRLOCK
      block: Mark bdrv_filter_or_cow_bs() and callers GRAPH_RDLOCK
      block: Mark bdrv_skip_implicit_filters() and callers GRAPH_RDLOCK
      block: Mark bdrv_skip_filters() and callers GRAPH_RDLOCK
      block: Mark bdrv_(un)freeze_backing_chain() and callers GRAPH_RDLOCK
      block: Mark bdrv_chain_contains() and callers GRAPH_RDLOCK
      block: Mark bdrv_filter_child() and callers GRAPH_RDLOCK
      block: Mark bdrv_cow_child() and callers GRAPH_RDLOCK
      block: Mark bdrv_set_backing_hd_drained() GRAPH_WRLOCK
      block: Inline bdrv_set_backing_noperm()
      block: Mark bdrv_replace_node_common() GRAPH_WRLOCK
      block: Mark bdrv_replace_node() GRAPH_WRLOCK
      block: Protect bs->backing with graph_lock
      blkverify: Add locking for request_fn
      block: Introduce bdrv_co_change_backing_file()
      block: Add missing GRAPH_RDLOCK annotations
      qcow2: Take locks for accessing bs->file
      vhdx: Take locks for accessing bs->file
      block: Take graph lock for most of .bdrv_open
      block: Protect bs->file with graph_lock

Niklas Cassel (1):
      hw/ide/ahci: trigger either error IRQ or regular IRQ, not both

 block/copy-on-read.h                   |   3 +-
 block/parallels.h                      |   5 +-
 block/qcow2.h                          |  59 +++++-----
 block/qed.h                            |   2 +-
 block/vhdx.h                           |   9 +-
 include/block/block-global-state.h     |  43 ++++----
 include/block/block-io.h               |  10 +-
 include/block/block_int-common.h       |  31 +++---
 include/block/block_int-global-state.h |  16 +--
 include/block/block_int-io.h           |  19 ++--
 include/block/blockjob.h               |   5 +-
 include/block/blockjob_int.h           |   9 +-
 block.c                                | 192 +++++++++++++++++++--------------
 block/backup.c                         |  21 ++--
 block/blkdebug.c                       |  29 ++---
 block/blkreplay.c                      |   8 +-
 block/blkverify.c                      |  18 ++--
 block/block-backend.c                  |   5 +
 block/block-copy.c                     |  11 +-
 block/bochs.c                          |   4 +
 block/cloop.c                          |   4 +
 block/commit.c                         |  32 +++++-
 block/copy-before-write.c              |   6 +-
 block/copy-on-read.c                   |  19 +++-
 block/crypto.c                         |  10 ++
 block/dmg.c                            |  21 ++--
 block/filter-compress.c                |   5 +-
 block/io.c                             |   2 +
 block/mirror.c                         |  85 ++++++++++-----
 block/monitor/block-hmp-cmds.c         |   3 +
 block/parallels-ext.c                  |  21 ++--
 block/parallels.c                      |  22 ++--
 block/preallocate.c                    |  27 +++--
 block/qcow.c                           |  13 ++-
 block/qcow2-bitmap.c                   |  14 +--
 block/qcow2-cluster.c                  |  25 ++---
 block/qcow2.c                          | 148 +++++++++++++------------
 block/qed.c                            |  88 ++++++++-------
 block/raw-format.c                     |  36 ++++---
 block/replication.c                    |  12 ++-
 block/snapshot-access.c                |   5 +-
 block/stream.c                         |  48 ++++++---
 block/throttle.c                       |   3 +
 block/vdi.c                            |  15 ++-
 block/vhdx-log.c                       |  40 +++----
 block/vhdx.c                           |  37 ++++---
 block/vmdk.c                           |  23 ++--
 block/vpc.c                            |   6 +-
 blockdev.c                             |  72 ++++++++-----
 blockjob.c                             |   6 +-
 hw/ide/ahci.c                          |   5 +-
 migration/block-dirty-bitmap.c         |   4 +
 nbd/server.c                           |   6 ++
 qemu-img.c                             |  31 ++++--
 tests/unit/test-bdrv-drain.c           |  39 +++++--
 tests/unit/test-bdrv-graph-mod.c       |  18 +++-
 56 files changed, 923 insertions(+), 527 deletions(-)
Re: [PULL 00/25] Block layer patches
Posted by Stefan Hajnoczi 1 year ago
On Wed, 8 Nov 2023 at 02:47, Kevin Wolf <kwolf@redhat.com> wrote:
>
> The following changes since commit 462ad017ed76889d46696a3581e1b52343f9b683:
>
>   Merge tag 'pixman-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging (2023-11-07 19:00:03 +0800)
>
> are available in the Git repository at:
>
>   https://repo.or.cz/qemu/kevin.git tags/for-upstream
>
> for you to fetch changes up to 5d4a5080e43681b753f922c5c2a7682bc1d67497:
>
>   hw/ide/ahci: trigger either error IRQ or regular IRQ, not both (2023-11-07 19:14:20 +0100)
>
> ----------------------------------------------------------------
> Block layer patches
>
> - Graph locking part 6 (bs->file/backing)
> - ahci: trigger either error IRQ or regular IRQ, not both
>
> ----------------------------------------------------------------
> Kevin Wolf (24):
>       block: Mark bdrv_probe_blocksizes() and callers GRAPH_RDLOCK
>       block: Mark bdrv_has_zero_init() and callers GRAPH_RDLOCK
>       block: Mark bdrv_filter_bs() and callers GRAPH_RDLOCK
>       block: Mark bdrv_root_attach_child() GRAPH_WRLOCK
>       block: Mark block_job_add_bdrv() GRAPH_WRLOCK
>       block: Mark bdrv_filter_or_cow_bs() and callers GRAPH_RDLOCK
>       block: Mark bdrv_skip_implicit_filters() and callers GRAPH_RDLOCK
>       block: Mark bdrv_skip_filters() and callers GRAPH_RDLOCK
>       block: Mark bdrv_(un)freeze_backing_chain() and callers GRAPH_RDLOCK
>       block: Mark bdrv_chain_contains() and callers GRAPH_RDLOCK
>       block: Mark bdrv_filter_child() and callers GRAPH_RDLOCK
>       block: Mark bdrv_cow_child() and callers GRAPH_RDLOCK
>       block: Mark bdrv_set_backing_hd_drained() GRAPH_WRLOCK
>       block: Inline bdrv_set_backing_noperm()
>       block: Mark bdrv_replace_node_common() GRAPH_WRLOCK
>       block: Mark bdrv_replace_node() GRAPH_WRLOCK
>       block: Protect bs->backing with graph_lock

Hi Kevin,
This patch series fails CI:

commit ecdd779f1332d0625cbb6195e30db8e3c179cc76
Author: Kevin Wolf <kwolf@redhat.com>
Date:   Fri Oct 27 17:53:26 2023 +0200

    block: Protect bs->backing with graph_lock

../block/mirror.c: In function 'mirror_run':
../block/mirror.c:1173:9: error: 'bs' may be used uninitialized in
this function [-Werror=maybe-uninitialized]
 1173 |         bdrv_drained_begin(bs);
      |         ^~~~~~~~~~~~~~~~~~~~~~

https://gitlab.com/qemu-project/qemu/-/jobs/5483228890

Please take a look. Thanks!

Stefan

>       blkverify: Add locking for request_fn
>       block: Introduce bdrv_co_change_backing_file()
>       block: Add missing GRAPH_RDLOCK annotations
>       qcow2: Take locks for accessing bs->file
>       vhdx: Take locks for accessing bs->file
>       block: Take graph lock for most of .bdrv_open
>       block: Protect bs->file with graph_lock
>
> Niklas Cassel (1):
>       hw/ide/ahci: trigger either error IRQ or regular IRQ, not both
>
>  block/copy-on-read.h                   |   3 +-
>  block/parallels.h                      |   5 +-
>  block/qcow2.h                          |  59 +++++-----
>  block/qed.h                            |   2 +-
>  block/vhdx.h                           |   9 +-
>  include/block/block-global-state.h     |  43 ++++----
>  include/block/block-io.h               |  10 +-
>  include/block/block_int-common.h       |  31 +++---
>  include/block/block_int-global-state.h |  16 +--
>  include/block/block_int-io.h           |  19 ++--
>  include/block/blockjob.h               |   5 +-
>  include/block/blockjob_int.h           |   9 +-
>  block.c                                | 192 +++++++++++++++++++--------------
>  block/backup.c                         |  21 ++--
>  block/blkdebug.c                       |  29 ++---
>  block/blkreplay.c                      |   8 +-
>  block/blkverify.c                      |  18 ++--
>  block/block-backend.c                  |   5 +
>  block/block-copy.c                     |  11 +-
>  block/bochs.c                          |   4 +
>  block/cloop.c                          |   4 +
>  block/commit.c                         |  32 +++++-
>  block/copy-before-write.c              |   6 +-
>  block/copy-on-read.c                   |  19 +++-
>  block/crypto.c                         |  10 ++
>  block/dmg.c                            |  21 ++--
>  block/filter-compress.c                |   5 +-
>  block/io.c                             |   2 +
>  block/mirror.c                         |  85 ++++++++++-----
>  block/monitor/block-hmp-cmds.c         |   3 +
>  block/parallels-ext.c                  |  21 ++--
>  block/parallels.c                      |  22 ++--
>  block/preallocate.c                    |  27 +++--
>  block/qcow.c                           |  13 ++-
>  block/qcow2-bitmap.c                   |  14 +--
>  block/qcow2-cluster.c                  |  25 ++---
>  block/qcow2.c                          | 148 +++++++++++++------------
>  block/qed.c                            |  88 ++++++++-------
>  block/raw-format.c                     |  36 ++++---
>  block/replication.c                    |  12 ++-
>  block/snapshot-access.c                |   5 +-
>  block/stream.c                         |  48 ++++++---
>  block/throttle.c                       |   3 +
>  block/vdi.c                            |  15 ++-
>  block/vhdx-log.c                       |  40 +++----
>  block/vhdx.c                           |  37 ++++---
>  block/vmdk.c                           |  23 ++--
>  block/vpc.c                            |   6 +-
>  blockdev.c                             |  72 ++++++++-----
>  blockjob.c                             |   6 +-
>  hw/ide/ahci.c                          |   5 +-
>  migration/block-dirty-bitmap.c         |   4 +
>  nbd/server.c                           |   6 ++
>  qemu-img.c                             |  31 ++++--
>  tests/unit/test-bdrv-drain.c           |  39 +++++--
>  tests/unit/test-bdrv-graph-mod.c       |  18 +++-
>  56 files changed, 923 insertions(+), 527 deletions(-)
>
>