From: Sage Weil Date: Fri, 5 Jan 2018 23:40:42 +0000 (-0600) Subject: common/config: get_defaults_bl() X-Git-Tag: v13.0.2~78^2~90 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ebe8fdfa9666548836f9702a7dc88d49e3c8ac3a;p=ceph.git common/config: get_defaults_bl() Signed-off-by: Sage Weil --- diff --git a/src/common/config.cc b/src/common/config.cc index 7a8150d2ef72..f31b3631ba92 100644 --- a/src/common/config.cc +++ b/src/common/config.cc @@ -885,6 +885,33 @@ int md_config_t::rm_val(const std::string& key) return _rm_val(key, CONF_OVERRIDE); } +void md_config_t::get_defaults_bl(bufferlist *bl) +{ + Mutex::Locker l(lock); + if (defaults_bl.length() == 0) { + uint32_t n = 0; + bufferlist bl; + for (const auto &i : schema) { + ++n; + ::encode(i.second.name, bl); + auto j = values.find(i.second.name); + if (j != values.end()) { + auto k = j->second.find(CONF_DEFAULT); + if (k != j->second.end()) { + ::encode(stringify(k->second), bl); + continue; + } + } + string val; + conf_stringify(_get_val_default(i.second), &val); + ::encode(val, bl); + } + ::encode(n, defaults_bl); + defaults_bl.claim_append(bl); + } + *bl = defaults_bl; +} + void md_config_t::get_config_bl(bufferlist *bl) { Mutex::Locker l(lock); diff --git a/src/common/config.h b/src/common/config.h index 6a515ad5012f..b9eba5cde40f 100644 --- a/src/common/config.h +++ b/src/common/config.h @@ -106,6 +106,9 @@ public: /// encoded, cached copy of of values bufferlist values_bl; + /// encoded copy of defaults (map) + bufferlist defaults_bl; + typedef enum { OPT_INT, OPT_LONGLONG, OPT_STR, OPT_DOUBLE, OPT_FLOAT, OPT_BOOL, OPT_ADDR, OPT_U32, OPT_U64, OPT_UUID @@ -182,6 +185,9 @@ public: /// get encoded map> of entire config void get_config_bl(bufferlist *bl); + /// get encoded map of compiled-in defaults + void get_defaults_bl(bufferlist *bl); + // Get a configuration value. // No metavariables will be returned (they will have already been expanded) int get_val(const std::string &key, char **buf, int len) const;