[PATCH v2 0/3] block: protect BlockBackend->queued_requests with a lock

Stefan Hajnoczi posted 3 patches 1 year, 1 month ago
block/block-backend.c | 37 ++++++++++++++++++++++++++-----------
1 file changed, 26 insertions(+), 11 deletions(-)
[PATCH v2 0/3] block: protect BlockBackend->queued_requests with a lock
Posted by Stefan Hajnoczi 1 year, 1 month ago
v2:
- Use qatomic_fetch_inc/dec() for readability in Patch 1 [Hanna]

QEMU block layer multi-queue support involves running I/O requests from
multiple threads. Shared state must be protected somehow to avoid thread-safety
issues.

The BlockBackend->queued_requests CoQueue is accessed without a lock and will
likely be corrupted when multiple threads queue requests at the same time.

This patch series make BlockBackend->queued_requests thread-safe.

Stefan Hajnoczi (3):
  block: make BlockBackend->quiesce_counter atomic
  block: make BlockBackend->disable_request_queuing atomic
  block: protect BlockBackend->queued_requests with a lock

 block/block-backend.c | 37 ++++++++++++++++++++++++++-----------
 1 file changed, 26 insertions(+), 11 deletions(-)

-- 
2.39.2
Re: [PATCH v2 0/3] block: protect BlockBackend->queued_requests with a lock
Posted by Kevin Wolf 1 year, 1 month ago
Am 07.03.2023 um 22:04 hat Stefan Hajnoczi geschrieben:
> v2:
> - Use qatomic_fetch_inc/dec() for readability in Patch 1 [Hanna]
> 
> QEMU block layer multi-queue support involves running I/O requests from
> multiple threads. Shared state must be protected somehow to avoid thread-safety
> issues.
> 
> The BlockBackend->queued_requests CoQueue is accessed without a lock and will
> likely be corrupted when multiple threads queue requests at the same time.
> 
> This patch series make BlockBackend->queued_requests thread-safe.

Thanks, applied to the block-next branch.

Kevin