From: Kefu Chai Date: Wed, 18 Jul 2018 07:55:55 +0000 (+0800) Subject: common/config: change md_config_impl<> back to plain class X-Git-Tag: v14.0.1~777^2~6 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=7909c08fe04751f8443c92766b2e10b3007028ba;p=ceph-ci.git common/config: change md_config_impl<> back to plain class now that all of the variables that change depending on seastar/alien have been extracted out of md_config_impl<>, there is no need to make it a template anymore. Signed-off-by: Kefu Chai --- diff --git a/src/common/config.cc b/src/common/config.cc index f6233757f4f..26d3c4da78f 100644 --- a/src/common/config.cc +++ b/src/common/config.cc @@ -97,12 +97,9 @@ static int conf_stringify(const Option::value_t& v, string *out) return 0; } -namespace ceph::internal { - -template -md_config_impl::md_config_impl(ConfigValues& values, - const ConfigTracker& tracker, - bool is_daemon) +md_config_t::md_config_t(ConfigValues& values, + const ConfigTracker& tracker, + bool is_daemon) : is_daemon(is_daemon) { // Load the compile-time list of Option into @@ -215,8 +212,7 @@ md_config_impl::md_config_impl(ConfigValues& values, update_legacy_vals(values); } -template -md_config_impl::~md_config_impl() +md_config_t::~md_config_t() { } @@ -224,8 +220,7 @@ md_config_impl::~md_config_impl() * Sanity check schema. Assert out on failures, to ensure any bad changes * cannot possibly pass any testing and make it into a release. */ -template -void md_config_impl::validate_schema() +void md_config_t::validate_schema() { for (const auto &i : schema) { const auto &opt = i.second; @@ -247,8 +242,7 @@ void md_config_impl::validate_schema() } } -template -const Option *md_config_impl::find_option(const string& name) const +const Option *md_config_t::find_option(const string& name) const { auto p = schema.find(name); if (p != schema.end()) { @@ -257,10 +251,9 @@ const Option *md_config_impl::find_option(const string& name) const return nullptr; } -template -void md_config_impl::set_val_default(ConfigValues& values, - const ConfigTracker& tracker, - const string& name, const std::string& val) +void md_config_t::set_val_default(ConfigValues& values, + const ConfigTracker& tracker, + const string& name, const std::string& val) { const Option *o = find_option(name); assert(o); @@ -269,8 +262,7 @@ void md_config_impl::set_val_default(ConfigValues& values, assert(r >= 0); } -template -int md_config_impl::set_mon_vals(CephContext *cct, +int md_config_t::set_mon_vals(CephContext *cct, ConfigValues& values, const ConfigTracker& tracker, const map& kv, @@ -332,8 +324,7 @@ int md_config_impl::set_mon_vals(CephContext *cct, return 0; } -template -int md_config_impl::parse_config_files(ConfigValues& values, +int md_config_t::parse_config_files(ConfigValues& values, const ConfigTracker& tracker, const char *conf_files_str, std::ostream *warnings, @@ -460,10 +451,9 @@ int md_config_impl::parse_config_files(ConfigValues& values, return 0; } -template -void md_config_impl::parse_env(ConfigValues& values, - const ConfigTracker& tracker, - const char *args_var) +void md_config_t::parse_env(ConfigValues& values, + const ConfigTracker& tracker, + const char *args_var) { if (safe_to_start_threads) return; @@ -489,22 +479,19 @@ void md_config_impl::parse_env(ConfigValues& values, } } -template -void md_config_impl::show_config(const ConfigValues& values, - std::ostream& out) const +void md_config_t::show_config(const ConfigValues& values, + std::ostream& out) const { _show_config(values, &out, nullptr); } -template -void md_config_impl::show_config(const ConfigValues& values, - Formatter *f) const +void md_config_t::show_config(const ConfigValues& values, + Formatter *f) const { _show_config(values, nullptr, f); } -template -void md_config_impl::config_options(Formatter *f) const +void md_config_t::config_options(Formatter *f) const { f->open_array_section("options"); for (const auto& i: schema) { @@ -513,9 +500,8 @@ void md_config_impl::config_options(Formatter *f) const f->close_section(); } -template -void md_config_impl::_show_config(const ConfigValues& values, - std::ostream *out, Formatter *f) const +void md_config_t::_show_config(const ConfigValues& values, + std::ostream *out, Formatter *f) const { if (out) { *out << "name = " << values.name << std::endl; @@ -538,10 +524,9 @@ void md_config_impl::_show_config(const ConfigValues& values, } } -template -int md_config_impl::parse_argv(ConfigValues& values, - const ConfigTracker& tracker, - std::vector& args, int level) +int md_config_t::parse_argv(ConfigValues& values, + const ConfigTracker& tracker, + std::vector& args, int level) { if (safe_to_start_threads) { return -ENOSYS; @@ -626,8 +611,7 @@ int md_config_impl::parse_argv(ConfigValues& values, return 0; } -template -void md_config_impl::do_argv_commands(const ConfigValues& values) const +void md_config_t::do_argv_commands(const ConfigValues& values) const { if (do_show_config) { @@ -654,13 +638,12 @@ void md_config_impl::do_argv_commands(const ConfigValues& values) const } } -template -int md_config_impl::parse_option(ConfigValues& values, - const ConfigTracker& tracker, - std::vector& args, - std::vector::iterator& i, - ostream *oss, - int level) +int md_config_t::parse_option(ConfigValues& values, + const ConfigTracker& tracker, + std::vector& args, + std::vector::iterator& i, + ostream *oss, + int level) { int ret = 0; size_t o = 0; @@ -733,8 +716,7 @@ int md_config_impl::parse_option(ConfigValues& values, return ret >= 0 ? 0 : ret; } -template -int md_config_impl::parse_injectargs(ConfigValues& values, +int md_config_t::parse_injectargs(ConfigValues& values, const ConfigTracker& tracker, std::vector& args, std::ostream *oss) @@ -748,22 +730,19 @@ int md_config_impl::parse_injectargs(ConfigValues& values, return ret; } -template -void md_config_impl::set_safe_to_start_threads() +void md_config_t::set_safe_to_start_threads() { safe_to_start_threads = true; } -template -void md_config_impl::_clear_safe_to_start_threads() +void md_config_t::_clear_safe_to_start_threads() { safe_to_start_threads = false; } -template -int md_config_impl::injectargs(ConfigValues& values, - const ConfigTracker& tracker, - const std::string& s, std::ostream *oss) +int md_config_t::injectargs(ConfigValues& values, + const ConfigTracker& tracker, + const std::string& s, std::ostream *oss) { int ret; char b[s.length()+1]; @@ -794,11 +773,10 @@ int md_config_impl::injectargs(ConfigValues& values, return ret; } -template -void md_config_impl::set_val_or_die(ConfigValues& values, - const ConfigTracker& tracker, - const std::string &key, - const std::string &val) +void md_config_t::set_val_or_die(ConfigValues& values, + const ConfigTracker& tracker, + const std::string &key, + const std::string &val) { std::stringstream err; int ret = set_val(values, tracker, key, val, &err); @@ -808,11 +786,10 @@ void md_config_impl::set_val_or_die(ConfigValues& values, assert(ret == 0); } -template -int md_config_impl::set_val(ConfigValues& values, - const ConfigTracker& tracker, - const std::string &key, const char *val, - std::stringstream *err_ss) +int md_config_t::set_val(ConfigValues& values, + const ConfigTracker& tracker, + const std::string &key, const char *val, + std::stringstream *err_ss) { if (key.empty()) { if (err_ss) *err_ss << "No key specified"; @@ -844,14 +821,12 @@ int md_config_impl::set_val(ConfigValues& values, return -ENOENT; } -template -int md_config_impl::rm_val(ConfigValues& values, const std::string& key) +int md_config_t::rm_val(ConfigValues& values, const std::string& key) { return _rm_val(values, key, CONF_OVERRIDE); } -template -void md_config_impl::get_defaults_bl(const ConfigValues& values, +void md_config_t::get_defaults_bl(const ConfigValues& values, bufferlist *bl) { if (defaults_bl.length() == 0) { @@ -875,8 +850,7 @@ void md_config_impl::get_defaults_bl(const ConfigValues& values, *bl = defaults_bl; } -template -void md_config_impl::get_config_bl( +void md_config_t::get_config_bl( const ConfigValues& values, uint64_t have_version, bufferlist *bl, @@ -930,16 +904,14 @@ void md_config_impl::get_config_bl( } } -template -int md_config_impl::get_val(const ConfigValues& values, - const std::string &key, char **buf, int len) const +int md_config_t::get_val(const ConfigValues& values, + const std::string &key, char **buf, int len) const { string k(ConfFile::normalize_key_name(key)); return _get_val_cstr(values, k, buf, len); } -template -int md_config_impl::get_val( +int md_config_t::get_val( const ConfigValues& values, const std::string &key, std::string *val) const @@ -947,8 +919,7 @@ int md_config_impl::get_val( return conf_stringify(get_val_generic(values, key), val); } -template -Option::value_t md_config_impl::get_val_generic( +Option::value_t md_config_t::get_val_generic( const ConfigValues& values, const std::string &key) const { @@ -956,8 +927,7 @@ Option::value_t md_config_impl::get_val_generic( return _get_val(values, k); } -template -Option::value_t md_config_impl::_get_val( +Option::value_t md_config_t::_get_val( const ConfigValues& values, const std::string &key, expand_stack_t *stack, @@ -979,8 +949,7 @@ Option::value_t md_config_impl::_get_val( return _get_val(values, *o, stack, err); } -template -Option::value_t md_config_impl::_get_val( +Option::value_t md_config_t::_get_val( const ConfigValues& values, const Option& o, expand_stack_t *stack, @@ -995,9 +964,8 @@ Option::value_t md_config_impl::_get_val( &o, stack, err); } -template -Option::value_t md_config_impl::_get_val_nometa(const ConfigValues& values, - const Option& o) const +Option::value_t md_config_t::_get_val_nometa(const ConfigValues& values, + const Option& o) const { if (auto [value, found] = values.get_value(o.name, -1); found) { return value; @@ -1006,8 +974,7 @@ Option::value_t md_config_impl::_get_val_nometa(const ConfigValues& values, } } -template -const Option::value_t& md_config_impl::_get_val_default(const Option& o) const +const Option::value_t& md_config_t::_get_val_default(const Option& o) const { bool has_daemon_default = !boost::get(&o.daemon_value); if (is_daemon && has_daemon_default) { @@ -1017,8 +984,7 @@ const Option::value_t& md_config_impl::_get_val_default(const Option& o) con } } -template -void md_config_impl::early_expand_meta( +void md_config_t::early_expand_meta( const ConfigValues& values, std::string &val, std::ostream *err) const @@ -1030,7 +996,6 @@ void md_config_impl::early_expand_meta( conf_stringify(v, &val); } -template bool md_config_t::finalize_reexpand_meta(ConfigValues& values, const ConfigTracker& tracker) { @@ -1047,8 +1012,7 @@ bool md_config_t::finalize_reexpand_meta(ConfigValues& values, } } -template -Option::value_t md_config_impl::_expand_meta( +Option::value_t md_config_t::_expand_meta( const ConfigValues& values, const Option::value_t& in, const Option *o, @@ -1182,8 +1146,7 @@ Option::value_t md_config_impl::_expand_meta( return Option::value_t(out); } -template -int md_config_impl::_get_val_cstr( +int md_config_t::_get_val_cstr( const ConfigValues& values, const std::string &key, char **buf, int len) const { @@ -1210,8 +1173,7 @@ int md_config_impl::_get_val_cstr( return -ENOENT; } -template -void md_config_impl::get_all_keys(std::vector *keys) const { +void md_config_t::get_all_keys(std::vector *keys) const { const std::string negative_flag_prefix("no_"); keys->clear(); @@ -1230,16 +1192,14 @@ void md_config_impl::get_all_keys(std::vector *keys) const { * looking. The lowest priority section is the one we look in only if all * others had nothing. This should always be the global section. */ -template -void md_config_impl::get_my_sections(const ConfigValues& values, - std::vector §ions) const +void md_config_t::get_my_sections(const ConfigValues& values, + std::vector §ions) const { _get_my_sections(values, sections); } -template -void md_config_impl::_get_my_sections(const ConfigValues& values, - std::vector §ions) const +void md_config_t::_get_my_sections(const ConfigValues& values, + std::vector §ions) const { sections.push_back(values.name.to_str()); @@ -1249,8 +1209,7 @@ void md_config_impl::_get_my_sections(const ConfigValues& values, } // Return a list of all sections -template -int md_config_impl::get_all_sections(std::vector §ions) const +int md_config_t::get_all_sections(std::vector §ions) const { for (ConfFile::const_section_iter_t s = cf.sections_begin(); s != cf.sections_end(); ++s) { @@ -1259,8 +1218,7 @@ int md_config_impl::get_all_sections(std::vector §ions) co return 0; } -template -int md_config_impl::get_val_from_conf_file( +int md_config_t::get_val_from_conf_file( const ConfigValues& values, const std::vector §ions, const std::string &key, @@ -1279,8 +1237,7 @@ int md_config_impl::get_val_from_conf_file( return 0; } -template -int md_config_impl::_get_val_from_conf_file( +int md_config_t::_get_val_from_conf_file( const std::vector §ions, const std::string &key, std::string &out) const @@ -1298,8 +1255,7 @@ int md_config_impl::_get_val_from_conf_file( return -ENOENT; } -template -int md_config_impl::_set_val( +int md_config_t::_set_val( ConfigValues& values, const ConfigTracker& observers, const std::string &raw_val, @@ -1342,8 +1298,7 @@ int md_config_impl::_set_val( } } -template -void md_config_impl::_refresh(ConfigValues& values, const Option& opt) +void md_config_t::_refresh(ConfigValues& values, const Option& opt) { // Apply the value to its legacy field, if it has one auto legacy_ptr_iter = legacy_values.find(std::string(opt.name)); @@ -1361,10 +1316,9 @@ void md_config_impl::_refresh(ConfigValues& values, const Option& opt) } } -template -int md_config_impl::_rm_val(ConfigValues& values, - const std::string& key, - int level) +int md_config_t::_rm_val(ConfigValues& values, + const std::string& key, + int level) { if (schema.count(key) == 0) { return -EINVAL; @@ -1432,8 +1386,7 @@ class assign_visitor : public boost::static_visitor<> }; } // anonymous namespace -template -void md_config_impl::update_legacy_vals(ConfigValues& values) +void md_config_t::update_legacy_vals(ConfigValues& values) { for (const auto &i : legacy_values) { const auto &name = i.first; @@ -1443,10 +1396,9 @@ void md_config_impl::update_legacy_vals(ConfigValues& values) } } -template -void md_config_impl::update_legacy_val(ConfigValues& values, +void md_config_t::update_legacy_val(ConfigValues& values, const Option &opt, - md_config_impl::member_ptr_t member_ptr) + md_config_t::member_ptr_t member_ptr) { Option::value_t v = _get_val(values, opt); boost::apply_visitor(assign_visitor(&values, v), member_ptr); @@ -1467,8 +1419,7 @@ static void dump(Formatter *f, int level, Option::value_t in) } } -template -void md_config_impl::diff( +void md_config_t::diff( const ConfigValues& values, Formatter *f, string name) const @@ -1490,13 +1441,7 @@ void md_config_impl::diff( }); } -template -void md_config_impl::complain_about_parse_errors(CephContext *cct) +void md_config_t::complain_about_parse_errors(CephContext *cct) { ::complain_about_parse_errors(cct, &parse_errors); } - -// explicit instantiate the only md_config_impl type we need -template class md_config_impl; - -} // namespace ceph::internal diff --git a/src/common/config.h b/src/common/config.h index c1a0fe90463..85b814f30d0 100644 --- a/src/common/config.h +++ b/src/common/config.h @@ -41,8 +41,6 @@ enum { extern const char *ceph_conf_level_name(int level); -namespace ceph::internal { - /** This class represents the current Ceph configuration. * * For Ceph daemons, this is the daemon configuration. Log levels, caching @@ -72,8 +70,7 @@ namespace ceph::internal { * FIXME: really we shouldn't allow changing integer or floating point values * while another thread is reading them, either. */ -template -struct md_config_impl { +struct md_config_t { public: typedef boost::variant template -const T md_config_impl::get_val(const ConfigValues& values, - const std::string &key) const { +const T md_config_t::get_val(const ConfigValues& values, + const std::string &key) const { return boost::get(this->get_val_generic(values, key)); } -} // namespace ceph::internal - inline std::ostream& operator<<(std::ostream& o, const boost::blank& ) { return o << "INVALID_CONFIG_VALUE"; } diff --git a/src/common/config_fwd.h b/src/common/config_fwd.h index 33e89ab2801..39af28dad4a 100644 --- a/src/common/config_fwd.h +++ b/src/common/config_fwd.h @@ -5,12 +5,10 @@ #include "lock_policy.h" namespace ceph::internal { -template struct md_config_impl; template class md_config_obs_impl; } -using md_config_t = - ceph::internal::md_config_impl; +class md_config_t; using md_config_obs_t = ceph::internal::md_config_obs_impl; class ConfigProxy; diff --git a/src/common/config_values.h b/src/common/config_values.h index d364fa1bbcd..b21bfb43426 100644 --- a/src/common/config_values.h +++ b/src/common/config_values.h @@ -18,8 +18,7 @@ class ConfigValues { using values_t = std::map>; values_t values; // for populating md_config_impl::legacy_values in ctor - template - friend struct ceph::internal::md_config_impl; + friend struct md_config_t; public: EntityName name; diff --git a/src/common/lock_cond.h b/src/common/lock_cond.h index 0cab3fa21ee..20519cee16c 100644 --- a/src/common/lock_cond.h +++ b/src/common/lock_cond.h @@ -3,6 +3,7 @@ #pragma once #include "lock_policy.h" +#include "lock_mutex.h" #include "Cond.h" class SharedLRUTest;