Message ID | 20210505075001.45041-9-vsementsov@virtuozzo.com |
---|---|
State | New |
Headers | show |
Series | 64bit block-layer: part II | expand |
On Wed, May 05, 2021 at 10:49:58AM +0300, Vladimir Sementsov-Ogievskiy wrote: > Now, when all drivers are updated by previous commit, we can drop two s/Now, when/Now that/ > last limiters on write-zeroes path: INT_MAX in > bdrv_co_do_pwrite_zeroes() and bdrv_check_request32() in > bdrv_co_pwritev_part(). > > Now everything is prepared for implementing incredibly cool and fast > big-write-zeroes in NBD and qcow2. And any other driver which wants it > of course. I got a chuckle out of this incredibly cool description ;) > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > block/io.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/block/io.c b/block/io.c index 0648561b15..195b68b19e 100644 --- a/block/io.c +++ b/block/io.c @@ -1863,7 +1863,8 @@ static int coroutine_fn bdrv_co_do_pwrite_zeroes(BlockDriverState *bs, int head = 0; int tail = 0; - int64_t max_write_zeroes = MIN_NON_ZERO(bs->bl.max_pwrite_zeroes, INT_MAX); + int64_t max_write_zeroes = MIN_NON_ZERO(bs->bl.max_pwrite_zeroes, + INT64_MAX); int alignment = MAX(bs->bl.pwrite_zeroes_alignment, bs->bl.request_alignment); int max_transfer = MIN_NON_ZERO(bs->bl.max_transfer, MAX_BOUNCE_BUFFER); @@ -2239,7 +2240,11 @@ int coroutine_fn bdrv_co_pwritev_part(BdrvChild *child, return -ENOMEDIUM; } - ret = bdrv_check_request32(offset, bytes, qiov, qiov_offset); + if (flags & BDRV_REQ_ZERO_WRITE) { + ret = bdrv_check_qiov_request(offset, bytes, qiov, qiov_offset, NULL); + } else { + ret = bdrv_check_request32(offset, bytes, qiov, qiov_offset); + } if (ret < 0) { return ret; }
Now, when all drivers are updated by previous commit, we can drop two last limiters on write-zeroes path: INT_MAX in bdrv_co_do_pwrite_zeroes() and bdrv_check_request32() in bdrv_co_pwritev_part(). Now everything is prepared for implementing incredibly cool and fast big-write-zeroes in NBD and qcow2. And any other driver which wants it of course. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> --- block/io.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)