From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45435) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z091z-0000Gq-RJ for qemu-devel@nongnu.org; Wed, 03 Jun 2015 09:48:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z091v-0001iP-O9 for qemu-devel@nongnu.org; Wed, 03 Jun 2015 09:48:31 -0400 Received: from e06smtp15.uk.ibm.com ([195.75.94.111]:44915) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z091v-0001hc-FX for qemu-devel@nongnu.org; Wed, 03 Jun 2015 09:48:27 -0400 Received: from /spool/local by e06smtp15.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 3 Jun 2015 14:48:25 +0100 From: Alexander Yarygin Date: Wed, 3 Jun 2015 16:46:14 +0300 Message-Id: <1433339175-12300-2-git-send-email-yarygin@linux.vnet.ibm.com> In-Reply-To: <1433339175-12300-1-git-send-email-yarygin@linux.vnet.ibm.com> References: <1433339175-12300-1-git-send-email-yarygin@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 1/2] block-backend: Introduce blk_drain() and replace blk_drain_all() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , qemu-block@nongnu.org, Alexander Yarygin , Ekaterina Tumanova , Christian Borntraeger , Stefan Hajnoczi , Cornelia Huck , Paolo Bonzini Each call of the virtio_blk_reset() function calls blk_drain_all(), which works for all existing BlockDriverStates, while only one BlockDriverState needs to be drained. This patch introduces the blk_drain() function and replaces blk_drain_all() on it in virtio_blk_reset(). Cc: Christian Borntraeger Cc: Cornelia Huck Cc: Kevin Wolf Cc: Paolo Bonzini Cc: Stefan Hajnoczi Signed-off-by: Alexander Yarygin --- block/block-backend.c | 5 +++++ hw/block/virtio-blk.c | 2 +- include/sysemu/block-backend.h | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/block/block-backend.c b/block/block-backend.c index 93e46f3..aee8a12 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -700,6 +700,11 @@ int blk_flush_all(void) return bdrv_flush_all(); } +void blk_drain(BlockBackend *blk) +{ + bdrv_drain(blk->bs); +} + void blk_drain_all(void) { bdrv_drain_all(); diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index e6afe97..abaca58 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -660,7 +660,7 @@ static void virtio_blk_reset(VirtIODevice *vdev) * This should cancel pending requests, but can't do nicely until there * are per-device request lists. */ - blk_drain_all(); + blk_drain(s->blk); blk_set_enable_write_cache(s->blk, s->original_wce); } diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h index b4a4d5e..8fc960f 100644 --- a/include/sysemu/block-backend.h +++ b/include/sysemu/block-backend.h @@ -118,6 +118,7 @@ int blk_co_discard(BlockBackend *blk, int64_t sector_num, int nb_sectors); int blk_co_flush(BlockBackend *blk); int blk_flush(BlockBackend *blk); int blk_flush_all(void); +void blk_drain(BlockBackend *blk); void blk_drain_all(void); BlockdevOnError blk_get_on_error(BlockBackend *blk, bool is_read); BlockErrorAction blk_get_error_action(BlockBackend *blk, bool is_read, -- 1.9.1