Make sure X (and, ideally, X+1) is defined:
-- [ ] src/common/ceph_releases.h (`ceph_release_t`)
-- [ ] src/common/ceph_strings.cc (`ceph_release_name()`)
-- [ ] src/include/rados.h (`CEPH_RELEASE_*` and `MAX`)
-- [ ] src/mon/mon_types.h (`ceph::features::mon::FEATURE_*` and related structs and helpers; note that monmaptool CLI test output will need adjustment)
-- [ ] src/mds/cephfs_features.h (`CEPHFS_CURRENT_RELEASE`)
+- [x] src/common/ceph_releases.h (`ceph_release_t`)
+- [x] src/common/ceph_strings.cc (`ceph_release_name()`)
+- [x] src/include/rados.h (`CEPH_RELEASE_*` and `MAX`)
+- [x] src/mon/mon_types.h (`ceph::features::mon::FEATURE_*` and related structs and helpers; note that monmaptool CLI test output will need adjustment)
+- [x] src/mds/cephfs_features.h (`CEPHFS_CURRENT_RELEASE`)
Scripts
~~~~~~~
octopus,
pacific,
quincy,
+ reef,
max,
};
return "pacific";
case CEPH_RELEASE_QUINCY:
return "quincy";
+ case CEPH_RELEASE_REEF:
+ return "reef";
default:
if (r < 0)
return "unspecified";
#define CEPH_RELEASE_OCTOPUS 15
#define CEPH_RELEASE_PACIFIC 16
#define CEPH_RELEASE_QUINCY 17
-#define CEPH_RELEASE_MAX 18 /* highest + 1 */
+#define CEPH_RELEASE_REEF 18
+#define CEPH_RELEASE_MAX 19 /* highest + 1 */
/*
* The error code to return when an OSD can't handle a write
// and update Server::update_required_client_features(). This feature bit
// is used to indicate that operator only wants clients from that release or
// later to mount CephFS.
-#define CEPHFS_CURRENT_RELEASE CEPH_RELEASE_QUINCY
+#define CEPHFS_CURRENT_RELEASE CEPH_RELEASE_REEF
// The first 5 bits are reserved for old ceph releases.
#define CEPHFS_FEATURE_JEWEL 5
// elector pinging and CONNECTIVITY mode:
constexpr mon_feature_t FEATURE_PINGING( (1ULL << 7));
constexpr mon_feature_t FEATURE_QUINCY( (1ULL << 8));
+ constexpr mon_feature_t FEATURE_REEF( (1ULL << 9));
constexpr mon_feature_t FEATURE_RESERVED( (1ULL << 63));
constexpr mon_feature_t FEATURE_NONE( (0ULL));
FEATURE_PACIFIC |
FEATURE_PINGING |
FEATURE_QUINCY |
+ FEATURE_REEF |
FEATURE_NONE
);
}
FEATURE_PACIFIC |
FEATURE_PINGING |
FEATURE_QUINCY |
+ FEATURE_REEF |
FEATURE_NONE
);
}
static inline ceph_release_t infer_ceph_release_from_mon_features(mon_feature_t f)
{
+ if (f.contains_all(ceph::features::mon::FEATURE_REEF)) {
+ return ceph_release_t::reef;
+ }
if (f.contains_all(ceph::features::mon::FEATURE_QUINCY)) {
return ceph_release_t::quincy;
}
return "pacific";
} else if (f == FEATURE_QUINCY) {
return "quincy";
+ } else if (f == FEATURE_REEF) {
+ return "reef";
} else if (f == FEATURE_RESERVED) {
return "reserved";
}
return FEATURE_PACIFIC;
} else if (n == "quincy") {
return FEATURE_QUINCY;
+ } else if (n == "reef") {
+ return FEATURE_REEF;
} else if (n == "reserved") {
return FEATURE_RESERVED;
}