From 5200fe4c79352ba54cc017db12c1a5d536e9cba1 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 9 Jul 2019 11:09:21 -0500 Subject: [PATCH] mon/OSDMonitor: disallow FORWARD and READFORWARD cache modes Signed-off-by: Sage Weil --- src/mon/OSDMonitor.cc | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 7ba9cf5cda9..45a62095fc4 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -12386,6 +12386,12 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, bool sure = false; cmd_getval(cct, cmdmap, "yes_i_really_mean_it", sure); + if (mode == pg_pool_t::CACHEMODE_FORWARD || + mode == pg_pool_t::CACHEMODE_READFORWARD) { + ss << "'" << modestr << "' is no longer a supported cache mode"; + err = -EPERM; + goto reply; + } if ((mode != pg_pool_t::CACHEMODE_WRITEBACK && mode != pg_pool_t::CACHEMODE_NONE && mode != pg_pool_t::CACHEMODE_PROXY && @@ -12410,10 +12416,10 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, /* Mode description: * * none: No cache-mode defined - * forward: Forward all reads and writes to base pool + * forward: Forward all reads and writes to base pool [removed] * writeback: Cache writes, promote reads from base pool * readonly: Forward writes to base pool - * readforward: Writes are in writeback mode, Reads are in forward mode + * readforward: Writes are in writeback mode, Reads are in forward mode [removed] * proxy: Proxy all reads and writes to base pool * readproxy: Writes are in writeback mode, Reads are in proxy mode * @@ -12421,10 +12427,10 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, * * none -> any * forward -> proxy || readforward || readproxy || writeback || any IF num_objects_dirty == 0 - * proxy -> forward || readforward || readproxy || writeback || any IF num_objects_dirty == 0 + * proxy -> readproxy || writeback || any IF num_objects_dirty == 0 * readforward -> forward || proxy || readproxy || writeback || any IF num_objects_dirty == 0 - * readproxy -> forward || proxy || readforward || writeback || any IF num_objects_dirty == 0 - * writeback -> readforward || readproxy || forward || proxy + * readproxy -> proxy || writeback || any IF num_objects_dirty == 0 + * writeback -> readproxy || proxy * readonly -> any */ @@ -12433,19 +12439,13 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, // whatever mode is on the pending state. if (p->cache_mode == pg_pool_t::CACHEMODE_WRITEBACK && - (mode != pg_pool_t::CACHEMODE_FORWARD && - mode != pg_pool_t::CACHEMODE_PROXY && - mode != pg_pool_t::CACHEMODE_READFORWARD && + (mode != pg_pool_t::CACHEMODE_PROXY && mode != pg_pool_t::CACHEMODE_READPROXY)) { ss << "unable to set cache-mode '" << pg_pool_t::get_cache_mode_name(mode) << "' on a '" << pg_pool_t::get_cache_mode_name(p->cache_mode) << "' pool; only '" - << pg_pool_t::get_cache_mode_name(pg_pool_t::CACHEMODE_FORWARD) - << "','" << pg_pool_t::get_cache_mode_name(pg_pool_t::CACHEMODE_PROXY) << "','" - << pg_pool_t::get_cache_mode_name(pg_pool_t::CACHEMODE_READFORWARD) - << "','" << pg_pool_t::get_cache_mode_name(pg_pool_t::CACHEMODE_READPROXY) << "' allowed."; err = -EINVAL; @@ -12453,25 +12453,19 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } if ((p->cache_mode == pg_pool_t::CACHEMODE_READFORWARD && (mode != pg_pool_t::CACHEMODE_WRITEBACK && - mode != pg_pool_t::CACHEMODE_FORWARD && mode != pg_pool_t::CACHEMODE_PROXY && mode != pg_pool_t::CACHEMODE_READPROXY)) || (p->cache_mode == pg_pool_t::CACHEMODE_READPROXY && (mode != pg_pool_t::CACHEMODE_WRITEBACK && - mode != pg_pool_t::CACHEMODE_FORWARD && - mode != pg_pool_t::CACHEMODE_READFORWARD && mode != pg_pool_t::CACHEMODE_PROXY)) || (p->cache_mode == pg_pool_t::CACHEMODE_PROXY && (mode != pg_pool_t::CACHEMODE_WRITEBACK && - mode != pg_pool_t::CACHEMODE_FORWARD && - mode != pg_pool_t::CACHEMODE_READFORWARD && mode != pg_pool_t::CACHEMODE_READPROXY)) || (p->cache_mode == pg_pool_t::CACHEMODE_FORWARD && (mode != pg_pool_t::CACHEMODE_WRITEBACK && - mode != pg_pool_t::CACHEMODE_READFORWARD && mode != pg_pool_t::CACHEMODE_PROXY && mode != pg_pool_t::CACHEMODE_READPROXY))) { -- 2.39.5