From 6c0e202573110de522d531e0aa8978e843b5167e Mon Sep 17 00:00:00 2001 From: zhuangzeqiang Date: Sat, 7 Oct 2017 16:52:07 +0800 Subject: [PATCH] rbd: check value of config override when setting image-meta Fixes: http://tracker.ceph.com/issues/15522 Signed-off-by: zhuangzeqiang (cherry picked from commit 4538f8152d0e73bdefc09874113c87467bdda622) --- src/librbd/internal.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index 2445bdacd3b..16124aaca53 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -2733,6 +2733,15 @@ int mirror_image_disable_internal(ImageCtx *ictx, bool force, int metadata_set(ImageCtx *ictx, const string &key, const string &value) { CephContext *cct = ictx->cct; + string start = ictx->METADATA_CONF_PREFIX; + size_t conf_prefix_len = start.size(); + + if(key.size() > conf_prefix_len && !key.compare(0,conf_prefix_len,start)) { + string subkey = key.substr(conf_prefix_len, key.size()-conf_prefix_len); + int r = cct->_conf->set_val(subkey.c_str(), value); + if (r < 0) + return r; + } ldout(cct, 20) << "metadata_set " << ictx << " key=" << key << " value=" << value << dendl; int r = ictx->state->refresh_if_required(); -- 2.47.3