On Tue, Jul 1, 2014 at 12:10 AM, Paolo Bonzini <pbonz...@redhat.com> wrote: > Il 30/06/2014 17:47, Ming Lei ha scritto: > >> From: Ming Lei <tom.leim...@gmail.com> >> >> 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 <ming....@canonical.com> >> --- >> 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