From: Jason Dillaman Date: Fri, 10 Apr 2015 17:59:28 +0000 (-0400) Subject: cls_rbd_client: add object_map_save helper method X-Git-Tag: v9.0.1~149^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=24c923e22e14c6f24206cdc07a5f2a79bd4b607d;p=ceph.git cls_rbd_client: add object_map_save helper method Signed-off-by: Jason Dillaman --- diff --git a/src/cls/rbd/cls_rbd_client.cc b/src/cls/rbd/cls_rbd_client.cc index c75d583d62cf..12a2597eeccd 100644 --- a/src/cls/rbd/cls_rbd_client.cc +++ b/src/cls/rbd/cls_rbd_client.cc @@ -731,6 +731,17 @@ namespace librbd { return 0; } + void object_map_save(librados::ObjectWriteOperation *rados_op, + const ceph::BitVector<2> &object_map) + { + ceph::BitVector<2> object_map_copy(object_map); + object_map_copy.set_crc_enabled(false); + + bufferlist in; + ::encode(object_map_copy, in); + rados_op->exec("rbd", "object_map_save", in); + } + void object_map_resize(librados::ObjectWriteOperation *rados_op, uint64_t object_count, uint8_t default_state) { diff --git a/src/cls/rbd/cls_rbd_client.h b/src/cls/rbd/cls_rbd_client.h index 9ad513dab7c8..551582f0d24d 100644 --- a/src/cls/rbd/cls_rbd_client.h +++ b/src/cls/rbd/cls_rbd_client.h @@ -122,6 +122,8 @@ namespace librbd { // operations on the rbd_object_map.$image_id object int object_map_load(librados::IoCtx *ioctx, const std::string &oid, ceph::BitVector<2> *object_map); + void object_map_save(librados::ObjectWriteOperation *rados_op, + const ceph::BitVector<2> &object_map); void object_map_resize(librados::ObjectWriteOperation *rados_op, uint64_t object_count, uint8_t default_state); void object_map_update(librados::ObjectWriteOperation *rados_op,