From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44262) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bHrU4-0007Zt-70 for qemu-devel@nongnu.org; Tue, 28 Jun 2016 07:47:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bHrTz-0000D3-Iy for qemu-devel@nongnu.org; Tue, 28 Jun 2016 07:47:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33693) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bHrTz-0000Cr-DJ for qemu-devel@nongnu.org; Tue, 28 Jun 2016 07:47:11 -0400 Date: Tue, 28 Jun 2016 13:47:07 +0200 From: Kevin Wolf Message-ID: <20160628114707.GE6800@noname.redhat.com> References: <1464686130-12265-1-git-send-email-den@openvz.org> <1464686130-12265-8-git-send-email-den@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1464686130-12265-8-git-send-email-den@openvz.org> Subject: Re: [Qemu-devel] [PATCH 07/11] block: optimization blk_pwrite_compressed() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Denis V. Lunev" Cc: qemu-devel@nongnu.org, Pavel Butsykin , Jeff Cody , Markus Armbruster , Eric Blake , John Snow , Stefan Hajnoczi Am 31.05.2016 um 11:15 hat Denis V. Lunev geschrieben: > From: Pavel Butsykin > > 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 > Signed-off-by: Denis V. Lunev > CC: Jeff Cody > CC: Markus Armbruster > CC: Eric Blake > CC: John Snow > CC: Stefan Hajnoczi > CC: Kevin Wolf 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