]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: retire meta/infos object entirely
authorSage Weil <sage@redhat.com>
Mon, 24 Nov 2014 21:31:31 +0000 (13:31 -0800)
committerSage Weil <sage@redhat.com>
Wed, 17 Dec 2014 01:07:57 +0000 (17:07 -0800)
Do not create it; remove it on upgrade.

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc
src/osd/OSD.h
src/osd/PG.cc
src/osd/PG.h

index 6182481cf6f5658ebdaf54d1731eb57476cdf3e6..478d1fd9eb8beea18cf588e2d14a3155638ae6c2 100644 (file)
@@ -184,7 +184,6 @@ OSDService::OSDService(OSD *osd) :
   whoami(osd->whoami), store(osd->store),
   log_client(osd->log_client), clog(osd->clog),
   pg_recovery_stats(osd->pg_recovery_stats),
-  infos_oid(OSD::make_infos_oid()),
   cluster_messenger(osd->cluster_messenger),
   client_messenger(osd->client_messenger),
   logger(osd->logger),
@@ -1817,16 +1816,6 @@ int OSD::init()
       goto out;
   }
 
-  // make sure info object exists
-  if (!store->exists(META_COLL, service.infos_oid)) {
-    dout(10) << "init creating/touching infos object" << dendl;
-    ObjectStore::Transaction t;
-    t.touch(META_COLL, service.infos_oid);
-    r = store->apply_transaction(t);
-    if (r < 0)
-      goto out;
-  }
-
   // make sure snap mapper object exists
   if (!store->exists(META_COLL, OSD::make_snapmapper_oid())) {
     dout(10) << "init creating/touching snapmapper object" << dendl;
@@ -2784,7 +2773,8 @@ void OSD::load_pgs()
 
     dout(10) << "pgid " << pgid << " coll " << coll_t(pgid) << dendl;
     bufferlist bl;
-    epoch_t map_epoch = PG::peek_map_epoch(store, pgid, service.infos_oid, &bl);
+    epoch_t map_epoch = PG::peek_map_epoch(store, pgid, OSD::make_infos_oid(),
+                                          &bl);
 
     PG *pg = _open_lock_pg(map_epoch == 0 ? osdmap : service.get_map(map_epoch), pgid);
     // there can be no waiters here, so we don't call wake_pg_waiters
@@ -2857,6 +2847,19 @@ void OSD::load_pgs()
     RWLock::RLocker l(pg_map_lock);
     dout(0) << "load_pgs opened " << pg_map.size() << " pgs" << dendl;
   }
+
+  // clean up old infos object?
+  if (has_upgraded && store->exists(META_COLL, OSD::make_infos_oid())) {
+    dout(1) << __func__ << " removing legacy infos object" << dendl;
+    ObjectStore::Transaction t;
+    t.remove(META_COLL, OSD::make_infos_oid());
+    int r = store->apply_transaction(t);
+    if (r != 0) {
+      derr << __func__ << ": apply_transaction returned "
+          << cpp_strerror(r) << dendl;
+      assert(0);
+    }
+  }
   
   build_past_intervals_parallel();
 }
index fc8e8de763d5443ac6865999db114864862daf8b..f6b64fe04f10998ff4dcab37f0005a4c91de9d3c 100644 (file)
@@ -315,7 +315,6 @@ public:
   LogClient &log_client;
   LogChannelRef clog;
   PGRecoveryStats &pg_recovery_stats;
-  hobject_t infos_oid;
 private:
   Messenger *&cluster_messenger;
   Messenger *&client_messenger;
index a4cee105912d7b6e72e574f80e66e62b311939f5..a89bdde499b458b94a621ffdd7a0211922d3c573 100644 (file)
@@ -2706,7 +2706,7 @@ void PG::write_info(ObjectStore::Transaction& t)
 
 epoch_t PG::peek_map_epoch(ObjectStore *store,
                           spg_t pgid,
-                          hobject_t &legacy_infos_oid,
+                          hobject_t legacy_infos_oid,
                           bufferlist *bl)
 {
   coll_t coll(pgid);
@@ -2998,8 +2998,9 @@ int PG::read_info(
 
 void PG::read_state(ObjectStore *store, bufferlist &bl)
 {
+  hobject_t legacy_infos_oid(OSD::make_infos_oid());
   int r = read_info(store, pg_id, coll, bl, info, past_intervals,
-                   osd->infos_oid, snap_collections, info_struct_v);
+                   legacy_infos_oid, snap_collections, info_struct_v);
   assert(r >= 0);
 
   ostringstream oss;
index 1e435b087edf3aaf429e3ece3294ac763452557b..b4968d96fdbdfffe8ce26e8e3fe3355f53073250 100644 (file)
@@ -2136,7 +2136,7 @@ public:
     interval_set<snapid_t>  &snap_collections, __u8 &);
   void read_state(ObjectStore *store, bufferlist &bl);
   static epoch_t peek_map_epoch(ObjectStore *store, spg_t pgid,
-                               hobject_t &legacy_infos_oid,
+                               hobject_t legacy_infos_oid,
                                bufferlist *bl);
   void update_snap_map(
     vector<pg_log_entry_t> &log_entries,