Message ID | 20200611162655.4538-3-vsementsov@virtuozzo.com |
---|---|
State | New |
Headers | show |
Series | nbd: reduce max_block restrictions | expand |
23.07.2020 23:32, Eric Blake wrote: > On 6/11/20 11:26 AM, Vladimir Sementsov-Ogievskiy wrote: >> The NBD spec was recently updated to clarify that max_block doesn't >> relate to NBD_CMD_WRITE_ZEROES with NBD_CMD_FLAG_FAST_ZERO (which >> mirrors Qemu flag BDRV_REQ_NO_FALLBACK). >> >> bs->bl.max_write_zero_fast is zero by default which means using >> max_pwrite_zeroes. Update nbd driver to allow larger requests with >> BDRV_REQ_NO_FALLBACK. >> >> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> >> --- >> block/nbd.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/block/nbd.c b/block/nbd.c >> index 4ac23c8f62..b0584cf68d 100644 >> --- a/block/nbd.c >> +++ b/block/nbd.c >> @@ -1956,6 +1956,7 @@ static void nbd_refresh_limits(BlockDriverState *bs, Error **errp) >> bs->bl.request_alignment = min; >> bs->bl.max_pdiscard = QEMU_ALIGN_DOWN(INT_MAX, min); >> + bs->bl.max_pwrite_zeroes_fast = bs->bl.max_pdiscard; >> bs->bl.max_pwrite_zeroes = max; > > Do we even need max_pwrite_zeroes_fast? Doesn't qemu behave correctly if we just blindly assign max_pdiscard and max_pwrite_zeroes to the same value near 2G? > Without BDRV_REQ_NO_FALLBACK, max_block is an actual limit for WRITE_ZERO.. So, in my understanding, it doesn't
diff --git a/block/nbd.c b/block/nbd.c index 4ac23c8f62..b0584cf68d 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -1956,6 +1956,7 @@ static void nbd_refresh_limits(BlockDriverState *bs, Error **errp) bs->bl.request_alignment = min; bs->bl.max_pdiscard = QEMU_ALIGN_DOWN(INT_MAX, min); + bs->bl.max_pwrite_zeroes_fast = bs->bl.max_pdiscard; bs->bl.max_pwrite_zeroes = max; bs->bl.max_transfer = max;
The NBD spec was recently updated to clarify that max_block doesn't relate to NBD_CMD_WRITE_ZEROES with NBD_CMD_FLAG_FAST_ZERO (which mirrors Qemu flag BDRV_REQ_NO_FALLBACK). bs->bl.max_write_zero_fast is zero by default which means using max_pwrite_zeroes. Update nbd driver to allow larger requests with BDRV_REQ_NO_FALLBACK. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> --- block/nbd.c | 1 + 1 file changed, 1 insertion(+)