From: Sage Weil Date: Thu, 20 Nov 2014 22:02:32 +0000 (-0800) Subject: osd/PGLog: explicitly pass log_oid collection X-Git-Tag: v0.91~23^2~20 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8fa94071f946b799a3e156da78337e4e8d0844b1;p=ceph.git osd/PGLog: explicitly pass log_oid collection Do not assume the log_oid is ine the 'meta' collection. Signed-off-by: Sage Weil --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index b3307b5ca533..134efc71d3df 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2919,7 +2919,7 @@ void PG::read_state(ObjectStore *store, bufferlist &bl) ostringstream oss; if (pg_log.read_log( - store, coll, log_oid, info, + store, coll, META_COLL, log_oid, info, oss)) { /* We don't want to leave the old format around in case the next log * write happens to be an append_log() diff --git a/src/osd/PGLog.cc b/src/osd/PGLog.cc index 45309ed2eb75..6ea2d7d606a3 100644 --- a/src/osd/PGLog.cc +++ b/src/osd/PGLog.cc @@ -805,7 +805,8 @@ void PGLog::_write_log( t.omap_setkeys(META_COLL, log_oid, keys); } -bool PGLog::read_log(ObjectStore *store, coll_t coll, ghobject_t log_oid, +bool PGLog::read_log(ObjectStore *store, coll_t pg_coll, + coll_t log_coll, ghobject_t log_oid, const pg_info_t &info, map &divergent_priors, IndexedLog &log, pg_missing_t &missing, @@ -817,10 +818,10 @@ bool PGLog::read_log(ObjectStore *store, coll_t coll, ghobject_t log_oid, // legacy? struct stat st; - int r = store->stat(META_COLL, log_oid, &st); + int r = store->stat(log_coll, log_oid, &st); assert(r == 0); if (st.st_size > 0) { - read_log_old(store, coll, log_oid, info, divergent_priors, log, missing, oss, log_keys_debug); + read_log_old(store, pg_coll, log_oid, info, divergent_priors, log, missing, oss, log_keys_debug); rewrite_log = true; } else { log.tail = info.log_tail; @@ -829,7 +830,7 @@ bool PGLog::read_log(ObjectStore *store, coll_t coll, ghobject_t log_oid, log.can_rollback_to = info.last_update; log.rollback_info_trimmed_to = eversion_t(); - ObjectMap::ObjectMapIterator p = store->get_omap_iterator(META_COLL, log_oid); + ObjectMap::ObjectMapIterator p = store->get_omap_iterator(log_coll, log_oid); if (p) for (p->seek_to_first(); p->valid() ; p->next()) { bufferlist bl = p->value();//Copy bufferlist before creating iterator bufferlist::iterator bp = bl.begin(); @@ -881,7 +882,7 @@ bool PGLog::read_log(ObjectStore *store, coll_t coll, ghobject_t log_oid, bufferlist bv; int r = store->getattr( - coll, + pg_coll, ghobject_t(i->soid, ghobject_t::NO_GEN, info.pgid.shard), OI_ATTR, bv); @@ -906,7 +907,7 @@ bool PGLog::read_log(ObjectStore *store, coll_t coll, ghobject_t log_oid, did.insert(i->second); bufferlist bv; int r = store->getattr( - coll, + pg_coll, ghobject_t(i->second, ghobject_t::NO_GEN, info.pgid.shard), OI_ATTR, bv); diff --git a/src/osd/PGLog.h b/src/osd/PGLog.h index 715be64ec423..407abbc31557 100644 --- a/src/osd/PGLog.h +++ b/src/osd/PGLog.h @@ -560,16 +560,18 @@ public: set *log_keys_debug ); - bool read_log(ObjectStore *store, coll_t coll, ghobject_t log_oid, + bool read_log(ObjectStore *store, coll_t pg_coll, + coll_t log_coll, ghobject_t log_oid, const pg_info_t &info, ostringstream &oss) { return read_log( - store, coll, log_oid, info, divergent_priors, + store, pg_coll, log_coll, log_oid, info, divergent_priors, log, missing, oss, (pg_log_debug ? &log_keys_debug : 0)); } /// return true if the log should be rewritten - static bool read_log(ObjectStore *store, coll_t coll, ghobject_t log_oid, + static bool read_log(ObjectStore *store, coll_t pg_coll, + coll_t log_coll, ghobject_t log_oid, const pg_info_t &info, map &divergent_priors, IndexedLog &log, pg_missing_t &missing, ostringstream &oss, diff --git a/src/tools/ceph_objectstore_tool.cc b/src/tools/ceph_objectstore_tool.cc index 5f3f274a77e8..fb3bb45bbcbd 100644 --- a/src/tools/ceph_objectstore_tool.cc +++ b/src/tools/ceph_objectstore_tool.cc @@ -603,7 +603,7 @@ int get_log(ObjectStore *fs, coll_t coll, spg_t pgid, const pg_info_t &info, map divergent_priors; try { ostringstream oss; - PGLog::read_log(fs, coll, log_oid, info, divergent_priors, log, missing, oss); + PGLog::read_log(fs, coll, META_COLL, log_oid, info, divergent_priors, log, missing, oss); if (debug && oss.str().size()) cerr << oss.str() << std::endl; }