As more and more features are added to RBD volumes we will need to call this method more often. By moving it into a internal function we can re-use code inside the storage backend. Signed-off-by: Wido den Hollander <wido@xxxxxxxxx> --- src/storage/storage_backend_rbd.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backend_rbd.c index 5d73370..5f2469f 100644 --- a/src/storage/storage_backend_rbd.c +++ b/src/storage/storage_backend_rbd.c @@ -280,6 +280,24 @@ virStorageBackendRBDCloseRADOSConn(virStorageBackendRBDStatePtr ptr) } static int +volStorageBackendRBDGetFeatures(rbd_image_t image, + const char *volname, + uint64_t *features) +{ + int r, ret = -1; + + if ((r = rbd_get_features(image, features)) < 0) { + virReportSystemError(-r, _("failed to get the features of RBD image " + "%s"), volname); + goto cleanup; + } + ret = 0; + + cleanup: + return ret; +} + +static int volStorageBackendRBDRefreshVolInfo(virStorageVolDefPtr vol, virStoragePoolObjPtr pool, virStorageBackendRBDStatePtr ptr) @@ -685,11 +703,8 @@ virStorageBackendRBDImageInfo(rbd_image_t image, goto cleanup; } - if ((r = rbd_get_features(image, features)) < 0) { - virReportSystemError(-r, _("failed to get the features of RBD image %s"), - volname); + if (volStorageBackendRBDGetFeatures(image, volname, features) < 0) goto cleanup; - } if ((r = rbd_get_stripe_unit(image, stripe_unit)) < 0) { virReportSystemError(-r, _("failed to get the stripe unit of RBD image %s"), -- 1.9.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list