From: Mykola Golub Date: Wed, 31 Aug 2016 19:30:24 +0000 (+0300) Subject: cls/rbd: alow to call set_features asynchronously X-Git-Tag: v11.0.1~77^2~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=28e576e278f9cd00bb91d59cf8dc89ca3884516f;p=ceph.git cls/rbd: alow to call set_features asynchronously Signed-off-by: Mykola Golub --- diff --git a/src/cls/rbd/cls_rbd_client.cc b/src/cls/rbd/cls_rbd_client.cc index 3b499c9103d0..4a53acce9b17 100644 --- a/src/cls/rbd/cls_rbd_client.cc +++ b/src/cls/rbd/cls_rbd_client.cc @@ -198,15 +198,22 @@ namespace librbd { return 0; } + void set_features(librados::ObjectWriteOperation *op, uint64_t features, + uint64_t mask) + { + bufferlist bl; + ::encode(features, bl); + ::encode(mask, bl); + + op->exec("rbd", "set_features", bl); + } + int set_features(librados::IoCtx *ioctx, const std::string &oid, uint64_t features, uint64_t mask) { - bufferlist inbl; - ::encode(features, inbl); - ::encode(mask, inbl); - librados::ObjectWriteOperation op; - op.exec("rbd", "set_features", inbl); + set_features(&op, features, mask); + return ioctx->operate(oid, &op); } diff --git a/src/cls/rbd/cls_rbd_client.h b/src/cls/rbd/cls_rbd_client.h index 6969aba2a4f6..75634ce6013b 100644 --- a/src/cls/rbd/cls_rbd_client.h +++ b/src/cls/rbd/cls_rbd_client.h @@ -56,6 +56,8 @@ namespace librbd { const std::string &object_prefix); int get_features(librados::IoCtx *ioctx, const std::string &oid, snapid_t snap_id, uint64_t *features); + void set_features(librados::ObjectWriteOperation *op, uint64_t features, + uint64_t mask); int set_features(librados::IoCtx *ioctx, const std::string &oid, uint64_t features, uint64_t mask); int get_object_prefix(librados::IoCtx *ioctx, const std::string &oid,