]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
OSDMonitor: do not allow creation of EC pools if the quorum can't handle it
authorGreg Farnum <greg@inktank.com>
Thu, 23 Jan 2014 02:08:23 +0000 (18:08 -0800)
committerGreg Farnum <greg@inktank.com>
Fri, 24 Jan 2014 20:33:56 +0000 (12:33 -0800)
Signed-off-by: Greg Farnum <greg@inktank.com>
src/mon/OSDMonitor.cc

index 7d30e174168b0dd355458a696f9be74857a4d88a..520f508c15322958839ab4c1f0f829360ec43d56 100644 (file)
@@ -3965,12 +3965,16 @@ done:
       pool_type = pg_pool_t::TYPE_REPLICATED;
     } else if (pool_type_str == "erasure") {
 
-      // check if all up osds support erasure coding
-      set<int32_t> up_osds;
-      osdmap.get_up_osds(up_osds);
+      // make sure all the daemons support erasure coding
       stringstream ec_unsupported_ss;
       int ec_unsupported_count = 0;
+      if (!(mon->get_quorum_features() & CEPH_FEATURE_OSD_ERASURE_CODES)) {
+        ec_unsupported_ss << "the monitor cluster";
+        ++ec_unsupported_count;
+      }
 
+      set<int32_t> up_osds;
+      osdmap.get_up_osds(up_osds);
       for (set<int32_t>::iterator it = up_osds.begin();
            it != up_osds.end(); it ++) {
         const osd_xinfo_t &xi = osdmap.get_xinfo(*it);