From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53651) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xz4Z4-00062o-HM for qemu-devel@nongnu.org; Thu, 11 Dec 2014 09:18:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xz4Yz-0001ve-9X for qemu-devel@nongnu.org; Thu, 11 Dec 2014 09:17:58 -0500 Received: from mailhub.sw.ru ([195.214.232.25]:30200 helo=relay.sw.ru) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xz4Yy-0001vZ-Tv for qemu-devel@nongnu.org; Thu, 11 Dec 2014 09:17:53 -0500 From: Vladimir Sementsov-Ogievskiy Date: Thu, 11 Dec 2014 17:17:35 +0300 Message-Id: <1418307457-25996-8-git-send-email-vsementsov@parallels.com> In-Reply-To: <1418307457-25996-1-git-send-email-vsementsov@parallels.com> References: <1418307457-25996-1-git-send-email-vsementsov@parallels.com> Subject: [Qemu-devel] [PATCH 7/9] block-migration: remove not needed iothread lock List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, den@openvz.org, vsementsov@parallels.com, jsnow@redhat.com, stefanha@redhat.com Instead of locking iothread, we can just swap these calls. So, if some write to our range occures before resetting the bitmap, then it will get into subsequent aio read, becouse it occures, in any case, after resetting the bitmap. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block-migration.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/block-migration.c b/block-migration.c index d0c825f..908a66d 100644 --- a/block-migration.c +++ b/block-migration.c @@ -315,13 +315,11 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds) block_mig_state.submitted++; blk_mig_unlock(); - qemu_mutex_lock_iothread(); + bdrv_reset_dirty_bitmap(bs, bmds->dirty_bitmap, cur_sector, nr_sectors); + blk->aiocb = bdrv_aio_readv(bs, cur_sector, &blk->qiov, nr_sectors, blk_mig_read_cb, blk); - bdrv_reset_dirty_bitmap(bs, bmds->dirty_bitmap, cur_sector, nr_sectors); - qemu_mutex_unlock_iothread(); - bmds->cur_sector = cur_sector + nr_sectors; return (bmds->cur_sector >= total_sectors); } -- 1.9.1