Ubuntu packaging is configuring `osd_class_dir` with a relative path `CMAKE_INSTALL_LIBDIR` instead of the required absolute path `CMAKE_INSTALL_FULL_LIBDIR` [0].
The default value for `osd_class_dir` changed in Quincy, starting with v17.1.0 [1].
The ceph-osd service relies on the `osd_class_dir` path to find and load class libraries that extend RADOS [2]. When this is set incorrectly, RADOS clients fail with repeated "Operation not supported" errors:
```
2022-08-16T17:42:15.044+0000 7fe375685e40 0 rgw main: ERROR: failed reading data (obj=default.rgw.log:bucket.sync-target-hints.), r=-95
2022-08-16T17:42:15.048+0000 7fe375685e40 0 rgw main: ERROR: failed to read targets index for bucket=:[]) r=-95
2022-08-16T17:42:15.048+0000 7fe375685e40 0 rgw main: ERROR: failed to initialize bucket sync policy handler: get_bucket_sync_hints() on bucket=-- returned r=-95
2022-08-16T17:42:15.048+0000 7fe375685e40 -1 rgw main: ERROR: could not initialize zone policy handler for zone=default
2022-08-16T17:42:15.048+0000 7fe375685e40 0 rgw main: ERROR: failed to start notify service ((95) Operation not supported
2022-08-16T17:42:15.048+0000 7fe375685e40 0 rgw main: ERROR: failed to init services (ret=(95) Operation not supported)
```
The ceph-osd service will also report `_load_class` errors:
```
2022-08-16T19:05:55.562+0000 7f4770ff9700 0 _load_class could not stat class lib/x86_64-linux-gnu/rados-classes/libcls_rbd.so: (2) No such file or directory
```
Admins can resolve this issue by manually setting `osd_class_dir` to the correct value. Run the following command on a ceph-mon:
```
sudo ceph config set global osd_class_dir /usr/lib/x86_64-linux-gnu/rados-classes
```
Then restart all ceph-osd services to pick up the new `osd_class_dir` location.
Ubuntu packaging is configuring `osd_class_dir` with a relative path `CMAKE_ INSTALL_ LIBDIR` instead of the required absolute path `CMAKE_ INSTALL_ FULL_LIBDIR` [0].
The default value for `osd_class_dir` changed in Quincy, starting with v17.1.0 [1].
The ceph-osd service relies on the `osd_class_dir` path to find and load class libraries that extend RADOS [2]. When this is set incorrectly, RADOS clients fail with repeated "Operation not supported" errors: 16T17:42: 15.044+ 0000 7fe375685e40 0 rgw main: ERROR: failed reading data (obj=default. rgw.log: bucket. sync-target- hints.) , r=-95 16T17:42: 15.048+ 0000 7fe375685e40 0 rgw main: ERROR: failed to read targets index for bucket=:[]) r=-95 16T17:42: 15.048+ 0000 7fe375685e40 0 rgw main: ERROR: failed to initialize bucket sync policy handler: get_bucket_ sync_hints( ) on bucket=-- returned r=-95 16T17:42: 15.048+ 0000 7fe375685e40 -1 rgw main: ERROR: could not initialize zone policy handler for zone=default 16T17:42: 15.048+ 0000 7fe375685e40 0 rgw main: ERROR: failed to start notify service ((95) Operation not supported 16T17:42: 15.048+ 0000 7fe375685e40 0 rgw main: ERROR: failed to init services (ret=(95) Operation not supported)
```
2022-08-
2022-08-
2022-08-
2022-08-
2022-08-
2022-08-
```
The ceph-osd service will also report `_load_class` errors: 16T19:05: 55.562+ 0000 7f4770ff9700 0 _load_class could not stat class lib/x86_ 64-linux- gnu/rados- classes/ libcls_ rbd.so: (2) No such file or directory
```
2022-08-
```
Admins can resolve this issue by manually setting `osd_class_dir` to the correct value. Run the following command on a ceph-mon: x86_64- linux-gnu/ rados-classes
```
sudo ceph config set global osd_class_dir /usr/lib/
```
Then restart all ceph-osd services to pick up the new `osd_class_dir` location.
[0] https:/ /cmake. org/cmake/ help/v3. 24/module/ GNUInstallDirs. html#result- variables /github. com/ceph/ ceph/commit/ 3bee4b02611459b 9ae949cebf5967e 4d83ef55de /docs.ceph. com/en/ latest/ dev/osd- class-path/
[1] https:/
[2] https:/