On Wed, May 19, 2021 at 4:29 PM Peter Lieven wrote:
>
> Signed-off-by: Peter Lieven
> ---
> block/rbd.c | 18 +++---
> 1 file changed, 7 insertions(+), 11 deletions(-)
>
> diff --git a/block/rbd.c b/block/rbd.c
> index 6b1cbe1d75..b4caea4f1b 100644
> --- a/block/rbd.c
> +++ b/block/rbd.c
> @@ -90,6 +90,7 @@ typedef struct BDRVRBDState {
> char *snap;
> char *namespace;
> uint64_t image_size;
> +uint64_t object_size;
> } BDRVRBDState;
>
> static int qemu_rbd_connect(rados_t *cluster, rados_ioctx_t *io_ctx,
> @@ -675,6 +676,7 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict
> *options, int flags,
> const QDictEntry *e;
> Error *local_err = NULL;
> char *keypairs, *secretid;
> +rbd_image_info_t info;
> int r;
>
> keypairs = g_strdup(qdict_get_try_str(options, "=keyvalue-pairs"));
> @@ -739,13 +741,15 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict
> *options, int flags,
> goto failed_open;
> }
>
> -r = rbd_get_size(s->image, >image_size);
> +r = rbd_stat(s->image, , sizeof(info));
> if (r < 0) {
> -error_setg_errno(errp, -r, "error getting image size from %s",
> +error_setg_errno(errp, -r, "error getting image info from %s",
> s->image_name);
> rbd_close(s->image);
> goto failed_open;
> }
> +s->image_size = info.size;
> +s->object_size = info.obj_size;
>
> /* If we are using an rbd snapshot, we must be r/o, otherwise
> * leave as-is */
> @@ -957,15 +961,7 @@ static BlockAIOCB *qemu_rbd_aio_flush(BlockDriverState
> *bs,
> static int qemu_rbd_getinfo(BlockDriverState *bs, BlockDriverInfo *bdi)
> {
> BDRVRBDState *s = bs->opaque;
> -rbd_image_info_t info;
> -int r;
> -
> -r = rbd_stat(s->image, , sizeof(info));
> -if (r < 0) {
> -return r;
> -}
> -
> -bdi->cluster_size = info.obj_size;
> +bdi->cluster_size = s->object_size;
> return 0;
> }
>
> --
> 2.17.1
>
>
>
Reviewed-by: Ilya Dryomov
Thanks,
Ilya