Skip to content

Commit

Permalink
use omap_rmkey() where appropriate
Browse files Browse the repository at this point in the history
Signed-off-by: Sage Weil <sage@redhat.com>
  • Loading branch information
liewegas committed Jan 13, 2020
1 parent 95c0ff3 commit c7cc796
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 27 deletions.
4 changes: 1 addition & 3 deletions src/os/FuseStore.cc
Expand Up @@ -1008,9 +1008,7 @@ static int os_unlink(const char *path)
switch (f) {
case FN_OBJECT_OMAP_VAL:
{
set<string> keys;
keys.insert(key);
t.omap_rmkeys(cid, oid, keys);
t.omap_rmkey(cid, oid, key);
}
break;

Expand Down
4 changes: 1 addition & 3 deletions src/osd/OSD.cc
Expand Up @@ -6001,11 +6001,9 @@ void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store,
ss << "ok";
} else if (command == "rmomapkey") {
string key;
set<string> keys;
cmd_getval(service->cct, cmdmap, "key", key);

keys.insert(key);
t.omap_rmkeys(coll_t(pgid), ghobject_t(obj), keys);
t.omap_rmkey(coll_t(pgid), ghobject_t(obj), key);
r = store->queue_transaction(service->meta_ch, std::move(t));
if (r < 0)
ss << "error=" << r;
Expand Down
2 changes: 1 addition & 1 deletion src/osd/PG.cc
Expand Up @@ -971,7 +971,7 @@ void PG::prepare_write(
if (!km.empty())
t.omap_setkeys(coll, pgmeta_oid, km);
if (!key_to_remove.empty())
t.omap_rmkeys(coll, pgmeta_oid, { key_to_remove });
t.omap_rmkey(coll, pgmeta_oid, key_to_remove);
}

#pragma GCC diagnostic ignored "-Wpragmas"
Expand Down
18 changes: 8 additions & 10 deletions src/test/objectstore/ObjectStoreTransactionBenchmark.cc
Expand Up @@ -41,7 +41,7 @@ class Transaction {
count++;
}
};
static Tick write_ticks, setattr_ticks, omap_setkeys_ticks, omap_rmkeys_ticks;
static Tick write_ticks, setattr_ticks, omap_setkeys_ticks, omap_rmkey_ticks;
static Tick encode_ticks, decode_ticks, iterate_ticks;

