[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 07/11] block: optimization blk_pwrite_compressed
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH 07/11] block: optimization blk_pwrite_compressed() |
Date: |
Tue, 28 Jun 2016 13:47:07 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 31.05.2016 um 11:15 hat Denis V. Lunev geschrieben:
> From: Pavel Butsykin <address@hidden>
>
> For bdrv_pwrite_compressed() it looks like most of the code creating coroutine
> is duplicated in blk_prw(). So we can just add a
> flag(BDRV_REQ_WRITE_COMPRESSED)
> and use the blk_prw() as a generic one.
>
> Signed-off-by: Pavel Butsykin <address@hidden>
> Signed-off-by: Denis V. Lunev <address@hidden>
> CC: Jeff Cody <address@hidden>
> CC: Markus Armbruster <address@hidden>
> CC: Eric Blake <address@hidden>
> CC: John Snow <address@hidden>
> CC: Stefan Hajnoczi <address@hidden>
> CC: Kevin Wolf <address@hidden>
Oh, so you already do use a flag. Nice. :-)
> diff --git a/block/block-backend.c b/block/block-backend.c
> index 3c1fc50..9e1c793 100644
> --- a/block/block-backend.c
> +++ b/block/block-backend.c
> @@ -785,7 +785,11 @@ int coroutine_fn blk_co_pwritev(BlockBackend *blk,
> int64_t offset,
> flags |= BDRV_REQ_FUA;
> }
>
> - return bdrv_co_pwritev(blk_bs(blk), offset, bytes, qiov, flags);
> + if (flags & BDRV_REQ_WRITE_COMPRESSED) {
> + return bdrv_co_pwritev_compressed(blk_bs(blk), offset, bytes, qiov);
> + } else {
> + return bdrv_co_pwritev(blk_bs(blk), offset, bytes, qiov, flags);
> + }
> }
If you move the processing of the flag inside bdrv_co_pwritev(), where I
think it belongs anyway, you could use the flag from the start (by going
through bdrv_prwv_co()) instead of temporarily introducing your own
coroutine wrapper. I think that would make the initial conversion
patches quite a bit simpler.
Kevin