qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/5] blockdev: avoid acquiring AioContext lock twice at do_drive_backup and do_blockdev_backup
@ 2019-11-21 13:57 Sergio Lopez
  2019-11-21 13:57 ` [PATCH v4 1/5] blockdev: fix coding style issues in drive_backup_prepare Sergio Lopez
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Sergio Lopez @ 2019-11-21 13:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Sergio Lopez, Markus Armbruster, qemu-block,
	Max Reitz

do_drive_backup() acquires the AioContext lock of the corresponding
BlockDriverState. This is not a problem when it's called from
qmp_drive_backup(), but drive_backup_prepare() also acquires the lock
before calling it. The same things happens with do_blockdev_backup()
and blockdev_backup_prepare().

This patch series merges do_drive_backup() with drive_backup_prepare()
and do_blockdev_backup() with blockdev_backup_prepare(), and ensures
they're only getting called from a transaction context. This way,
there's a single code path for both transaction requests and qmp
commands, as suggested by Kevin Wolf.

We also take this opportunity to ensure we're honoring the context
acquisition semantics required by bdrv_try_set_aio_context, as
suggested by Max Reitz.

---
Changelog:

v4:
 - Unify patches 1-4 and 5-7 to avoid producing broken interim
   states. (thanks Max Reitz)
 - Include a fix for iotest 141. (thanks Kevin Wolf)

v3:
 - Rework the whole patch series to fix the issue by consolidating all
   operations in the transaction model. (thanks Kevin Wolf)

v2:
 - Honor bdrv_try_set_aio_context() context acquisition requirements
   (thanks Max Reitz).
 - Release the context at drive_backup_prepare() instead of avoiding
   re-acquiring it at do_drive_baclup(). (thanks Max Reitz)
 - Convert a single patch into a two-patch series.
---

Sergio Lopez (5):
  blockdev: fix coding style issues in drive_backup_prepare
  blockdev: unify qmp_drive_backup and drive-backup transaction paths
  blockdev: unify qmp_blockdev_backup and blockdev-backup transaction
    paths
  blockdev: honor bdrv_try_set_aio_context() context requirements
  iotests: fix 141 after qmp_drive_backup with transactions

 blockdev.c                 | 349 ++++++++++++++++++-------------------
 tests/qemu-iotests/141.out |   2 +
 2 files changed, 173 insertions(+), 178 deletions(-)

-- 
2.23.0



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2019-11-27 17:12 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-11-21 13:57 [PATCH v4 0/5] blockdev: avoid acquiring AioContext lock twice at do_drive_backup and do_blockdev_backup Sergio Lopez
2019-11-21 13:57 ` [PATCH v4 1/5] blockdev: fix coding style issues in drive_backup_prepare Sergio Lopez
2019-11-27 15:53   ` Max Reitz
2019-11-21 13:57 ` [PATCH v4 2/5] blockdev: unify qmp_drive_backup and drive-backup transaction paths Sergio Lopez
2019-11-27 16:37   ` Max Reitz
2019-11-21 13:57 ` [PATCH v4 3/5] blockdev: unify qmp_blockdev_backup and blockdev-backup " Sergio Lopez
2019-11-27 16:49   ` Max Reitz
2019-11-21 13:57 ` [PATCH v4 4/5] blockdev: honor bdrv_try_set_aio_context() context requirements Sergio Lopez
2019-11-27 17:10   ` Max Reitz
2019-11-21 13:57 ` [PATCH v4 5/5] iotests: fix 141 after qmp_drive_backup with transactions Sergio Lopez
2019-11-27 16:19   ` Max Reitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).