From: John Spray Date: Tue, 24 Jun 2014 21:49:54 +0000 (-0700) Subject: mon/MDSMonitor: EC check in 'fs new' like newfs X-Git-Tag: v0.84~161^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=710561cb8dee570668d0c4bf8700df652ca19182;p=ceph.git mon/MDSMonitor: EC check in 'fs new' like newfs Signed-off-by: John Spray --- diff --git a/qa/workunits/cephtool/test.sh b/qa/workunits/cephtool/test.sh index 0a8be56ae03e..e62388091e69 100755 --- a/qa/workunits/cephtool/test.sh +++ b/qa/workunits/cephtool/test.sh @@ -368,6 +368,12 @@ function test_mon_mds() check_response 'erasure-code' $? 22 ceph mds newfs $poolnum $poolnum --yes-i-really-mean-it 2>$TMPFILE check_response 'erasure-code' $? 22 + ceph fs new cephfs fs_metadata mds-ec-pool 2>$TMPFILE + check_response 'erasure-code' $? 22 + ceph fs new cephfs mds-ec-pool fs_data 2>$TMPFILE + check_response 'erasure-code' $? 22 + ceph fs new cephfs mds-ec-pool mds-ec-pool 2>$TMPFILE + check_response 'erasure-code' $? 22 set -e ceph osd pool delete mds-ec-pool mds-ec-pool --yes-i-really-really-mean-it diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 0912ae6dba9b..b8be6ea691c0 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -1015,16 +1015,31 @@ bool MDSMonitor::management_command( r = -EINVAL; } - // Automatically set crash_replay_interval on data pool if it - // isn't already set. pg_pool_t const *data_pool = mon->osdmon()->osdmap.get_pg_pool(data); assert(data_pool != NULL); // Checked it existed above + pg_pool_t const *metadata_pool = mon->osdmon()->osdmap.get_pg_pool(metadata); + assert(metadata_pool != NULL); // Checked it existed above + + // Automatically set crash_replay_interval on data pool if it + // isn't already set. if (data_pool->get_crash_replay_interval() == 0) { r = mon->osdmon()->set_crash_replay_interval(data, g_conf->osd_default_data_pool_replay_window); assert(r == 0); // We just did get_pg_pool so it must exist and be settable request_proposal(mon->osdmon()); } + if (data_pool->is_erasure()) { + ss << "data pool '" << data_name << " is an erasure-code pool"; + r = -EINVAL; + return true; + } + + if (metadata_pool->is_erasure()) { + ss << "metadata pool '" << metadata_name << " is an erasure-code pool"; + r = -EINVAL; + return true; + } + // All checks passed, go ahead and create. MDSMap newmap; newmap.inc = pending_mdsmap.inc;