From: Sage Weil Date: Mon, 24 Nov 2014 21:31:31 +0000 (-0800) Subject: osd: retire meta/infos object entirely X-Git-Tag: v0.91~23^2~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d6df6eabab839ff376cbc31c7ba5b15d7e14e798;p=ceph.git osd: retire meta/infos object entirely Do not create it; remove it on upgrade. Signed-off-by: Sage Weil --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 6182481cf6f..478d1fd9eb8 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -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(); } diff --git a/src/osd/OSD.h b/src/osd/OSD.h index fc8e8de763d..f6b64fe04f1 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -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; diff --git a/src/osd/PG.cc b/src/osd/PG.cc index a4cee105912..a89bdde499b 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -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; diff --git a/src/osd/PG.h b/src/osd/PG.h index 1e435b087ed..b4968d96fdb 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -2136,7 +2136,7 @@ public: interval_set &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 &log_entries,