From: Sage Weil Date: Sat, 28 Dec 2013 20:16:39 +0000 (-0800) Subject: osd/OSDMap: get_up_osd_features() X-Git-Tag: v0.77~27^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1d8429de57c07a739ee6b58ba3de35874e7d85c0;p=ceph.git osd/OSDMap: get_up_osd_features() Signed-off-by: Sage Weil --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index ffbbdff5e424..8982b5107321 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -829,6 +829,24 @@ uint64_t OSDMap::get_features(uint64_t *pmask) const return features; } +uint64_t OSDMap::get_up_osd_features() const +{ + bool first = true; + uint64_t features = 0; + for (int osd = 0; osd < max_osd; ++osd) { + if (!is_up(osd)) + continue; + const osd_xinfo_t &xi = get_xinfo(osd); + if (first) { + features = xi.features; + first = false; + } else { + features &= xi.features; + } + } + return features; +} + void OSDMap::dedup(const OSDMap *o, OSDMap *n) { if (o->epoch == n->epoch) diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index dae46450dca0..2c16056781c7 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -450,6 +450,11 @@ private: */ uint64_t get_features(uint64_t *mask) const; + /** + * get intersection of features supported by up osds + */ + uint64_t get_up_osd_features() const; + int apply_incremental(const Incremental &inc); /// try to re-use/reference addrs in oldmap from newmap