From: Alex Ainscow Date: Fri, 10 Jan 2025 04:44:25 +0000 (-0500) Subject: doc: update compatset for umbrella X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=02bf2eec2dbef1872795635fe1fe861aea062165;p=ceph.git doc: update compatset for umbrella The unknown bit shown in commit was picked as being "far in the future". We have now used it and now need to move the bit one release at a time. Signed-off-by: Alex Ainscow --- diff --git a/doc/dev/release-checklists.rst b/doc/dev/release-checklists.rst index 8692e2db6f0e..d0be9964ba2a 100644 --- a/doc/dev/release-checklists.rst +++ b/doc/dev/release-checklists.rst @@ -66,11 +66,12 @@ Feature bits Compatsets ---------- -- [ ] mon/Monitor.h (`CEPH_MON_FEATURE_INCOMPAT_X`) -- [ ] mon/Monitor.cc (include in `get_supported_features()`) -- [ ] mon/Monitor.cc (`apply_monmap_to_compatset_features()`) -- [ ] mon/Monitor.cc (`calc_quorum_requirements()`) -- [ ] test/cli/monmaptool/feature-set-unset-list.t (`supported`, `persistent`) +- [x] mon/Monitor.h (`CEPH_MON_FEATURE_INCOMPAT_X`) +- [x] mon/Monitor.cc (include in `get_supported_features()`) +- [x] mon/Monitor.cc (`apply_monmap_to_compatset_features()`) +- [x] mon/Monitor.cc (`calc_quorum_requirements()`) +- [x] test/cli/monmaptool/feature-set-unset-list.t (`supported`, `persistent`) +- [x] test/cli/monmaptool/feature-set-unset-list.t Update "unknown(X)" to next unused and update monmaptool --feature-unset examples Mon --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index be964b86b719..8224d15f49d7 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -607,6 +607,7 @@ CompatSet Monitor::get_supported_features() compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_REEF); compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_SQUID); compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_TENTACLE); + compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_UMBRELLA); // Release-independent features compat.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_NVMEOF_BEACON_DIFF); @@ -2633,6 +2634,13 @@ void Monitor::apply_monmap_to_compatset_features() ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_TENTACLE)); new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_TENTACLE); } + if (monmap_features.contains_all(ceph::features::mon::FEATURE_UMBRELLA)) { + ceph_assert(ceph::features::mon::get_persistent().contains_all( + ceph::features::mon::FEATURE_UMBRELLA)); + // this feature should only ever be set if the quorum supports it. + ceph_assert(HAVE_FEATURE(quorum_con_features, SERVER_UMBRELLA)); + new_features.incompat.insert(CEPH_MON_FEATURE_INCOMPAT_UMBRELLA); + } // Release-independent features @@ -2687,6 +2695,9 @@ void Monitor::calc_quorum_requirements() if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_TENTACLE)) { required_features |= CEPH_FEATUREMASK_SERVER_TENTACLE; } + if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_UMBRELLA)) { + required_features |= CEPH_FEATUREMASK_SERVER_UMBRELLA; + } // monmap if (monmap->get_required_features().contains_all( diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index e7f5e1208009..5236ebf899ee 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -1105,6 +1105,7 @@ private: #define CEPH_MON_FEATURE_INCOMPAT_REEF CompatSet::Feature(15, "reef ondisk layout") #define CEPH_MON_FEATURE_INCOMPAT_SQUID CompatSet::Feature(16, "squid ondisk layout") #define CEPH_MON_FEATURE_INCOMPAT_TENTACLE CompatSet::Feature(17, "tentacle ondisk layout") +#define CEPH_MON_FEATURE_INCOMPAT_UMBRELLA CompatSet::Feature(18, "umbrella ondisk layout") // Release-independent features #define CEPH_MON_FEATURE_INCOMPAT_NVMEOF_BEACON_DIFF CompatSet::Feature(32, "nvmeof beacon diff") diff --git a/src/test/cli/monmaptool/feature-set-unset-list.t b/src/test/cli/monmaptool/feature-set-unset-list.t index 65841b7600ef..c28553be64ac 100644 --- a/src/test/cli/monmaptool/feature-set-unset-list.t +++ b/src/test/cli/monmaptool/feature-set-unset-list.t @@ -1,7 +1,7 @@ $ monmaptool --create --add a 10.10.10.10:1234 /tmp/test.monmap.1234 monmaptool: monmap file /tmp/test.monmap.1234 monmaptool: generated fsid [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (re) - setting min_mon_release = tentacle + setting min_mon_release = umbrella monmaptool: writing epoch 0 to /tmp/test.monmap.1234 (1 monitors) $ monmaptool --feature-list --feature-list plain --feature-list parseable /tmp/test.monmap.1234 @@ -12,28 +12,28 @@ required: [none] AVAILABLE FEATURES: - supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] - persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] + supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] + persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] MONMAP FEATURES: persistent: [none] optional: [none] required: [none] AVAILABLE FEATURES: - supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] - persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] + supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] + persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] monmap:persistent:[none] monmap:optional:[none] monmap:required:[none] - available:supported:[kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] - available:persistent:[kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] + available:supported:[kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] + available:persistent:[kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] $ monmaptool --feature-set foo /tmp/test.monmap.1234 unknown features name 'foo' or unable to parse value: Expected option value to be integer, got 'foo' monmaptool -h for usage [1] - $ monmaptool --feature-set kraken --feature-set 4096 --optional --feature-set 32 --persistent /tmp/test.monmap.1234 + $ monmaptool --feature-set kraken --feature-set 8192 --optional --feature-set 32 --persistent /tmp/test.monmap.1234 monmaptool: monmap file /tmp/test.monmap.1234 monmaptool: writing epoch 0 to /tmp/test.monmap.1234 (1 monitors) @@ -41,26 +41,26 @@ monmaptool: monmap file /tmp/test.monmap.1234 MONMAP FEATURES: persistent: [kraken(1),octopus(32)] - optional: [unknown(4096)] - required: [kraken(1),octopus(32),unknown(4096)] + optional: [unknown(8192)] + required: [kraken(1),octopus(32),unknown(8192)] AVAILABLE FEATURES: - supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] - persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] + supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] + persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] $ monmaptool --feature-unset 32 --optional --feature-list /tmp/test.monmap.1234 monmaptool: monmap file /tmp/test.monmap.1234 MONMAP FEATURES: persistent: [kraken(1),octopus(32)] - optional: [unknown(4096)] - required: [kraken(1),octopus(32),unknown(4096)] + optional: [unknown(8192)] + required: [kraken(1),octopus(32),unknown(8192)] AVAILABLE FEATURES: - supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] - persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] + supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] + persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] monmaptool: writing epoch 0 to /tmp/test.monmap.1234 (1 monitors) - $ monmaptool --feature-unset 32 --persistent --feature-unset 4096 --optional --feature-list /tmp/test.monmap.1234 + $ monmaptool --feature-unset 32 --persistent --feature-unset 8192 --optional --feature-list /tmp/test.monmap.1234 monmaptool: monmap file /tmp/test.monmap.1234 MONMAP FEATURES: persistent: [kraken(1)] @@ -68,8 +68,8 @@ required: [kraken(1)] AVAILABLE FEATURES: - supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] - persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] + supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] + persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] monmaptool: writing epoch 0 to /tmp/test.monmap.1234 (1 monitors) $ monmaptool --feature-unset kraken --feature-list /tmp/test.monmap.1234 @@ -80,8 +80,8 @@ required: [none] AVAILABLE FEATURES: - supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] - persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),nvmeof_beacon_diff(4294967296)] + supported: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] + persistent: [kraken(1),luminous(2),mimic(4),osdmap-prune(8),nautilus(16),octopus(32),pacific(64),elector-pinging(128),quincy(256),reef(512),squid(1024),tentacle(2048),umbrella(4096),nvmeof_beacon_diff(4294967296)] monmaptool: writing epoch 0 to /tmp/test.monmap.1234 (1 monitors) $ rm /tmp/test.monmap.1234