]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: use correct shard for temp scrub object 8035/head
authorSage Weil <sage@redhat.com>
Thu, 10 Mar 2016 21:35:45 +0000 (16:35 -0500)
committerSage Weil <sage@redhat.com>
Fri, 11 Mar 2016 15:41:39 +0000 (10:41 -0500)
Use ghobject_t type throughout.  Make ghobject_t variant of
spg_t::make_temp_object().

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/ReplicatedPG.cc
src/osd/ScrubStore.cc
src/osd/ScrubStore.h
src/osd/osd_types.h
src/test/objectstore_bench.cc

index a403e9d6f961db43f161a5c6b22feb49cae2a082..7cfa7a563ba70bdfd2aa257b19af5dfba33fc3e1 100644 (file)
@@ -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;
 }
index 45571892886c4afe563b4bcb60f98d0d86d8d212..08d324ce1029f9f43de7f2a26e62d461c1535c7a 100644 (file)
@@ -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),
index 59c5d1f5f7b9ad635ff873380cfd6339fae1c240..39c7da67cff4e33e49240a6b79b1cab9af0c06fb 100644 (file)
@@ -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<bufferlist> get_errors(ObjectStore* store,
                                     const string& start, const string& end,
                                     uint64_t max_return);
index 9a18b9950093824d3024da64230805e2564a10ea..a27efc1a641277af6b3ed76d23ac1d0fc173f5a8 100644 (file)
@@ -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)
index d8cd16675b9edd6347457eec7dc344da28892c12..5ec8503fe30164019493a392b942e7d74958db32 100644 (file)
@@ -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;