From: Sage Weil Date: Fri, 23 Jul 2010 23:23:15 +0000 (-0700) Subject: osd: map indexed caller_ops back to relevant entry X-Git-Tag: v0.21~48^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fb359c8e934dbb7991cf98ffda2685acd9db62d5;p=ceph.git osd: map indexed caller_ops back to relevant entry This let's us look up a version from the osd_reqid_t. --- diff --git a/src/osd/PG.h b/src/osd/PG.h index a385890ba28d..28bade7ccca7 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);