void write(coll_t cid, const ghobject_t& oid, uint64_t off, uint64_t len,
Expand All @@ -63,11 +63,11 @@ class Transaction {
t.omap_setkeys(cid, oid, attrset);
omap_setkeys_ticks.add(Cycles::rdtsc() - start_time);
}
void omap_rmkeys(coll_t cid, const ghobject_t &oid,
const set<string> &keys) {
void omap_rmkey(coll_t cid, const ghobject_t &oid,
const string &key) {
uint64_t start_time = Cycles::rdtsc();
t.omap_rmkeys(cid, oid, keys);
omap_rmkeys_ticks.add(Cycles::rdtsc() - start_time);
t.omap_rmkey(cid, oid, key);
omap_rmkey_ticks.add(Cycles::rdtsc() - start_time);
}

void apply_encode_decode() {
Expand Down Expand Up @@ -130,7 +130,7 @@ class Transaction {
cerr << " write op: " << Cycles::to_microseconds(write_ticks.ticks) << "us count: " << write_ticks.count << std::endl;
cerr << " setattr op: " << Cycles::to_microseconds(setattr_ticks.ticks) << "us count: " << setattr_ticks.count << std::endl;
cerr << " omap_setkeys op: " << Cycles::to_microseconds(Transaction::omap_setkeys_ticks.ticks) << "us count: " << Transaction::omap_setkeys_ticks.count << std::endl;
cerr << " omap_rmkeys op: " << Cycles::to_microseconds(Transaction::omap_rmkeys_ticks.ticks) << "us count: " << Transaction::omap_rmkeys_ticks.count << std::endl;
cerr << " omap_rmkey op: " << Cycles::to_microseconds(Transaction::omap_rmkey_ticks.ticks) << "us count: " << Transaction::omap_rmkey_ticks.count << std::endl;
cerr << " encode op: " << Cycles::to_microseconds(Transaction::encode_ticks.ticks) << "us count: " << Transaction::encode_ticks.count << std::endl;
cerr << " decode op: " << Cycles::to_microseconds(Transaction::decode_ticks.ticks) << "us count: " << Transaction::decode_ticks.count << std::endl;
cerr << " iterate op: " << Cycles::to_microseconds(Transaction::iterate_ticks.ticks) << "us count: " << Transaction::iterate_ticks.count << std::endl;
Expand Down Expand Up @@ -207,15 +207,13 @@ class PerfCase {
Transaction t;
map<string, bufferlist> pglog_attrset;
map<string, bufferlist> info_attrset;
set<string> keys;
keys.insert(pglog_attr);
pglog_attrset[pglog_attr] = data[pglog_attr];
info_attrset[info_epoch_attr] = data[info_epoch_attr];
info_attrset[info_info_attr] = data[info_info_attr];
start_time = Cycles::rdtsc();
t.omap_setkeys(meta_cid, pglog_oid, pglog_attrset);
t.omap_setkeys(meta_cid, info_oid, info_attrset);
t.omap_rmkeys(meta_cid, pglog_oid, keys);
t.omap_rmkey(meta_cid, pglog_oid, pglog_attr);
t.apply_encode_decode();
t.apply_iterate();
ticks += Cycles::rdtsc() - start_time;
Expand All @@ -233,7 +231,7 @@ const coll_t PerfCase::meta_cid;
const coll_t PerfCase::cid;
const ghobject_t PerfCase::pglog_oid(hobject_t(sobject_t(object_t("cid_pglog"), 0)));
const ghobject_t PerfCase::info_oid(hobject_t(sobject_t(object_t("infos"), 0)));
Transaction::Tick Transaction::write_ticks, Transaction::setattr_ticks, Transaction::omap_setkeys_ticks, Transaction::omap_rmkeys_ticks;
Transaction::Tick Transaction::write_ticks, Transaction::setattr_ticks, Transaction::omap_setkeys_ticks, Transaction::omap_rmkey_ticks;
Transaction::Tick Transaction::encode_ticks, Transaction::decode_ticks, Transaction::iterate_ticks;

void usage(const string &name) {
Expand Down
4 changes: 1 addition & 3 deletions src/test/objectstore/store_test.cc
Expand Up @@ -5099,9 +5099,7 @@ TEST_P(StoreTest, OMapTest) {
}

string to_remove = attrs.begin()->first;
set<string> keys_to_remove;
keys_to_remove.insert(to_remove);
t.omap_rmkeys(cid, hoid, keys_to_remove);
t.omap_rmkey(cid, hoid, to_remove);
r = queue_transaction(store, ch, std::move(t));
ASSERT_EQ(r, 0);

Expand Down
9 changes: 2 additions & 7 deletions src/tools/ceph_objectstore_tool.cc
Expand Up @@ -1972,9 +1972,7 @@ int ObjectStoreTool::do_import(ObjectStore *store, OSDSuperblock& sb,
cerr << "done, clearing removal flag" << std::endl;

if (!dry_run) {
set<string> remove;
remove.insert("_remove");
t.omap_rmkeys(coll, pgid.make_pgmeta_oid(), remove);
t.omap_rmkey(coll, pgid.make_pgmeta_oid(), "_remove");
wait_until_done(&t, [&] {
store->queue_transaction(ch, std::move(t));
// make sure we flush onreadable items before mapper/driver are destroyed.
Expand Down Expand Up @@ -2395,17 +2393,14 @@ int do_rm_omap(ObjectStore *store, coll_t coll,
{
ObjectStore::Transaction tran;
ObjectStore::Transaction *t = &tran;
set<string> keys;

keys.insert(key);

if (debug)
cerr << "Rm_omap " << ghobj << std::endl;

if (dry_run)
return 0;

t->omap_rmkeys(coll, ghobj, keys);
t->omap_rmkey(coll, ghobj, key);

auto ch = store->open_collection(coll);
store->queue_transaction(ch, std::move(*t));
Expand Down

0 comments on commit c7cc796

Please sign in to comment.