]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: validate also mons and osds on {rm-,}pg-upmap-primary 57843/head
authorRadosław Zarzyński <rzarzyns@redhat.com>
Mon, 3 Jun 2024 13:43:51 +0000 (15:43 +0200)
committerRadosław Zarzyński <rzarzyns@redhat.com>
Mon, 3 Jun 2024 13:44:31 +0000 (15:44 +0200)
Fixes: https://tracker.ceph.com/issues/66329
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
src/mon/OSDMonitor.cc

index b70fcc064dd80f7f5548294366c33e006aa41cda..50be50c36883b358c543f31607dd844989172779 100644 (file)
@@ -12238,25 +12238,27 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
 
     ceph_release_t min_release = ceph_release_t::unknown;
     string feature_name = "unknown";
+    uint64_t min_feature = CEPH_FEATURES_ALL; // paranoia
     switch (upmap_option) {
     case OP_PG_UPMAP:          // fall through
     case OP_RM_PG_UPMAP:       // fall through
     case OP_PG_UPMAP_ITEMS:    // fall through
     case OP_RM_PG_UPMAP_ITEMS:
       min_release = ceph_release_t::luminous;
+      min_feature = CEPH_FEATUREMASK_OSDMAP_PG_UPMAP;
       feature_name = "pg-upmap";
       break;
 
     case OP_PG_UPMAP_PRIMARY:  // fall through
     case OP_RM_PG_UPMAP_PRIMARY:
       min_release = ceph_release_t::reef;
+      min_feature = CEPH_FEATUREMASK_SERVER_REEF;
       feature_name = "pg-upmap-primary";
       break;
 
     default:
       ceph_abort_msg("invalid upmap option");
     }
-    uint64_t min_feature = CEPH_FEATUREMASK_OSDMAP_PG_UPMAP;
     string min_release_name = ceph_release_name(static_cast<int>(min_release));
 
     if (osdmap.require_min_compat_client < min_release) {
@@ -12269,7 +12271,6 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       goto reply_no_propose;
     }
 
-    //TODO: Should I add feature and test for upmap-primary?
     err = check_cluster_features(min_feature, ss);
     if (err == -EAGAIN)
       goto wait;