From fb359c8e934dbb7991cf98ffda2685acd9db62d5 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 23 Jul 2010 16:23:15 -0700 Subject: [PATCH] osd: map indexed caller_ops back to relevant entry This let's us look up a version from the osd_reqid_t. --- src/osd/PG.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/osd/PG.h b/src/osd/PG.h index a385890ba28d3..28bade7ccca72 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -375,7 +375,7 @@ public: */ struct IndexedLog : public Log { hash_map objects; // ptrs into log. be careful! - hash_set caller_ops; + hash_map caller_ops; // recovery pointers list::iterator complete_to; // not inclusive of referenced item @@ -400,6 +400,12 @@ public: bool logged_req(const osd_reqid_t &r) const { return caller_ops.count(r); } + eversion_t get_request_version(const osd_reqid_t &r) const { + hash_map::const_iterator p = caller_ops.find(r); + if (p == caller_ops.end()) + return eversion_t(); + return p->second->version; + } void index() { objects.clear(); @@ -408,7 +414,7 @@ public: i != log.end(); i++) { objects[i->soid] = &(*i); - caller_ops.insert(i->reqid); + caller_ops[i->reqid] = &(*i); } } @@ -417,7 +423,7 @@ public: objects[e.soid]->version < e.version) objects[e.soid] = &e; if (e.reqid_is_indexed()) - caller_ops.insert(e.reqid); + caller_ops[e.reqid] = &e; } void unindex() { objects.clear(); @@ -454,7 +460,7 @@ public: // to our index objects[e.soid] = &(log.back()); - caller_ops.insert(e.reqid); + caller_ops[e.reqid] = &(log.back()); } void trim(ObjectStore::Transaction &t, eversion_t s); -- 2.39.5