From: Haomai Wang Date: Thu, 9 Apr 2015 08:04:07 +0000 (+0800) Subject: Librbd: Use boost:assign to init aware_confs X-Git-Tag: v9.0.1~147^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=31070a5645763fc5f53a3beb62faaaa59192c05f;p=ceph.git Librbd: Use boost:assign to init aware_confs Signed-off-by: Haomai Wang --- diff --git a/src/librbd/ImageCtx.cc b/src/librbd/ImageCtx.cc index 31a06c5bad2b..60d7ec966bff 100644 --- a/src/librbd/ImageCtx.cc +++ b/src/librbd/ImageCtx.cc @@ -16,6 +16,7 @@ #include "librbd/ObjectMap.h" #include +#include #define dout_subsys ceph_subsys_rbd #undef dout_prefix @@ -33,29 +34,6 @@ using librados::IoCtx; namespace librbd { const string ImageCtx::METADATA_CONF_PREFIX = "conf_"; - const char *ImageCtx::AWARE_CONFS[] = { - "rbd_cache", - "rbd_cache_writethrough_until_flush", - "rbd_cache_size", - "rbd_cache_max_dirty", - "rbd_cache_target_dirty", - "rbd_cache_max_dirty_age", - "rbd_cache_max_dirty_object", - "rbd_cache_block_writes_upfront", - "rbd_concurrent_management_ops", - "rbd_balance_snap_reads", - "rbd_localize_snap_reads", - "rbd_balance_parent_reads", - "rbd_localize_parent_reads", - "rbd_readahead_trigger_requests", - "rbd_readahead_max_bytes", - "rbd_readahead_disable_after_bytes", - "rbd_clone_copy_on_read", - "rbd_blacklist_on_break_lock", - "rbd_blacklist_expire_seconds", - "rbd_request_timed_out_seconds", - }; - const size_t ImageCtx::AWARE_CONFS_LEN = 20; ImageCtx::ImageCtx(const string &image_name, const string &image_id, const char *snap, IoCtx& p, bool ro) @@ -97,6 +75,28 @@ namespace librbd { memset(&header, 0, sizeof(header)); memset(&layout, 0, sizeof(layout)); + + aware_confs = boost::assign::list_of( + "rbd_cache")( + "rbd_cache_writethrough_until_flush")( + "rbd_cache_size")( + "rbd_cache_max_dirty")( + "rbd_cache_target_dirty")( + "rbd_cache_max_dirty_age")( + "rbd_cache_max_dirty_object")( + "rbd_cache_block_writes_upfront")( + "rbd_concurrent_management_ops")( + "rbd_balance_snap_reads")( + "rbd_localize_snap_reads")( + "rbd_balance_parent_reads")( + "rbd_localize_parent_reads")( + "rbd_readahead_trigger_requests")( + "rbd_readahead_max_bytes")( + "rbd_readahead_disable_after_bytes")( + "rbd_clone_copy_on_read")( + "rbd_blacklist_on_break_lock")( + "rbd_blacklist_expire_seconds")( + "rbd_request_timed_out_seconds"); } ImageCtx::~ImageCtx() { @@ -832,7 +832,7 @@ namespace librbd { } } - bool ImageCtx::_aware_metadata_confs(const string &prefix, const char **configs, size_t len, + bool ImageCtx::_aware_metadata_confs(const string &prefix, const std::vector &configs, map &pairs, map *res) { size_t conf_prefix_len = prefix.size(); @@ -841,9 +841,10 @@ namespace librbd { if (it->first.size() <= conf_prefix_len || it->first.compare(0, conf_prefix_len, prefix)) return false; - for (size_t i = 0; i < len; ++i) { - string key = it->first.substr(conf_prefix_len, it->first.size() - conf_prefix_len); - if (!key.compare(configs[i])) { + string key = it->first.substr(conf_prefix_len, it->first.size() - conf_prefix_len); + for (std::vector::const_iterator cit = configs.begin(); + cit != configs.end(); ++cit) { + if (!key.compare(*cit)) { res->insert(make_pair(key, it->second)); break; } @@ -869,8 +870,7 @@ namespace librbd { if (pairs.empty()) break; - is_continue = _aware_metadata_confs(METADATA_CONF_PREFIX, AWARE_CONFS, AWARE_CONFS_LEN, - pairs, &res); + is_continue = _aware_metadata_confs(METADATA_CONF_PREFIX, aware_confs, pairs, &res); for (map::iterator it = res.begin(); it != res.end(); ++it) { j = cct->_conf->set_val(it->first.c_str(), it->second.c_str()); if (j < 0) diff --git a/src/librbd/ImageCtx.h b/src/librbd/ImageCtx.h index 7698805cfca8..4a908e42ea4e 100644 --- a/src/librbd/ImageCtx.h +++ b/src/librbd/ImageCtx.h @@ -132,8 +132,7 @@ namespace librbd { // Configuration static const string METADATA_CONF_PREFIX; - static const char *AWARE_CONFS[]; - static const size_t AWARE_CONFS_LEN; + std::vector aware_confs; bool rbd_cache; bool rbd_cache_writethrough_until_flush; uint64_t rbd_cache_size; @@ -154,7 +153,7 @@ namespace librbd { bool rbd_blacklist_on_break_lock; uint32_t rbd_blacklist_expire_seconds; uint32_t rbd_request_timed_out_seconds; - static bool _aware_metadata_confs(const string &prefix, const char **configs, size_t len, + static bool _aware_metadata_confs(const string &prefix, const std::vector &configs, map &pairs, map *res); /** diff --git a/src/test/librbd/test_internal.cc b/src/test/librbd/test_internal.cc index 7a4b7cbd03b3..c0737fd266a1 100644 --- a/src/test/librbd/test_internal.cc +++ b/src/test/librbd/test_internal.cc @@ -5,6 +5,7 @@ #include "librbd/ImageWatcher.h" #include "librbd/internal.h" #include +#include #include #include @@ -365,11 +366,10 @@ TEST_F(TestInternal, MultipleResize) { TEST_F(TestInternal, MetadatConfig) { REQUIRE_FEATURE(RBD_FEATURE_LAYERING); - const char *test_confs[] = { - "aaaaaaa", - "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", - "cccccccccccccc", - }; + const vector test_confs = boost::assign::list_of( + "aaaaaaa")( + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")( + "cccccccccccccc"); const string prefix = "test_config_"; bool is_continue; librbd::ImageCtx *ictx; @@ -383,8 +383,7 @@ TEST_F(TestInternal, MetadatConfig) { pairs[prefix+"asdfsdaf"].append("value6"); pairs[prefix+"zxvzxcv123"].append("value5"); - is_continue = ictx->_aware_metadata_confs(prefix, test_confs, sizeof(test_confs) / sizeof(char*), - pairs, &res); + is_continue = ictx->_aware_metadata_confs(prefix, test_confs, pairs, &res); ASSERT_TRUE(is_continue); ASSERT_TRUE(res.size() == 3U); ASSERT_TRUE(res.count(test_confs[0])); @@ -393,8 +392,7 @@ TEST_F(TestInternal, MetadatConfig) { res.clear(); pairs["zzzzzzzz"].append("value7"); - is_continue = ictx->_aware_metadata_confs(prefix, test_confs, sizeof(test_confs) / sizeof(char*), - pairs, &res); + is_continue = ictx->_aware_metadata_confs(prefix, test_confs, pairs, &res); ASSERT_FALSE(is_continue); ASSERT_TRUE(res.size() == 3U); }