From: Sage Weil Date: Sun, 20 Jul 2014 17:36:44 +0000 (-0700) Subject: librados: drop osdmap pool name cache X-Git-Tag: v0.86~213^2~77 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1145b2cbc073443b870b256c827edff3263cd096;p=ceph.git librados: drop osdmap pool name cache We now have a rwlock for Objecter; no more need for a separate cache here. Signed-off-by: Sage Weil --- diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index aa4af4d24456..964521f787ca 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -74,10 +74,7 @@ librados::RadosClient::RadosClient(CephContext *cct_) messenger(NULL), instance_id(0), objecter(NULL), - osdmap_epoch(0), - pool_cache_epoch(0), lock("librados::RadosClient::lock"), - pool_cache_rwl("librados::RadosClient::pool_cache_rwl"), timer(cct, lock), refcnt(1), log_last_version(0), log_cb(NULL), log_cb_arg(NULL), @@ -88,39 +85,9 @@ librados::RadosClient::RadosClient(CephContext *cct_) int64_t librados::RadosClient::lookup_pool(const char *name) { - pool_cache_rwl.get_read(); - if (pool_cache_epoch && pool_cache_epoch == osdmap_epoch) { - map::iterator iter = pool_cache.find(name); - if (iter != pool_cache.end()) { - uint64_t val = iter->second; - pool_cache_rwl.unlock(); - return val; - } - } - - pool_cache_rwl.unlock(); - - lock.Lock(); - - int r = wait_for_osdmap(); - if (r < 0) { - lock.Unlock(); - return r; - } - int64_t ret = osdmap.lookup_pg_pool_name(name); - pool_cache_rwl.get_write(); - lock.Unlock(); - if (ret < 0) { - pool_cache_rwl.unlock(); - return -ENOENT; - } - - if (pool_cache_epoch != osdmap_epoch) { - pool_cache.clear(); - pool_cache_epoch = osdmap_epoch; - } - pool_cache[name] = ret; - pool_cache_rwl.unlock(); + const OSDMap *osdmap = objecter->get_osdmap_read(); + int64_t ret = osdmap->lookup_pg_pool_name(name); + objecter->put_osdmap_read(); return ret; } @@ -384,9 +351,6 @@ bool librados::RadosClient::_dispatch(Message *m) // OSD case CEPH_MSG_OSD_MAP: lock.Lock(); - pool_cache_rwl.get_write(); - osdmap_epoch = osdmap.get_epoch(); - pool_cache_rwl.unlock(); cond.Signal(); lock.Unlock(); break; diff --git a/src/librados/RadosClient.h b/src/librados/RadosClient.h index e608ced8d8e3..793feb7ab977 100755 --- a/src/librados/RadosClient.h +++ b/src/librados/RadosClient.h @@ -63,13 +63,7 @@ private: Objecter *objecter; - map pool_cache; - - epoch_t osdmap_epoch; - epoch_t pool_cache_epoch; - Mutex lock; - RWLock pool_cache_rwl; Cond cond; SafeTimer timer; int refcnt;