From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50413) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X1eEY-0004Vc-R2 for qemu-devel@nongnu.org; Mon, 30 Jun 2014 12:15:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X1eES-0000YA-4S for qemu-devel@nongnu.org; Mon, 30 Jun 2014 12:15:10 -0400 Received: from youngberry.canonical.com ([91.189.89.112]:60990) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X1eER-0000X7-Vk for qemu-devel@nongnu.org; Mon, 30 Jun 2014 12:15:04 -0400 Received: from mail-vc0-f175.google.com ([209.85.220.175]) by youngberry.canonical.com with esmtpsa (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1X1eER-0004By-AT for qemu-devel@nongnu.org; Mon, 30 Jun 2014 16:15:03 +0000 Received: by mail-vc0-f175.google.com with SMTP id hy4so7704524vcb.6 for ; Mon, 30 Jun 2014 09:15:02 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <53B18BF3.6020403@redhat.com> References: <1404143260-9368-1-git-send-email-ming.lei@canonical.com> <1404143260-9368-2-git-send-email-ming.lei@canonical.com> <53B18BF3.6020403@redhat.com> Date: Tue, 1 Jul 2014 00:15:02 +0800 Message-ID: From: Ming Lei Content-Type: text/plain; charset=UTF-8 Subject: Re: [Qemu-devel] [PATCH v1 1/3] block: block: introduce bdrv_io_plug() and bdrv_io_unplug() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: Kevin Wolf , Peter Maydell , Fam Zheng , "Michael S. Tsirkin" , qemu-devel@nongnu.org, Stefan Hajnoczi On Tue, Jul 1, 2014 at 12:10 AM, Paolo Bonzini wrote: > Il 30/06/2014 17:47, Ming Lei ha scritto: > >> From: Ming Lei >> >> This patch introduces these two APIs so that following >> patches can support queuing I/O requests and submitting them >> at batch for improving I/O performance. >> >> Signed-off-by: Ming Lei >> --- >> block.c | 22 ++++++++++++++++++++++ >> include/block/block.h | 3 +++ >> include/block/block_int.h | 4 ++++ >> 3 files changed, 29 insertions(+) >> >> diff --git a/block.c b/block.c >> index 217f523..2b4ec5b 100644 >> --- a/block.c >> +++ b/block.c >> @@ -1910,6 +1910,7 @@ void bdrv_drain_all(void) >> bool bs_busy; >> >> aio_context_acquire(aio_context); >> + bdrv_io_unplug(bs); >> bdrv_start_throttled_reqs(bs); >> bs_busy = bdrv_requests_pending(bs); >> bs_busy |= aio_poll(aio_context, bs_busy); >> @@ -5774,3 +5775,24 @@ bool bdrv_is_first_non_filter(BlockDriverState >> *candidate) >> >> return false; >> } >> + >> +void bdrv_io_plug(BlockDriverState *bs) >> +{ >> + BlockDriver *drv = bs->drv; >> + if (drv && drv->bdrv_io_plug) { >> + drv->bdrv_io_plug(bs); >> + } else if (bs->file) { >> + bdrv_io_plug(bs->file); >> + } >> +} >> + >> +int bdrv_io_unplug(BlockDriverState *bs) >> +{ >> + BlockDriver *drv = bs->drv; >> + if (drv && drv->bdrv_io_unplug) { >> + return drv->bdrv_io_unplug(bs); >> + } else if (bs->file) { >> + return bdrv_io_unplug(bs->file); >> + } >> + return 0; > > > I think this should return void (and that's how you use it in patch 3 > indeed). If you fix this you can add my Reviewed-by tag. It can be used to trace how many IO are submitted at batch, otherwise device can't know this information at all. Thanks, -- Ming Lei