qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Denis V. Lunev" <den@openvz.org>
Cc: "Denis V. Lunev" <den@openvz.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-stable@nongnu.org
Subject: [Qemu-devel] [PATCH QEMU 2.5 v4 0/10] dataplane snapshot fixes + aio_poll fixes
Date: Tue,  3 Nov 2015 17:12:03 +0300	[thread overview]
Message-ID: <1446559933-28965-1-git-send-email-den@openvz.org> (raw)

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

             reply	other threads:[~2015-11-03 14:12 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-03 14:12 Denis V. Lunev [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1446559933-28965-1-git-send-email-den@openvz.org \
    --to=den@openvz.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-stable@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).