[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 09/13] qed: Convert to bdrv_co_pwrite_zeroes(
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH v2 09/13] qed: Convert to bdrv_co_pwrite_zeroes() |
Date: |
Thu, 2 Jun 2016 13:16:47 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 01.06.2016 um 23:10 hat Eric Blake geschrieben:
> Another step on our continuing quest to switch to byte-based
> interfaces.
>
> Kill an abuse of the comma operator while at it (fortunately,
> the semantics were still right). Also, the test for requests
> not aligned to clusters should be applied always, not just
> when a backing file is present.
>
> Signed-off-by: Eric Blake <address@hidden>
> ---
> block/qed.c | 33 +++++++++++++++------------------
> 1 file changed, 15 insertions(+), 18 deletions(-)
>
> diff --git a/block/qed.c b/block/qed.c
> index 0ab5b40..45ec13d 100644
> --- a/block/qed.c
> +++ b/block/qed.c
> @@ -1419,7 +1419,7 @@ typedef struct {
> bool done;
> } QEDWriteZeroesCB;
>
> -static void coroutine_fn qed_co_write_zeroes_cb(void *opaque, int ret)
> +static void coroutine_fn qed_co_pwrite_zeroes_cb(void *opaque, int ret)
> {
> QEDWriteZeroesCB *cb = opaque;
>
> @@ -1430,10 +1430,10 @@ static void coroutine_fn qed_co_write_zeroes_cb(void
> *opaque, int ret)
> }
> }
>
> -static int coroutine_fn bdrv_qed_co_write_zeroes(BlockDriverState *bs,
> - int64_t sector_num,
> - int nb_sectors,
> - BdrvRequestFlags flags)
> +static int coroutine_fn bdrv_qed_co_pwrite_zeroes(BlockDriverState *bs,
> + int64_t offset,
> + int count,
> + BdrvRequestFlags flags)
> {
> BlockAIOCB *blockacb;
> BDRVQEDState *s = bs->opaque;
> @@ -1441,25 +1441,22 @@ static int coroutine_fn
> bdrv_qed_co_write_zeroes(BlockDriverState *bs,
> QEMUIOVector qiov;
> struct iovec iov;
>
> - /* Refuse if there are untouched backing file sectors */
> - if (bs->backing) {
> - if (qed_offset_into_cluster(s, sector_num * BDRV_SECTOR_SIZE) != 0) {
> - return -ENOTSUP;
> - }
> - if (qed_offset_into_cluster(s, nb_sectors * BDRV_SECTOR_SIZE) != 0) {
> - return -ENOTSUP;
> - }
> + /* Fall back if the request is not */
...aligned?
> + if (qed_offset_into_cluster(s, offset) ||
> + qed_offset_into_cluster(s, count)) {
> + return -ENOTSUP;
> }
This is obviously correct and almost as obviously suboptimal compared to
the original version (we need cluster alignment with a backing file, but
without a backing file, sector alignment would be enough).
But as this is QED, which is only supported for compatibility these
days, simpler if slightly suboptimal code is okay with me.
Kevin
- [Qemu-devel] [PATCH v2 02/13] block: Track write zero limits in bytes, (continued)
- [Qemu-devel] [PATCH v2 02/13] block: Track write zero limits in bytes, Eric Blake, 2016/06/01
- [Qemu-devel] [PATCH v2 03/13] block: Add .bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-devel] [PATCH v2 10/13] raw-posix: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-devel] [PATCH v2 07/13] blkreplay: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-devel] [PATCH v2 05/13] iscsi: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-devel] [PATCH v2 04/13] block: Switch bdrv_write_zeroes() to byte interface, Eric Blake, 2016/06/01
- [Qemu-devel] [PATCH v2 08/13] gluster: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-devel] [PATCH v2 09/13] qed: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- Re: [Qemu-devel] [PATCH v2 09/13] qed: Convert to bdrv_co_pwrite_zeroes(),
Kevin Wolf <=
- [Qemu-devel] [PATCH v2 13/13] block: Kill bdrv_co_write_zeroes(), Eric Blake, 2016/06/01
- [Qemu-devel] [PATCH v2 11/13] raw_bsd: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-devel] [PATCH v2 12/13] vmdk: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- Re: [Qemu-devel] [PATCH v2 00/13] Kill sector-based write_zeroes, Kevin Wolf, 2016/06/02