]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: forbid readonly cache tiers for CephFS
authorJohn Spray <john.spray@redhat.com>
Mon, 1 Jun 2015 12:54:25 +0000 (13:54 +0100)
committerNathan Cutler <ncutler@suse.com>
Tue, 27 Oct 2015 20:18:55 +0000 (21:18 +0100)
For EC pools, we need a tier that is not just forwarding
writes, in order to provide the ops required
by CephFS.

Signed-off-by: John Spray <john.spray@redhat.com>
(cherry picked from commit 11e5faf3c1d4fa28a8b41e3a92f0f684a844e5f5)

src/mon/MDSMonitor.cc

index 4cf26cd41b91a5a7cf30944264579eeeaf66c80a..2de705b0cfceeceef647b75a32f8b78b20fca1bd 100644 (file)
@@ -1054,6 +1054,21 @@ int MDSMonitor::_check_pool(
          << " is an erasure-code pool";
       return -EINVAL;
     }
+
+    // That cache tier overlay must be writeback, not readonly (it's the
+    // write operations like modify+truncate we care about support for)
+    const pg_pool_t *write_tier = mon->osdmon()->osdmap.get_pg_pool(
+        pool->write_tier);
+    assert(write_tier != NULL);  // OSDMonitor shouldn't allow DNE tier
+    if (write_tier->cache_mode == pg_pool_t::CACHEMODE_FORWARD
+        || write_tier->cache_mode == pg_pool_t::CACHEMODE_READONLY) {
+      *ss << "EC pool '" << pool_name << "' has a write tier ("
+          << mon->osdmon()->osdmap.get_pool_name(pool->write_tier)
+          << ") that is configured "
+             "to forward writes.  Use a cache mode such as 'writeback' for "
+             "CephFS";
+      return -EINVAL;
+    }
   }
 
   if (pool->is_tier()) {