[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v6 14/20] sheepdog: Switch to .bdrv
From: |
Jeff Cody |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v6 14/20] sheepdog: Switch to .bdrv_co_block_status() |
Date: |
Tue, 2 Jan 2018 16:52:09 -0500 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Thu, Dec 07, 2017 at 02:30:30PM -0600, Eric Blake wrote:
> We are gradually moving away from sector-based interfaces, towards
> byte-based. Update the sheepdog driver accordingly.
>
> Signed-off-by: Eric Blake <address@hidden>
> Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
>
> ---
> v5: no change
> v4: update to interface tweak
> v3: no change
> v2: rebase to mapping flag
> ---
> block/sheepdog.c | 26 +++++++++++++-------------
> 1 file changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/block/sheepdog.c b/block/sheepdog.c
> index 696a71442a..0af8b07892 100644
> --- a/block/sheepdog.c
> +++ b/block/sheepdog.c
> @@ -2988,19 +2988,19 @@ static coroutine_fn int
> sd_co_pdiscard(BlockDriverState *bs, int64_t offset,
> return acb.ret;
> }
>
> -static coroutine_fn int64_t
> -sd_co_get_block_status(BlockDriverState *bs, int64_t sector_num, int
> nb_sectors,
> - int *pnum, BlockDriverState **file)
> +static coroutine_fn int
> +sd_co_block_status(BlockDriverState *bs, bool want_zero, int64_t offset,
> + int64_t bytes, int64_t *pnum, int64_t *map,
> + BlockDriverState **file)
> {
> BDRVSheepdogState *s = bs->opaque;
> SheepdogInode *inode = &s->inode;
> uint32_t object_size = (UINT32_C(1) << inode->block_size_shift);
> - uint64_t offset = sector_num * BDRV_SECTOR_SIZE;
> unsigned long start = offset / object_size,
> - end = DIV_ROUND_UP((sector_num + nb_sectors) *
> - BDRV_SECTOR_SIZE, object_size);
> + end = DIV_ROUND_UP(offset + bytes, object_size);
> unsigned long idx;
> - int64_t ret = BDRV_BLOCK_DATA | BDRV_BLOCK_OFFSET_VALID | offset;
> + *map = offset;
> + int ret = BDRV_BLOCK_DATA | BDRV_BLOCK_OFFSET_VALID;
>
> for (idx = start; idx < end; idx++) {
> if (inode->data_vdi_id[idx] == 0) {
> @@ -3017,9 +3017,9 @@ sd_co_get_block_status(BlockDriverState *bs, int64_t
> sector_num, int nb_sectors,
> }
> }
>
> - *pnum = (idx - start) * object_size / BDRV_SECTOR_SIZE;
> - if (*pnum > nb_sectors) {
> - *pnum = nb_sectors;
> + *pnum = (idx - start) * object_size;
> + if (*pnum > bytes) {
> + *pnum = bytes;
> }
> if (ret > 0 && ret & BDRV_BLOCK_OFFSET_VALID) {
> *file = bs;
> @@ -3097,7 +3097,7 @@ static BlockDriver bdrv_sheepdog = {
> .bdrv_co_writev = sd_co_writev,
> .bdrv_co_flush_to_disk = sd_co_flush_to_disk,
> .bdrv_co_pdiscard = sd_co_pdiscard,
> - .bdrv_co_get_block_status = sd_co_get_block_status,
> + .bdrv_co_block_status = sd_co_block_status,
>
> .bdrv_snapshot_create = sd_snapshot_create,
> .bdrv_snapshot_goto = sd_snapshot_goto,
> @@ -3133,7 +3133,7 @@ static BlockDriver bdrv_sheepdog_tcp = {
> .bdrv_co_writev = sd_co_writev,
> .bdrv_co_flush_to_disk = sd_co_flush_to_disk,
> .bdrv_co_pdiscard = sd_co_pdiscard,
> - .bdrv_co_get_block_status = sd_co_get_block_status,
> + .bdrv_co_block_status = sd_co_block_status,
>
> .bdrv_snapshot_create = sd_snapshot_create,
> .bdrv_snapshot_goto = sd_snapshot_goto,
> @@ -3169,7 +3169,7 @@ static BlockDriver bdrv_sheepdog_unix = {
> .bdrv_co_writev = sd_co_writev,
> .bdrv_co_flush_to_disk = sd_co_flush_to_disk,
> .bdrv_co_pdiscard = sd_co_pdiscard,
> - .bdrv_co_get_block_status = sd_co_get_block_status,
> + .bdrv_co_block_status = sd_co_block_status,
>
> .bdrv_snapshot_create = sd_snapshot_create,
> .bdrv_snapshot_goto = sd_snapshot_goto,
> --
> 2.14.3
>
>
Minor conflicts here with head, but straightforward to fix.
Reviewed-by: Jeff Cody <address@hidden>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-block] [Qemu-devel] [PATCH v6 14/20] sheepdog: Switch to .bdrv_co_block_status(),
Jeff Cody <=