mbox series

[0/6] Protect the block layer with a rwlock: part 2

Message ID 20221116135331.3052923-1-eesposit@redhat.com (mailing list archive)
Headers show
Series Protect the block layer with a rwlock: part 2 | expand

Message

Emanuele Giuseppe Esposito Nov. 16, 2022, 1:53 p.m. UTC
Please read "Protect the block layer with a rwlock: part 1" for an additional
introduction and aim of this series.

This second part aims to add the graph rdlock to the BlockDriver functions
that already run in coroutine context and are classified as IO.
Such functions will recursively traverse the BlockDriverState graph, therefore
they need to be protected with the rdlock.

Based-on: <20221116134850.3051419-1-eesposit@redhat.com>

Thank you,
Emanuele

Emanuele Giuseppe Esposito (6):
  block: assert that bdrv_co_create is always called with graph rdlock
    taken
  block: assert that BlockDriver->bdrv_co_{amend/create} are called with
    graph rdlock taken
  block: assert that BlockDriver->bdrv_co_copy_range_{from/to} is always
    called with graph rdlock taken
  block/dirty-bitmap: assert that BlockDriver->bdrv_co_*_dirty_bitmap
    are always called with graph rdlock taken
  block/io: assert that BlockDriver->bdrv_co_*_snapshot_* are always
    called with graph rdlock taken
  block: assert that BlockDriver->bdrv_co_delete_file is always called
    with graph rdlock taken

 block.c                          |  2 ++
 block/amend.c                    |  1 +
 block/block-backend.c            |  2 ++
 block/create.c                   |  1 +
 block/dirty-bitmap.c             |  2 ++
 block/io.c                       |  7 +++++++
 include/block/block_int-common.h | 14 +++++++++++++-
 qemu-img.c                       |  4 +++-
 8 files changed, 31 insertions(+), 2 deletions(-)

Comments

Emanuele Giuseppe Esposito Nov. 21, 2022, 3:02 p.m. UTC | #1
Ok, as I expected simple changes in a previous based-on serie provoke a
cascade of changes that inevitably affect these patches too.

While I strongly suggest to have an initial look at these patches
because it gives an idea on what am I trying to accomplish, I would not
go looking at nitpicks and trivial errors that came up from the based-on
series (ie "just as in the previous serie, fix this").

The order of the series is:
1. Still more coroutine and various fixes in block layer
2. Protect the block layer with a rwlock: part 1
3. Protect the block layer with a rwlock: part 2
4. Protect the block layer with a rwlock: part 3

Thank you,
Emanuele

Am 16/11/2022 um 14:53 schrieb Emanuele Giuseppe Esposito:
> Please read "Protect the block layer with a rwlock: part 1" for an additional
> introduction and aim of this series.
> 
> This second part aims to add the graph rdlock to the BlockDriver functions
> that already run in coroutine context and are classified as IO.
> Such functions will recursively traverse the BlockDriverState graph, therefore
> they need to be protected with the rdlock.
> 
> Based-on: <20221116134850.3051419-1-eesposit@redhat.com>
> 
> Thank you,
> Emanuele
> 
> Emanuele Giuseppe Esposito (6):
>   block: assert that bdrv_co_create is always called with graph rdlock
>     taken
>   block: assert that BlockDriver->bdrv_co_{amend/create} are called with
>     graph rdlock taken
>   block: assert that BlockDriver->bdrv_co_copy_range_{from/to} is always
>     called with graph rdlock taken
>   block/dirty-bitmap: assert that BlockDriver->bdrv_co_*_dirty_bitmap
>     are always called with graph rdlock taken
>   block/io: assert that BlockDriver->bdrv_co_*_snapshot_* are always
>     called with graph rdlock taken
>   block: assert that BlockDriver->bdrv_co_delete_file is always called
>     with graph rdlock taken
> 
>  block.c                          |  2 ++
>  block/amend.c                    |  1 +
>  block/block-backend.c            |  2 ++
>  block/create.c                   |  1 +
>  block/dirty-bitmap.c             |  2 ++
>  block/io.c                       |  7 +++++++
>  include/block/block_int-common.h | 14 +++++++++++++-
>  qemu-img.c                       |  4 +++-
>  8 files changed, 31 insertions(+), 2 deletions(-)
>