]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: require 'sortbitwise' before 'require_jewel_osds' 11772/head
authorSage Weil <sage@redhat.com>
Thu, 3 Nov 2016 20:55:53 +0000 (16:55 -0400)
committerSage Weil <sage@redhat.com>
Thu, 3 Nov 2016 20:55:53 +0000 (16:55 -0400)
This forces users upgrading past jewel to first set
'sortbitwise', which in turn means that post-jewel OSDs
do not need to support nibblewise sort.

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

index ef0d87a9be4e3b9a2e1acfe7fc48ecdc293f330d..3095f33ce556df922a0bb089546d5e4d752085aa 100644 (file)
@@ -6543,14 +6543,20 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
        err = -EPERM;
       }
     } else if (key == "require_jewel_osds") {
-      if (osdmap.get_up_osd_features() & CEPH_FEATURE_SERVER_JEWEL) {
+      if (!osdmap.test_flag(CEPH_OSDMAP_SORTBITWISE)) {
+       ss << "the sortbitwise flag must be set before require_jewel_osds";
+       err = -EPERM;
+      } else if (osdmap.get_up_osd_features() & CEPH_FEATURE_SERVER_JEWEL) {
        return prepare_set_flag(op, CEPH_OSDMAP_REQUIRE_JEWEL);
       } else {
        ss << "not all up OSDs have CEPH_FEATURE_SERVER_JEWEL feature";
        err = -EPERM;
       }
     } else if (key == "require_kraken_osds") {
-      if (osdmap.get_up_osd_features() & CEPH_FEATURE_SERVER_KRAKEN) {
+      if (!osdmap.test_flag(CEPH_OSDMAP_SORTBITWISE)) {
+       ss << "the sortbitwise flag must be set before require_kraken_osds";
+       err = -EPERM;
+      } else if (osdmap.get_up_osd_features() & CEPH_FEATURE_SERVER_KRAKEN) {
        bool r = prepare_set_flag(op, CEPH_OSDMAP_REQUIRE_KRAKEN);
        // ensure JEWEL is also set
        pending_inc.new_flags |= CEPH_OSDMAP_REQUIRE_JEWEL;