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);
/// encoded, cached copy of of values
bufferlist values_bl;
+ /// encoded copy of defaults (map<string,string>)
+ 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
/// get encoded map<string,map<int32_t,string>> of entire config
void get_config_bl(bufferlist *bl);
+ /// get encoded map<string,string> 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;