From bd2285f695df02b8fbe06219a23027174fd1b0c1 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 10 Mar 2016 16:35:45 -0500 Subject: [PATCH] osd: use correct shard for temp scrub object Use ghobject_t type throughout. Make ghobject_t variant of spg_t::make_temp_object(). Signed-off-by: Sage Weil --- src/osd/ReplicatedPG.cc | 4 ++-- src/osd/ScrubStore.cc | 10 +++++----- src/osd/ScrubStore.h | 2 +- src/osd/osd_types.h | 11 ++++++++++- src/test/objectstore_bench.cc | 4 ++-- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index a403e9d6f961d..7cfa7a563ba70 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -6489,7 +6489,7 @@ hobject_t ReplicatedPG::generate_temp_object() { ostringstream ss; ss << "temp_" << info.pgid << "_" << get_role() << "_" << osd->monc->get_global_id() << "_" << (++temp_seq); - hobject_t hoid = info.pgid.make_temp_object(ss.str()); + hobject_t hoid = info.pgid.make_temp_hobject(ss.str()); dout(20) << __func__ << " " << hoid << dendl; return hoid; } @@ -6502,7 +6502,7 @@ hobject_t ReplicatedPG::get_temp_recovery_object(eversion_t version, snapid_t sn << "_" << info.history.same_interval_since << "_" << snap; // pgid + version + interval + snapid is unique, and short - hobject_t hoid = info.pgid.make_temp_object(ss.str()); + hobject_t hoid = info.pgid.make_temp_hobject(ss.str()); dout(20) << __func__ << " " << hoid << dendl; return hoid; } diff --git a/src/osd/ScrubStore.cc b/src/osd/ScrubStore.cc index 45571892886c4..08d324ce1029f 100644 --- a/src/osd/ScrubStore.cc +++ b/src/osd/ScrubStore.cc @@ -7,11 +7,11 @@ #include "include/rados/rados_types.hpp" namespace { -hobject_t make_scrub_object(const spg_t& pgid) +ghobject_t make_scrub_object(const spg_t& pgid) { ostringstream ss; ss << "scrub_" << pgid; - return pgid.make_temp_object(ss.str()); + return pgid.make_temp_ghobject(ss.str()); } string first_object_key(int64_t pool) @@ -101,12 +101,12 @@ Store::create(ObjectStore* store, { assert(store); assert(t); - hobject_t oid = make_scrub_object(pgid); - t->touch(coll, ghobject_t{oid}); + ghobject_t oid = make_scrub_object(pgid); + t->touch(coll, oid); return new Store{coll, oid, store}; } -Store::Store(const coll_t& coll, const hobject_t& oid, ObjectStore* store) +Store::Store(const coll_t& coll, const ghobject_t& oid, ObjectStore* store) : coll(coll), hoid(oid), driver(store, coll, hoid), diff --git a/src/osd/ScrubStore.h b/src/osd/ScrubStore.h index 59c5d1f5f7b9a..39c7da67cff4e 100644 --- a/src/osd/ScrubStore.h +++ b/src/osd/ScrubStore.h @@ -37,7 +37,7 @@ public: const librados::object_id_t& start, uint64_t max_return); private: - Store(const coll_t& coll, const hobject_t& oid, ObjectStore* store); + Store(const coll_t& coll, const ghobject_t& oid, ObjectStore* store); std::vector get_errors(ObjectStore* store, const string& start, const string& end, uint64_t max_return); diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 9a18b99500938..a27efc1a64127 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -497,11 +497,20 @@ struct spg_t { DECODE_FINISH(bl); } - hobject_t make_temp_object(const string& name) const { + hobject_t make_temp_hobject(const string& name) const { return hobject_t(object_t(name), "", CEPH_NOSNAP, pgid.ps(), hobject_t::POOL_TEMP_START - pgid.pool(), ""); } + + ghobject_t make_temp_ghobject(const string& name) const { + return ghobject_t( + hobject_t(object_t(name), "", CEPH_NOSNAP, + pgid.ps(), + hobject_t::POOL_TEMP_START - pgid.pool(), ""), + ghobject_t::NO_GEN, + shard); + } }; WRITE_CLASS_ENCODER(spg_t) WRITE_EQ_OPERATORS_2(spg_t, pgid, shard) diff --git a/src/test/objectstore_bench.cc b/src/test/objectstore_bench.cc index d8cd16675b9ed..5ec8503fe3016 100644 --- a/src/test/objectstore_bench.cc +++ b/src/test/objectstore_bench.cc @@ -269,7 +269,7 @@ int main(int argc, const char *argv[]) for (int i = 0; i < cfg.threads; i++) { std::stringstream oss; oss << "osbench-thread-" << i; - oids.emplace_back(pg.make_temp_object(oss.str())); + oids.emplace_back(pg.make_temp_hobject(oss.str())); ObjectStore::Sequencer osr(__func__); ObjectStore::Transaction t; @@ -278,7 +278,7 @@ int main(int argc, const char *argv[]) assert(r == 0); } } else { - oids.emplace_back(pg.make_temp_object("osbench")); + oids.emplace_back(pg.make_temp_hobject("osbench")); ObjectStore::Sequencer osr(__func__); ObjectStore::Transaction t; -- 2.39.5