On Wed, May 19, 2021 at 4:26 PM Peter Lieven wrote:
>
> librbd supports 1 byte alignment for all aio operations.
>
> Currently, there is no API call to query limits from the ceph backend.
> So drop the bdrv_refresh_limits completely until there is such an API call.
>
> Signed-off-by: Peter Lieven
> ---
> block/rbd.c | 9 -
> 1 file changed, 9 deletions(-)
>
> diff --git a/block/rbd.c b/block/rbd.c
> index ee13f08a74..368a674aa0 100644
> --- a/block/rbd.c
> +++ b/block/rbd.c
> @@ -228,14 +228,6 @@ done:
> return;
> }
>
> -
> -static void qemu_rbd_refresh_limits(BlockDriverState *bs, Error **errp)
> -{
> -/* XXX Does RBD support AIO on less than 512-byte alignment? */
> -bs->bl.request_alignment = 512;
> -}
> -
> -
> static int qemu_rbd_set_auth(rados_t cluster, BlockdevOptionsRbd *opts,
> Error **errp)
> {
> @@ -1128,7 +1120,6 @@ static BlockDriver bdrv_rbd = {
> .format_name= "rbd",
> .instance_size = sizeof(BDRVRBDState),
> .bdrv_parse_filename= qemu_rbd_parse_filename,
> -.bdrv_refresh_limits= qemu_rbd_refresh_limits,
> .bdrv_file_open = qemu_rbd_open,
> .bdrv_close = qemu_rbd_close,
> .bdrv_reopen_prepare= qemu_rbd_reopen_prepare,
> --
> 2.17.1
>
>
>
librbd does support 1-byte-aligned I/O (with the caveat that those
code paths are probably not very well tested). Regardless, I think
it is better to do read-modify-write and similar handling in librbd
than in QEMU.
Reviewed-by: Ilya Dryomov
Thanks,
Ilya