From: Samuel Just Date: Thu, 20 Nov 2014 23:15:08 +0000 (-0800) Subject: PGLog: include rollback_info_trimmed_to in (read|write)_log X-Git-Tag: v0.80.10~65^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F3964%2Fhead;p=ceph.git PGLog: include rollback_info_trimmed_to in (read|write)_log Fixes: #10157 Backport: firefly, giant Signed-off-by: Samuel Just (cherry picked from commit 1fe8b846641486cc294fe7e1d2450132c38d2dba) Conflicts: src/osd/PGLog.cc in the context coll_t::META_COLL was replaced with META_COLL --- diff --git a/src/osd/PGLog.cc b/src/osd/PGLog.cc index 3f61346d94bc..f87b6c9f6c68 100644 --- a/src/osd/PGLog.cc +++ b/src/osd/PGLog.cc @@ -796,6 +796,7 @@ void PGLog::_write_log( ::encode(divergent_priors, keys["divergent_priors"]); } ::encode(log.can_rollback_to, keys["can_rollback_to"]); + ::encode(log.rollback_info_trimmed_to, keys["rollback_info_trimmed_to"]); t.omap_rmkeys(coll_t::META_COLL, log_oid, to_remove); t.omap_setkeys(coll_t::META_COLL, log_oid, keys); @@ -820,8 +821,11 @@ bool PGLog::read_log(ObjectStore *store, coll_t coll, hobject_t log_oid, rewrite_log = true; } else { log.tail = info.log_tail; + // will get overridden below if it had been recorded log.can_rollback_to = info.last_update; + log.rollback_info_trimmed_to = eversion_t(); + ObjectMap::ObjectMapIterator p = store->get_omap_iterator(coll_t::META_COLL, log_oid); if (p) for (p->seek_to_first(); p->valid() ; p->next()) { bufferlist bl = p->value();//Copy bufferlist before creating iterator @@ -833,6 +837,10 @@ bool PGLog::read_log(ObjectStore *store, coll_t coll, hobject_t log_oid, bufferlist bl = p->value(); bufferlist::iterator bp = bl.begin(); ::decode(log.can_rollback_to, bp); + } else if (p->key() == "rollback_info_trimmed_to") { + bufferlist bl = p->value(); + bufferlist::iterator bp = bl.begin(); + ::decode(log.rollback_info_trimmed_to, bp); } else { pg_log_entry_t e; e.decode_with_checksum(bp);