From: Sage Weil Date: Mon, 19 Oct 2015 18:29:18 +0000 (-0400) Subject: os/ObjectStore: add bufferlist-based omap_setkeys() and omap_rmkeys() X-Git-Tag: v10.0.1~116^2~14 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6c50b335b6cc95c0f2a3c0cdafcb425a62d67d94;p=ceph.git os/ObjectStore: add bufferlist-based omap_setkeys() and omap_rmkeys() Often the caller has a bufferlist and not an STL map/set. Signed-off-by: Sage Weil --- diff --git a/src/os/ObjectStore.h b/src/os/ObjectStore.h index ec14dcd766c4..ba4c7d2852d1 100644 --- a/src/os/ObjectStore.h +++ b/src/os/ObjectStore.h @@ -1335,6 +1335,29 @@ public: } data.ops++; } + + /// Set keys on an oid omap (bufferlist variant). + void omap_setkeys( + coll_t cid, ///< [in] Collection containing oid + const ghobject_t &oid, ///< [in] Object to update + const bufferlist &attrset_bl ///< [in] Replacement keys and values + ) { + if (use_tbl) { + __u32 op = OP_OMAP_SETKEYS; + ::encode(op, tbl); + ::encode(cid, tbl); + ::encode(oid, tbl); + tbl.append(attrset_bl); + } else { + Op* _op = _get_next_op(); + _op->op = OP_OMAP_SETKEYS; + _op->cid = _get_coll_id(cid); + _op->oid = _get_object_id(oid); + data_bl.append(attrset_bl); + } + data.ops++; + } + /// Remove keys from oid omap void omap_rmkeys( coll_t cid, ///< [in] Collection containing oid @@ -1357,6 +1380,28 @@ public: data.ops++; } + /// Remove keys from oid omap + void omap_rmkeys( + coll_t cid, ///< [in] Collection containing oid + const ghobject_t &oid, ///< [in] Object from which to remove the omap + const bufferlist &keys_bl ///< [in] Keys to clear + ) { + if (use_tbl) { + __u32 op = OP_OMAP_RMKEYS; + ::encode(op, tbl); + ::encode(cid, tbl); + ::encode(oid, tbl); + tbl.append(keys_bl); + } else { + Op* _op = _get_next_op(); + _op->op = OP_OMAP_RMKEYS; + _op->cid = _get_coll_id(cid); + _op->oid = _get_object_id(oid); + data_bl.append(keys_bl); + } + data.ops++; + } + /// Remove key range from oid omap void omap_rmkeyrange( coll_t cid, ///< [in] Collection containing oid