]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mon: validate SERVER_REEF on set-require-min-compat-client 57634/head
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Thu, 30 May 2024 08:44:54 +0000 (08:44 +0000)
committerYuri Weinstein <yweinste@redhat.com>
Thu, 30 May 2024 15:32:30 +0000 (15:32 +0000)
commit4b306633421b1cb0f0c4372ff5d6c363d032b25c
tree18b894ccb4e70455aec03a97a05f2f97a74ca446
parent3ff0865c40737d2203d43c619eadd9da0188e68f
mon: validate SERVER_REEF on set-require-min-compat-client

Unit testing
-------------
```
[rzarzynski@o06 build]$ bin/unittest_features
...
[ RUN      ] features.release_features
1 argonaut features 0x40000 looks like argonaut
2 bobtail features 0x40000 looks like argonaut
3 cuttlefish features 0x40000 looks like argonaut
4 dumpling features 0x42040000 looks like dumpling
5 emperor features 0x42040000 looks like dumpling
6 firefly features 0x20842040000 looks like firefly
7 giant features 0x20842040000 looks like firefly
8 hammer features 0x1020842040000 looks like hammer
9 infernalis features 0x1020842040000 looks like hammer
10 jewel features 0x401020842040000 looks like jewel
11 kraken features 0xc01020842040000 looks like kraken
12 luminous features 0xe01020842240000 looks like luminous
13 mimic features 0xe01020842240000 looks like luminous
14 nautilus features 0xe01020842240000 looks like luminous
15 octopus features 0xe01020842240000 looks like luminous
16 pacific features 0xe01020842240000 looks like luminous
17 quincy features 0xe01020842240000 looks like luminous
18 reef features 0xe010208d2240000 looks like reef
19 squid features 0xe010208d2240000 looks like reef
[       OK ] features.release_features (0 ms)
```

Manual testing
--------------
\### 'quincy` client connected to `main` cluster
There was `ceph -w` from `quincy` running in the background.

```
[rzarzynski@o06 build]$ bin/ceph osd set-require-min-compat-client reef
Error EPERM: cannot set require_min_compat_client to reef: 1 connected client(s) look like luminous (missing 0x80000000); add --yes-i-really-mean-it to do it anyway
```

\### Only `main` clients connected to `main` cluster
```
[rzarzynski@o06 build]$ bin/ceph osd get-require-min-compat-client
luminous
[rzarzynski@o06 build]$ bin/ceph daemon mon.a sessions | jq  -jr '.[] | .name, "\t", .con_features, "\t", .con_features_hex, "\n"' | grep client
client.?        4540701547738038271     3f03cffffffdffff
client.?        4540701547738038271     3f03cffffffdffff
[rzarzynski@o06 build]$ bin/ceph osd set-require-min-compat-client reef
set require_min_compat_client to reef
```

Fixes: https://tracker.ceph.com/issues/61948
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
(cherry picked from commit 4d74ff6327ebdc7deb44737cac08125204b2fec6)

(cherry picked from commit 70adcbbc3afadec0b194ae1d7e9833d1c569bce9)
src/common/ceph_strings.cc