All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH QEMU 2.5 v4 0/10] dataplane snapshot fixes + aio_poll fixes
@ 2015-11-03 14:12 Denis V. Lunev
  2015-11-03 14:12 ` [Qemu-devel] [PATCH 01/10] migration: add missed aio_context_acquire for state writing/reading Denis V. Lunev
                   ` (9 more replies)
  0 siblings, 10 replies; 24+ messages in thread
From: Denis V. Lunev @ 2015-11-03 14:12 UTC (permalink / raw)
  Cc: Denis V. Lunev, Paolo Bonzini, qemu-devel, Stefan Hajnoczi,
	qemu-stable

with test
    while /bin/true ; do
        virsh snapshot-create rhel7
        sleep 10
        virsh snapshot-delete rhel7 --current
    done
with enabled iothreads on a running VM leads to a lot of troubles: hangs,
asserts, errors.

Anyway, I think that the construction like
    assert(aio_context_is_locked(aio_context));
should be widely used to ensure proper locking.

Patches 1-5 must be committed into QEMU 2.5. The rest is to be discussed
and could be taken later. Though they are safe enough except (some) places
where guard around bdrv_drain is necessary.

Changes from v3:
- more places found
- new aio_poll concept, see patch 10

Changes from v2:
- droppped patch 5 as already merged
- changed locking scheme in patch 4 by suggestion of Juan

Changes from v1:
- aio-context locking added
- comment is rewritten

Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Stefan Hajnoczi <stefanha@redhat.com>
CC: Paolo Bonzini <pbonzini@redhat.com>

Denis V. Lunev (9):
  migration: add missed aio_context_acquire for state writing/reading
  block: add missed aio_context_acquire around bdrv_set_aio_context
  migration: added missed aio_context_acquire around
    bdrv_snapshot_delete
  block: guard bdrv_drain in bdrv_close with aio_context_acquire
  io: guard aio_poll with aio_context_acquire
  block: call aio_context_acquire in qemu_img/nbd/io
  fifolock: create rfifolock_is_owner helper
  aio_context: create aio_context_is_owner helper
  aio: change aio_poll constraints

Stefan Hajnoczi (1):
  blockdev: acquire AioContext in hmp_commit()

 aio-posix.c              | 11 +----------
 aio-win32.c              |  9 +--------
 async.c                  |  5 +++++
 block.c                  | 10 +++++++++-
 block/block-backend.c    |  3 +++
 block/curl.c             |  3 +++
 block/io.c               | 11 +++++++++++
 block/iscsi.c            |  2 ++
 block/nfs.c              |  5 +++++
 block/qed-table.c        | 20 ++++++++++++++++----
 block/sheepdog.c         |  2 ++
 blockdev.c               | 12 +++++++++++-
 blockjob.c               |  6 ++++++
 include/block/aio.h      |  5 +++++
 include/qemu/rfifolock.h |  1 +
 migration/savevm.c       | 28 +++++++++++++++++++++++++---
 qemu-img.c               |  2 ++
 qemu-io-cmds.c           |  6 +++++-
 qemu-io.c                |  1 +
 qemu-nbd.c               |  1 +
 tests/test-aio.c         | 11 +++++++++++
 tests/test-thread-pool.c | 15 +++++++++++++++
 util/rfifolock.c         | 12 +++++++++---
 23 files changed, 150 insertions(+), 31 deletions(-)

-- 
2.5.0

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

end of thread, other threads:[~2015-11-04 13:52 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-03 14:12 [Qemu-devel] [PATCH QEMU 2.5 v4 0/10] dataplane snapshot fixes + aio_poll fixes Denis V. Lunev
2015-11-03 14:12 ` [Qemu-devel] [PATCH 01/10] migration: add missed aio_context_acquire for state writing/reading Denis V. Lunev
2015-11-03 14:12 ` [Qemu-devel] [PATCH 02/10] block: add missed aio_context_acquire around bdrv_set_aio_context Denis V. Lunev
2015-11-03 14:12 ` [Qemu-devel] [PATCH 03/10] migration: added missed aio_context_acquire around bdrv_snapshot_delete Denis V. Lunev
2015-11-03 14:51   ` Juan Quintela
2015-11-04  7:32     ` [Qemu-devel] [RFC PATCH 1/1] dataplane: alternative approach to locking Denis V. Lunev
2015-11-04  9:49       ` Juan Quintela
2015-11-04 11:12         ` Denis V. Lunev
2015-11-04 12:03           ` Juan Quintela
2015-11-04 12:07             ` Denis V. Lunev
2015-11-04 11:31         ` [Qemu-devel] [PATCH RFC 1/2] snapshot: create helper to test that block drivers supports snapshots Denis V. Lunev
2015-11-04 11:31           ` [Qemu-devel] [PATCH RFC 2/2] snapshot: create bdrv_snapshot_all_del_snapshot helper Denis V. Lunev
2015-11-04 12:10             ` Juan Quintela
2015-11-04 12:07           ` [Qemu-devel] [PATCH RFC 1/2] snapshot: create helper to test that block drivers supports snapshots Juan Quintela
2015-11-04 13:50             ` Stefan Hajnoczi
2015-11-04 13:52           ` Stefan Hajnoczi
2015-11-03 14:12 ` [Qemu-devel] [PATCH 04/10] blockdev: acquire AioContext in hmp_commit() Denis V. Lunev
2015-11-03 14:38   ` Denis V. Lunev
2015-11-03 14:12 ` [Qemu-devel] [PATCH 05/10] block: guard bdrv_drain in bdrv_close with aio_context_acquire Denis V. Lunev
2015-11-03 14:12 ` [Qemu-devel] [PATCH 06/10] io: guard aio_poll " Denis V. Lunev
2015-11-03 14:12 ` [Qemu-devel] [PATCH 07/10] block: call aio_context_acquire in qemu_img/nbd/io Denis V. Lunev
2015-11-03 14:12 ` [Qemu-devel] [PATCH 08/10] fifolock: create rfifolock_is_owner helper Denis V. Lunev
2015-11-03 14:12 ` [Qemu-devel] [PATCH 09/10] aio_context: create aio_context_is_owner helper Denis V. Lunev
2015-11-03 14:12 ` [Qemu-devel] [PATCH 10/10] aio: change aio_poll constraints Denis V. Lunev

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.