From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33892) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XW5Vr-0007gR-4B for qemu-devel@nongnu.org; Mon, 22 Sep 2014 11:26:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XW5Vk-00061l-VT for qemu-devel@nongnu.org; Mon, 22 Sep 2014 11:26:51 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39100) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XW5Vk-00060w-OD for qemu-devel@nongnu.org; Mon, 22 Sep 2014 11:26:44 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s8MFQdK9011996 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Mon, 22 Sep 2014 11:26:39 -0400 Message-ID: <54203F91.9070001@redhat.com> Date: Mon, 22 Sep 2014 17:26:09 +0200 From: Max Reitz MIME-Version: 1.0 References: <1411399425-23430-1-git-send-email-mreitz@redhat.com> <1411399425-23430-3-git-send-email-mreitz@redhat.com> In-Reply-To: <1411399425-23430-3-git-send-email-mreitz@redhat.com> Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 2/2] raw-posix: raw_co_get_block_status() return value List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Paolo Bonzini , Stefan Hajnoczi On 22.09.2014 17:23, Max Reitz wrote: > Instead of generating the full return value thrice in try_fiemap(), > try_seek_hole() and as a fall-back in raw_co_get_block_status() itself, > generate the value only in raw_co_get_block_status(). > > Suggested-by: Kevin Wolf > Signed-off-by: Max Reitz > --- > block/raw-posix.c | 20 ++++++++++---------- > 1 file changed, 10 insertions(+), 10 deletions(-) > > diff --git a/block/raw-posix.c b/block/raw-posix.c > index de4e3f3..7e1cc02 100644 > --- a/block/raw-posix.c > +++ b/block/raw-posix.c > @@ -1455,12 +1455,12 @@ out: > return result; > } > > -static int64_t try_fiemap(BlockDriverState *bs, off_t start, off_t *data, > +static int try_fiemap(BlockDriverState *bs, off_t start, off_t *data, > off_t *hole, int nb_sectors, int *pnum) Self-NACK, I always love to see alignment issues only after I already sent the series... Max > { > #ifdef CONFIG_FIEMAP > BDRVRawState *s = bs->opaque; > - int64_t ret = BDRV_BLOCK_DATA | BDRV_BLOCK_OFFSET_VALID | start; > + int ret = 0; > struct { > struct fiemap fm; > struct fiemap_extent fe; > @@ -1501,7 +1501,7 @@ static int64_t try_fiemap(BlockDriverState *bs, off_t start, off_t *data, > #endif > } > > -static int64_t try_seek_hole(BlockDriverState *bs, off_t start, off_t *data, > +static int try_seek_hole(BlockDriverState *bs, off_t start, off_t *data, > off_t *hole, int *pnum) > { > #if defined SEEK_HOLE && defined SEEK_DATA > @@ -1526,7 +1526,7 @@ static int64_t try_seek_hole(BlockDriverState *bs, off_t start, off_t *data, > } > } > > - return BDRV_BLOCK_DATA | BDRV_BLOCK_OFFSET_VALID | start; > + return 0; > #else > return -ENOTSUP; > #endif > @@ -1552,7 +1552,7 @@ static int64_t coroutine_fn raw_co_get_block_status(BlockDriverState *bs, > int nb_sectors, int *pnum) > { > off_t start, data = 0, hole = 0; > - int64_t ret; > + int ret; > > ret = fd_open(bs); > if (ret < 0) { > @@ -1572,21 +1572,21 @@ static int64_t coroutine_fn raw_co_get_block_status(BlockDriverState *bs, > /* Assume everything is allocated. */ > data = 0; > hole = start + nb_sectors * BDRV_SECTOR_SIZE; > - ret = BDRV_BLOCK_DATA | BDRV_BLOCK_OFFSET_VALID | start; > + ret = 0; > } > } > > + assert(ret >= 0); > + > if (data <= start) { > /* On a data extent, compute sectors to the end of the extent. */ > *pnum = MIN(nb_sectors, (hole - start) / BDRV_SECTOR_SIZE); > + return ret | BDRV_BLOCK_DATA | BDRV_BLOCK_OFFSET_VALID | start; > } else { > /* On a hole, compute sectors to the beginning of the next extent. */ > *pnum = MIN(nb_sectors, (data - start) / BDRV_SECTOR_SIZE); > - ret &= ~BDRV_BLOCK_DATA; > - ret |= BDRV_BLOCK_ZERO; > + return ret | BDRV_BLOCK_ZERO | BDRV_BLOCK_OFFSET_VALID | start; > } > - > - return ret; > } > > static coroutine_fn BlockDriverAIOCB *raw_aio_discard(BlockDriverState *bs,