]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: require force flag to use obscure cache modes
authorSage Weil <sage@redhat.com>
Mon, 28 Mar 2016 12:57:14 +0000 (08:57 -0400)
committerSage Weil <sage@redhat.com>
Mon, 28 Mar 2016 20:57:28 +0000 (16:57 -0400)
Only none, writeback, proxy, and readproxy are robust and
supported.  Require a force flag to use any of the others.

Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/MonCommands.h
src/mon/OSDMonitor.cc

index 7a22245b6b2a2295b5bdd25912bd68581b0f3277..80529e433b6124988c7855f2b0f5cbc06a305161 100644 (file)
@@ -795,7 +795,8 @@ COMMAND("osd tier rm " \
        "osd", "rw", "cli,rest")
 COMMAND("osd tier cache-mode " \
        "name=pool,type=CephPoolname " \
-       "name=mode,type=CephChoices,strings=none|writeback|forward|readonly|readforward|proxy|readproxy", \
+       "name=mode,type=CephChoices,strings=none|writeback|forward|readonly|readforward|proxy|readproxy " \
+       "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
        "specify the caching mode for cache tier <pool>", "osd", "rw", "cli,rest")
 COMMAND("osd tier set-overlay " \
        "name=pool,type=CephPoolname " \
index dba25a942ff73f54f5e00985250785fbc590b3d9..0e3db8bc34b63a43a0298a481e89913af52e65af 100644 (file)
@@ -7296,6 +7296,19 @@ done:
       goto reply;
     }
 
+    string sure;
+    cmd_getval(g_ceph_context, cmdmap, "sure", sure);
+    if ((mode != pg_pool_t::CACHEMODE_WRITEBACK &&
+        mode != pg_pool_t::CACHEMODE_NONE &&
+        mode != pg_pool_t::CACHEMODE_PROXY &&
+        mode != pg_pool_t::CACHEMODE_READPROXY) &&
+       sure != "--yes-i-really-mean-it") {
+      ss << "'" << modestr << "' is not a well-supported cache mode and may "
+        << "corrupt your data.  pass --yes-i-really-mean-it to force.";
+      err = -EPERM;
+      goto reply;
+    }
+
     // pool already has this cache-mode set and there are no pending changes
     if (p->cache_mode == mode &&
        (pending_inc.new_pools.count(pool_id) == 0 ||