From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54061) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZtcK3-0008Mj-Kt for qemu-devel@nongnu.org; Tue, 03 Nov 2015 09:12:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZtcK2-0007WZ-K1 for qemu-devel@nongnu.org; Tue, 03 Nov 2015 09:12:27 -0500 From: "Denis V. Lunev" Date: Tue, 3 Nov 2015 17:12:03 +0300 Message-Id: <1446559933-28965-1-git-send-email-den@openvz.org> Subject: [Qemu-devel] [PATCH QEMU 2.5 v4 0/10] dataplane snapshot fixes + aio_poll fixes List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Denis V. Lunev" , Paolo Bonzini , qemu-devel@nongnu.org, Stefan Hajnoczi , qemu-stable@nongnu.org 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 CC: Stefan Hajnoczi CC: Paolo Bonzini 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