From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53083) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V3nzJ-0005GX-IE for qemu-devel@nongnu.org; Mon, 29 Jul 2013 09:59:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V3nzD-0002yG-Ik for qemu-devel@nongnu.org; Mon, 29 Jul 2013 09:59:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:13614) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V3nzD-0002wO-0H for qemu-devel@nongnu.org; Mon, 29 Jul 2013 09:59:43 -0400 Message-ID: <51F67535.8030404@redhat.com> Date: Mon, 29 Jul 2013 15:59:17 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1374762197-7261-1-git-send-email-pbonzini@redhat.com> <1374762197-7261-7-git-send-email-pbonzini@redhat.com> <20130729133407.GH10467@dhcp-200-207.str.redhat.com> In-Reply-To: <20130729133407.GH10467@dhcp-200-207.str.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 06/19] block: remove bdrv_is_allocated_above/bdrv_co_is_allocated_above distinction List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: pl@kamp.de, qemu-devel@nongnu.org, stefanha@redhat.com Il 29/07/2013 15:34, Kevin Wolf ha scritto: > Am 25.07.2013 um 16:23 hat Paolo Bonzini geschrieben: >> Now that bdrv_is_allocated detects coroutine context, the two can >> use the same code. >> >> Reviewed-by: Eric Blake >> Signed-off-by: Paolo Bonzini >> --- >> block.c | 46 ++++------------------------------------------ >> block/commit.c | 6 +++--- >> block/mirror.c | 4 ++-- >> block/stream.c | 4 ++-- >> include/block/block.h | 4 ---- >> 5 files changed, 11 insertions(+), 53 deletions(-) >> >> diff --git a/block.c b/block.c >> index dd4c570..1ee1d93 100644 >> --- a/block.c >> +++ b/block.c >> @@ -3058,10 +3058,10 @@ int bdrv_is_allocated(BlockDriverState *bs, int64_t sector_num, int nb_sectors, >> * allocated/unallocated state. >> * >> */ >> -int coroutine_fn bdrv_co_is_allocated_above(BlockDriverState *top, >> - BlockDriverState *base, >> - int64_t sector_num, >> - int nb_sectors, int *pnum) >> +int coroutine_fn bdrv_is_allocated_above(BlockDriverState *top, >> + BlockDriverState *base, >> + int64_t sector_num, >> + int nb_sectors, int *pnum) > > This is no longer a coroutine_fn. I'm always confused about must-yield vs. may-yield. :( > However, if this was the only reason for making bdrv_is_allocated() a > hybrid function, it may be easier to simply let the only caller > (img_compare in qemu-img) run in a coroutine and drop the synchronous > version entirely, keeping only a coroutine_fn. The reason is to avoid having the same (IMHO pretty gratuitous) distinction in get_block_status. "qemu-img map" will also add another synchronous user of get_block_status. If we want to keep only the coroutine_fn, we should make all of qemu-img run in a coroutine. Paolo