#include <string>
#include <set>
#include <utility>
-#include <string.h>
+#include <cstring>
#include "common/map_cacher.hpp"
#include "common/hobject.h"
#include "os/ObjectStore.h"
#include "osd/OSDMap.h"
-class OSDriver : public MapCacher::StoreDriver<std::string, bufferlist> {
+class OSDriver : public MapCacher::StoreDriver<std::string, ceph::buffer::list> {
ObjectStore *os;
ObjectStore::CollectionHandle ch;
ghobject_t hoid;
public:
- class OSTransaction : public MapCacher::Transaction<std::string, bufferlist> {
+ class OSTransaction : public MapCacher::Transaction<std::string, ceph::buffer::list> {
friend class OSDriver;
coll_t cid;
ghobject_t hoid;
: cid(cid), hoid(hoid), t(t) {}
public:
void set_keys(
- const std::map<std::string, bufferlist> &to_set) override {
+ const std::map<std::string, ceph::buffer::list> &to_set) override {
t->omap_setkeys(cid, hoid, to_set);
}
void remove_keys(
}
int get_keys(
const std::set<std::string> &keys,
- std::map<std::string, bufferlist> *out) override;
+ std::map<std::string, ceph::buffer::list> *out) override;
int get_next(
const std::string &key,
- pair<std::string, bufferlist> *next) override;
+ std::pair<std::string, ceph::buffer::list> *next) override;
};
/**
*
* We accomplish this using two sets of keys:
* 1) OBJECT_PREFIX + obj.str() -> encoding of object_snaps
- * 2) MAPPING_PREFIX + poolid + snapid_t + obj.str() -> encoding of pair<snapid_t, obj>
+ * 2) MAPPING_PREFIX + poolid + snapid_t + obj.str() -> encoding of std::pair<snapid_t, obj>
*
* The on disk strings and encodings are implemented in to_raw, to_raw_key,
* from_raw, to_object_key.
object_snaps(hobject_t oid, const std::set<snapid_t> &snaps)
: oid(oid), snaps(snaps) {}
object_snaps() {}
- void encode(bufferlist &bl) const;
- void decode(bufferlist::const_iterator &bp);
+ void encode(ceph::buffer::list &bl) const;
+ void decode(ceph::buffer::list::const_iterator &bp);
};
struct Mapping {
snapid_t snap;
hobject_t hoid;
- explicit Mapping(const pair<snapid_t, hobject_t> &in)
+ explicit Mapping(const std::pair<snapid_t, hobject_t> &in)
: snap(in.first), hoid(in.second) {}
Mapping() : snap(0) {}
- void encode(bufferlist &bl) const {
+ void encode(ceph::buffer::list &bl) const {
ENCODE_START(1, 1, bl);
encode(snap, bl);
encode(hoid, bl);
ENCODE_FINISH(bl);
}
- void decode(bufferlist::const_iterator &bl) {
+ void decode(ceph::buffer::list::const_iterator &bl) {
DECODE_START(1, bl);
decode(snap, bl);
decode(hoid, bl);
bool _parse_m(); ///< advance the (object) mapper pointer
- vector<std::tuple<int64_t, snapid_t, uint32_t, shard_id_t>> stray;
+ std::vector<std::tuple<int64_t, snapid_t, uint32_t, shard_id_t>> stray;
Scrubber(
CephContext *cct,
ObjectStore::CollectionHandle& ch,
ghobject_t hoid,
ObjectStore::Transaction *t,
- map<epoch_t,mempool::osdmap::map<int64_t,snap_interval_set_t>> purged_snaps);
+ std::map<epoch_t,mempool::osdmap::map<int64_t,snap_interval_set_t>> purged_snaps);
static void scrub_purged_snaps(
CephContext *cct,
ObjectStore *store,
snapid_t *begin, snapid_t *end);
static void make_purged_snap_key_value(
int64_t pool, snapid_t begin,
- snapid_t end, map<string,bufferlist> *m);
- static string make_purged_snap_key(int64_t pool, snapid_t last);
+ snapid_t end, std::map<std::string,ceph::buffer::list> *m);
+ static std::string make_purged_snap_key(int64_t pool, snapid_t last);
- MapCacher::MapCacher<std::string, bufferlist> backend;
+ MapCacher::MapCacher<std::string, ceph::buffer::list> backend;
static std::string get_legacy_prefix(snapid_t snap);
std::string to_legacy_raw_key(
std::string to_raw_key(
const std::pair<snapid_t, hobject_t> &to_map);
- std::pair<std::string, bufferlist> to_raw(
+ std::pair<std::string, ceph::buffer::list> to_raw(
const std::pair<snapid_t, hobject_t> &to_map);
static bool is_mapping(const std::string &to_test);
static std::pair<snapid_t, hobject_t> from_raw(
- const std::pair<std::string, bufferlist> &image);
+ const std::pair<std::string, ceph::buffer::list> &image);
std::string to_object_key(const hobject_t &hoid);
void set_snaps(
const hobject_t &oid,
const object_snaps &out,
- MapCacher::Transaction<std::string, bufferlist> *t);
+ MapCacher::Transaction<std::string, ceph::buffer::list> *t);
void clear_snaps(
const hobject_t &oid,
- MapCacher::Transaction<std::string, bufferlist> *t);
+ MapCacher::Transaction<std::string, ceph::buffer::list> *t);
// True if hoid belongs in this mapping based on mask_bits and match
bool check(const hobject_t &hoid) const;
int _remove_oid(
const hobject_t &oid, ///< [in] oid to remove
- MapCacher::Transaction<std::string, bufferlist> *t ///< [out] transaction
+ MapCacher::Transaction<std::string, ceph::buffer::list> *t ///< [out] transaction
);
public:
- static string make_shard_prefix(shard_id_t shard) {
+ static std::string make_shard_prefix(shard_id_t shard) {
if (shard == shard_id_t::NO_SHARD)
- return string();
+ return std::string();
char buf[20];
int r = snprintf(buf, sizeof(buf), ".%x", (int)shard);
ceph_assert(r < (int)sizeof(buf));
- return string(buf, r) + '_';
+ return std::string(buf, r) + '_';
}
uint32_t mask_bits;
const uint32_t match;
- string last_key_checked;
+ std::string last_key_checked;
const int64_t pool;
const shard_id_t shard;
- const string shard_prefix;
+ const std::string shard_prefix;
SnapMapper(
CephContext* cct,
- MapCacher::StoreDriver<std::string, bufferlist> *driver,
+ MapCacher::StoreDriver<std::string, ceph::buffer::list> *driver,
uint32_t match, ///< [in] pgid
uint32_t bits, ///< [in] current split bits
int64_t pool, ///< [in] pool
update_bits(mask_bits);
}
- set<string> prefixes;
+ std::set<std::string> prefixes;
/// Update bits in case of pg split or merge
void update_bits(
uint32_t new_bits ///< [in] new split bits
) {
mask_bits = new_bits;
- set<string> _prefixes = hobject_t::get_prefixes(
+ std::set<std::string> _prefixes = hobject_t::get_prefixes(
mask_bits,
match,
pool);
prefixes.clear();
- for (set<string>::iterator i = _prefixes.begin();
- i != _prefixes.end();
- ++i) {
+ for (auto i = _prefixes.begin(); i != _prefixes.end(); ++i) {
prefixes.insert(shard_prefix + *i);
}
}
/// Update snaps for oid, empty new_snaps removes the mapping
int update_snaps(
const hobject_t &oid, ///< [in] oid to update
- const std::set<snapid_t> &new_snaps, ///< [in] new snap set
+ const std::set<snapid_t> &new_snaps, ///< [in] new snap std::set
const std::set<snapid_t> *old_snaps, ///< [in] old snaps (for debugging)
- MapCacher::Transaction<std::string, bufferlist> *t ///< [out] transaction
+ MapCacher::Transaction<std::string, ceph::buffer::list> *t ///< [out] transaction
); ///@ return error, 0 on success
/// Add mapping for oid, must not already be mapped
void add_oid(
const hobject_t &oid, ///< [in] oid to add
const std::set<snapid_t>& new_snaps, ///< [in] snaps
- MapCacher::Transaction<std::string, bufferlist> *t ///< [out] transaction
+ MapCacher::Transaction<std::string, ceph::buffer::list> *t ///< [out] transaction
);
/// Returns first object with snap as a snap
int get_next_objects_to_trim(
snapid_t snap, ///< [in] snap to check
unsigned max, ///< [in] max to get
- vector<hobject_t> *out ///< [out] next objects to trim (must be empty)
+ std::vector<hobject_t> *out ///< [out] next objects to trim (must be empty)
); ///< @return error, -ENOENT if no more objects
/// Remove mapping for oid
int remove_oid(
const hobject_t &oid, ///< [in] oid to remove
- MapCacher::Transaction<std::string, bufferlist> *t ///< [out] transaction
+ MapCacher::Transaction<std::string, ceph::buffer::list> *t ///< [out] transaction
); ///< @return error, -ENOENT if the object is not mapped
/// Get snaps for oid