Message ID | 20210519142359.23083-3-pl@kamp.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block/rbd: migrate to coroutines and add write zeroes support | expand |
On Wed, May 19, 2021 at 4:29 PM Peter Lieven <pl@kamp.de> wrote: > > Signed-off-by: Peter Lieven <pl@kamp.de> > --- > 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, &s->image_size); > + r = rbd_stat(s->image, &info, 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, &info, 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 <idryomov@gmail.com> Thanks, Ilya
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, &s->image_size); + r = rbd_stat(s->image, &info, 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, &info, sizeof(info)); - if (r < 0) { - return r; - } - - bdi->cluster_size = info.obj_size; + bdi->cluster_size = s->object_size; return 0; }
Signed-off-by: Peter Lieven <pl@kamp.de> --- block/rbd.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-)