ceph: Does not respect compiler flags for Python extensions
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| ceph (Ubuntu) |
Fix Released
|
Medium
|
Graham Inggs | ||
| Noble |
Fix Released
|
Medium
|
Matthew Ruffell | ||
| Oracular |
Fix Released
|
Medium
|
Graham Inggs | ||
Bug Description
[Impact]
Ceph packaging does not respect compiler flags when building Python extensions, notably hardening flags like the stack protector, as well as frame-pointer.
They were enabled and present in focal, but lost somewhere after impish. Jammy is missing them, and noble is too.
If we look at the buildlog for 19.2.1-
[ 76%] Generating ../../.
cd /<<PKGBUILDDIR>
This should be fixed to include the standard Ubuntu defined hardening CFLAGS.
[Testcase]
Check the buildlog for CFLAGS on "cython_modules" binaries.
There are test packages available in the following ppa:
https:/
If you check the build log for noble amd64, you should see:
[ 77%] Generating ../../.
cd /<<PKGBUILDDIR>
Where all CFLAGS are present.
[Where problems can occur]
We are enabling compiler hardening flags which tighten up execution and security requirements as expected of any package in the Ubuntu archive.
This could potentially lead to these compiled python libraries segmentation faulting if they happen to rely on faulty behaviour of exceeding the stack boundary and overwriting the newly placed stack canaries.
Ideally, all python modules should be exercised before release, but in general, a certification pass of the ceph point release verification should be enough to smoke test these modules.
[Other info]
Gentoo commit:
https:/
Gentoo bugs:
https:/
https:/
Related branches
- Maksym Medvied (community): Needs Fixing
-
Diff: 86135 lines (+36726/-11118)1102 files modified.github/CODEOWNERS (+1/-0)
.github/labeler.yml (+46/-8)
CMakeLists.txt (+4/-4)
PendingReleaseNotes (+68/-1)
ceph.spec (+5/-4)
ceph.spec.in (+2/-1)
cmake/modules/AddCephTest.cmake (+19/-1)
cmake/modules/BuildBoost.cmake (+1/-1)
cmake/modules/FindSanitizers.cmake (+3/-0)
cmake/modules/code_tests/Sanitizers_fiber_test.cc (+11/-0)
debian/changelog (+32/-3)
debian/control (+3/-2)
debian/copyright (+12/-12)
debian/patches/ceph-exporter-systemd.patch (+1/-1)
debian/patches/dout-fix.patch (+1/-3)
debian/patches/logentry-c++23-compat.patch (+2/-4)
debian/patches/lp2080208.patch (+46/-0)
debian/patches/pass-build-flags.patch (+25/-0)
debian/patches/qat-dynamic.patch (+649/-0)
debian/patches/series (+3/-4)
debian/source/lintian-overrides (+1/-1)
dev/null (+0/-1)
do_cmake.sh (+1/-1)
doc/architecture.rst (+2/-1)
doc/cephadm/host-management.rst (+5/-1)
doc/cephadm/services/monitoring.rst (+29/-27)
doc/cephadm/services/osd.rst (+1/-2)
doc/cephadm/upgrade.rst (+1/-1)
doc/cephfs/add-remove-mds.rst (+7/-0)
doc/cephfs/administration.rst (+71/-27)
doc/cephfs/cephfs-journal-tool.rst (+2/-1)
doc/cephfs/client-auth.rst (+3/-4)
doc/cephfs/disaster-recovery-experts.rst (+4/-4)
doc/cephfs/fs-volumes.rst (+352/-173)
doc/cephfs/health-messages.rst (+17/-0)
doc/cephfs/index.rst (+8/-8)
doc/cephfs/mantle.rst (+22/-16)
doc/cephfs/mds-config-ref.rst (+1/-1)
doc/cephfs/metrics.rst (+132/-0)
doc/cephfs/mount-prerequisites.rst (+7/-8)
doc/cephfs/mount-using-fuse.rst (+5/-2)
doc/cephfs/mount-using-kernel-driver.rst (+10/-8)
doc/cephfs/multimds.rst (+27/-24)
doc/cephfs/snap-schedule.rst (+2/-2)
doc/dev/crimson/crimson.rst (+180/-90)
doc/dev/developer_guide/basic-workflow.rst (+85/-75)
doc/dev/developer_guide/dash-devel.rst (+4/-2)
doc/dev/developer_guide/essentials.rst (+7/-16)
doc/dev/developer_guide/running-tests-locally.rst (+23/-0)
doc/dev/developer_guide/tests-unit-tests.rst (+2/-0)
doc/dev/encoding.rst (+25/-26)
doc/dev/internals.rst (+3/-5)
doc/dev/perf_counters.rst (+2/-0)
doc/dev/release-checklists.rst (+2/-1)
doc/dev/release-process.rst (+14/-6)
doc/glossary.rst (+30/-0)
doc/index.rst (+1/-1)
doc/man/8/ceph-fuse.rst (+2/-0)
doc/man/8/ceph.rst (+2/-2)
doc/man/8/cephfs-shell.rst (+2/-0)
doc/mgr/dashboard.rst (+41/-35)
doc/rados/api/librados-intro.rst (+1/-1)
doc/rados/configuration/mon-lookup-dns.rst (+7/-0)
doc/rados/configuration/network-config-ref.rst (+2/-0)
doc/rados/operations/crush-map.rst (+2/-2)
doc/rados/operations/index.rst (+2/-0)
doc/rados/operations/stretch-mode.rst (+52/-0)
doc/rados/troubleshooting/troubleshooting-mon.rst (+27/-13)
doc/rados/troubleshooting/troubleshooting-osd.rst (+5/-4)
doc/radosgw/bucketpolicy.rst (+81/-54)
doc/radosgw/placement.rst (+17/-10)
doc/radosgw/s3/authentication.rst (+20/-34)
doc/rbd/nvmeof-requirements.rst (+1/-1)
doc/rbd/nvmeof-target-configure.rst (+5/-5)
doc/rbd/rbd-exclusive-locks.rst (+4/-0)
doc/start/beginners-guide.rst (+102/-0)
doc/start/get-involved.rst (+10/-12)
doc/start/index.rst (+2/-0)
doc/start/os-recommendations.rst (+30/-24)
install-deps.sh (+2/-2)
monitoring/ceph-mixin/config.libsonnet (+1/-1)
monitoring/ceph-mixin/dashboards/ceph-cluster.libsonnet (+287/-286)
monitoring/ceph-mixin/dashboards/cephfs.libsonnet (+3/-6)
monitoring/ceph-mixin/dashboards/host.libsonnet (+21/-27)
monitoring/ceph-mixin/dashboards/osd.libsonnet (+23/-29)
monitoring/ceph-mixin/dashboards/pool.libsonnet (+10/-16)
monitoring/ceph-mixin/dashboards/rbd.libsonnet (+11/-17)
monitoring/ceph-mixin/dashboards/rgw-s3-analytics.libsonnet (+81/-77)
monitoring/ceph-mixin/dashboards/rgw.libsonnet (+55/-25)
monitoring/ceph-mixin/dashboards/utils.libsonnet (+8/-24)
monitoring/ceph-mixin/dashboards_out/ceph-cluster-advanced.json (+196/-175)
monitoring/ceph-mixin/dashboards_out/cephfs-overview.json (+9/-29)
monitoring/ceph-mixin/dashboards_out/host-details.json (+18/-38)
monitoring/ceph-mixin/dashboards_out/hosts-overview.json (+13/-33)
monitoring/ceph-mixin/dashboards_out/osd-device-details.json (+19/-39)
monitoring/ceph-mixin/dashboards_out/osds-overview.json (+29/-49)
monitoring/ceph-mixin/dashboards_out/pool-detail.json (+14/-34)
monitoring/ceph-mixin/dashboards_out/pool-overview.json (+28/-48)
monitoring/ceph-mixin/dashboards_out/radosgw-detail.json (+18/-38)
monitoring/ceph-mixin/dashboards_out/radosgw-overview.json (+15/-35)
monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json (+106/-32)
monitoring/ceph-mixin/dashboards_out/rbd-details.json (+13/-33)
monitoring/ceph-mixin/dashboards_out/rbd-overview.json (+14/-34)
monitoring/ceph-mixin/dashboards_out/rgw-s3-analytics.json (+97/-77)
monitoring/ceph-mixin/tests_dashboards/__init__.py (+7/-7)
monitoring/ceph-mixin/tests_dashboards/features/ceph-cluster.feature (+168/-156)
monitoring/ceph-mixin/tests_dashboards/features/environment.py (+1/-0)
monitoring/ceph-mixin/tests_dashboards/features/host-details.feature (+55/-55)
monitoring/ceph-mixin/tests_dashboards/features/hosts_overview.feature (+16/-16)
monitoring/ceph-mixin/tests_dashboards/features/osd-device-details.feature (+14/-14)
monitoring/ceph-mixin/tests_dashboards/features/osds-overview.feature (+6/-6)
monitoring/ceph-mixin/tests_dashboards/features/radosgw-detail.feature (+40/-40)
monitoring/ceph-mixin/tests_dashboards/features/radosgw_overview.feature (+23/-23)
monitoring/ceph-mixin/tests_dashboards/features/self.feature (+4/-4)
monitoring/ceph-mixin/tests_dashboards/util.py (+1/-0)
qa/cephfs/conf/mon.yaml (+1/-0)
qa/cephfs/overrides/ignorelist_health.yaml (+1/-0)
qa/cephfs/overrides/pg_health.yaml (+4/-7)
qa/config/crimson_qa_overrides.yaml (+2/-0)
qa/distros/container-hosts/centos_9.stream.yaml (+3/-0)
qa/distros/container-hosts/centos_9.stream_runc.yaml (+3/-0)
qa/rbd/krbd_msgr_segments.t (+3/-3)
qa/standalone/mon/osd-erasure-code-profile.sh (+3/-2)
qa/suites/crimson-rados-experimental/seastore/basic/objectstore/seastore.yaml (+1/-0)
qa/suites/crimson-rados-experimental/seastore/basic/tasks/readwrite.yaml (+1/-0)
qa/suites/crimson-rados/basic/objectstore/.qa (+1/-0)
qa/suites/crimson-rados/basic/objectstore/bluestore.yaml (+1/-0)
qa/suites/crimson-rados/basic/objectstore/seastore.yaml (+1/-0)
qa/suites/crimson-rados/basic/tasks/rados_python.yaml (+1/-1)
qa/suites/crimson-rados/perf/objectstore/bluestore.yaml (+1/-0)
qa/suites/crimson-rados/perf/objectstore/seastore.yaml (+1/-0)
qa/suites/crimson-rados/rbd/objectstore/.qa (+1/-0)
qa/suites/crimson-rados/rbd/objectstore/bluestore.yaml (+1/-0)
qa/suites/crimson-rados/rbd/objectstore/seastore.yaml (+1/-0)
qa/suites/crimson-rados/thrash/objectstore/bluestore.yaml (+1/-0)
qa/suites/crimson-rados/thrash/thrashers/default.yaml (+0/-1)
qa/suites/crimson-rados/thrash/workloads/small-objects-balanced.yaml (+1/-0)
qa/suites/crimson-rados/thrash/workloads/small-objects-localized.yaml (+1/-0)
qa/suites/crimson-rados/thrash/workloads/small-objects.yaml (+1/-0)
qa/suites/crimson-rados/thrash_simple/.qa (+1/-0)
qa/suites/crimson-rados/thrash_simple/0-size-min-size-overrides/.qa (+1/-0)
qa/suites/crimson-rados/thrash_simple/0-size-min-size-overrides/2-size-2-min-size.yaml.disabled (+1/-0)
qa/suites/crimson-rados/thrash_simple/0-size-min-size-overrides/3-size-2-min-size.yaml (+1/-0)
qa/suites/crimson-rados/thrash_simple/1-pg-log-overrides/.qa (+1/-0)
qa/suites/crimson-rados/thrash_simple/1-pg-log-overrides/short_pg_log.yaml.disabled (+1/-0)
qa/suites/crimson-rados/thrash_simple/2-recovery-overrides/.qa (+1/-0)
qa/suites/crimson-rados/thrash_simple/2-recovery-overrides/more-active-recovery.yaml.disabled (+1/-0)
qa/suites/crimson-rados/thrash_simple/2-recovery-overrides/more-async-partial-recovery.yaml.disabled (+6/-0)
qa/suites/crimson-rados/thrash_simple/2-recovery-overrides/more-async-recovery.yaml.disabled (+5/-0)
qa/suites/crimson-rados/thrash_simple/2-recovery-overrides/more-partial-recovery.yaml.disabled (+5/-0)
qa/suites/crimson-rados/thrash_simple/clusters/.qa (+1/-0)
qa/suites/crimson-rados/thrash_simple/clusters/fixed-2.yaml (+24/-0)
qa/suites/crimson-rados/thrash_simple/clusters/openstack.yaml.disabled (+4/-0)
qa/suites/crimson-rados/thrash_simple/crimson-supported-all-distro (+1/-0)
qa/suites/crimson-rados/thrash_simple/crimson_qa_overrides.yaml (+1/-0)
qa/suites/crimson-rados/thrash_simple/deploy/.qa (+1/-0)
qa/suites/crimson-rados/thrash_simple/deploy/ceph.yaml (+11/-0)
qa/suites/crimson-rados/thrash_simple/deploy/cephadm.yaml.disabled (+16/-0)
qa/suites/crimson-rados/thrash_simple/objectstore/.qa (+1/-0)
qa/suites/crimson-rados/thrash_simple/objectstore/bluestore.yaml (+1/-0)
qa/suites/crimson-rados/thrash_simple/objectstore/seastore.yaml (+1/-0)
qa/suites/crimson-rados/thrash_simple/thrashers/.qa (+1/-0)
qa/suites/crimson-rados/thrash_simple/thrashers/simple.yaml (+35/-0)
qa/suites/crimson-rados/thrash_simple/thrashosds-health.yaml (+1/-0)
qa/suites/crimson-rados/thrash_simple/workloads/.qa (+1/-0)
qa/suites/crimson-rados/thrash_simple/workloads/admin_socket_objecter_requests.yaml (+13/-0)
qa/suites/crimson-rados/thrash_simple/workloads/pool-snaps-few-objects.yaml (+20/-0)
qa/suites/crimson-rados/thrash_simple/workloads/radosbench-high-concurrency.yaml (+49/-0)
qa/suites/crimson-rados/thrash_simple/workloads/radosbench.yaml (+24/-0)
qa/suites/crimson-rados/thrash_simple/workloads/small-objects-balanced.yaml (+24/-0)
qa/suites/crimson-rados/thrash_simple/workloads/small-objects-localized.yaml (+24/-0)
qa/suites/crimson-rados/thrash_simple/workloads/small-objects.yaml (+23/-0)
qa/suites/crimson-rados/thrash_simple/workloads/snaps-few-objects-balanced.yaml (+15/-0)
qa/suites/crimson-rados/thrash_simple/workloads/snaps-few-objects-localized.yaml (+15/-0)
qa/suites/crimson-rados/thrash_simple/workloads/snaps-few-objects.yaml (+14/-0)
qa/suites/crimson-rados/thrash_simple/workloads/write_fadvise_dontneed.yaml (+8/-0)
qa/suites/fs/bugs/client_trim_caps/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/cephadm/multivolume/2-workload/dbench.yaml (+1/-1)
qa/suites/fs/cephadm/multivolume/conf (+1/-0)
qa/suites/fs/cephadm/multivolume/overrides/.qa (+1/-0)
qa/suites/fs/cephadm/multivolume/overrides/ignorelist_health.yaml (+1/-0)
qa/suites/fs/cephadm/multivolume/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/cephadm/renamevolume/conf (+1/-0)
qa/suites/fs/cephadm/renamevolume/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/fscrypt/tasks/1-tests/fscrypt-common.yaml (+7/-0)
qa/suites/fs/functional/tasks/admin.yaml (+5/-0)
qa/suites/fs/functional/tasks/forward-scrub.yaml (+2/-0)
qa/suites/fs/mirror-ha/conf (+1/-0)
qa/suites/fs/mirror/conf (+1/-0)
qa/suites/fs/multifs/tasks/failover.yaml (+1/-0)
qa/suites/fs/nfs/overrides/ignore_mgr_down.yaml (+10/-0)
qa/suites/fs/thrash/multifs/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/thrash/workloads/overrides/+ (+0/-0)
qa/suites/fs/thrash/workloads/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/thrash/workloads/tasks/1-thrash/with-quiesce.yaml (+2/-0)
qa/suites/fs/top/conf (+1/-0)
qa/suites/fs/upgrade/featureful_client/old_client/overrides/+ (+0/-0)
qa/suites/fs/upgrade/featureful_client/old_client/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/+ (+0/-0)
qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/+ (+0/-0)
qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/upgrade/nofs/overrides/+ (+0/-0)
qa/suites/fs/upgrade/nofs/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/upgrade/upgraded_client/overrides/+ (+0/-0)
qa/suites/fs/upgrade/upgraded_client/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/upgrade/upgraded_client/tasks/3-workload/stress_tests/blogbench.yaml (+1/-1)
qa/suites/fs/upgrade/upgraded_client/tasks/3-workload/stress_tests/dbench.yaml (+1/-1)
qa/suites/fs/upgrade/upgraded_client/tasks/3-workload/stress_tests/fsstress.yaml (+1/-1)
qa/suites/fs/upgrade/upgraded_client/tasks/3-workload/stress_tests/iozone.yaml (+1/-1)
qa/suites/fs/upgrade/upgraded_client/tasks/3-workload/stress_tests/kernel_untar_build.yaml (+1/-1)
qa/suites/fs/valgrind/mirror/overrides/+ (+0/-0)
qa/suites/fs/valgrind/mirror/overrides/pg_health.yaml (+1/-0)
qa/suites/fs/volumes/tasks/volumes/test/basic.yaml (+1/-1)
qa/suites/fs/workload/tasks/3-snaps/yes.yaml (+3/-2)
qa/suites/fs/workload/tasks/5-quiesce/.qa (+1/-0)
qa/suites/fs/workload/tasks/5-quiesce/no.yaml (+0/-0)
qa/suites/fs/workload/tasks/5-quiesce/with-quiesce.yaml (+2/-0)
qa/suites/fs/workload/tasks/6-workunit/.qa (+1/-0)
qa/suites/fs/workload/tasks/6-workunit/fs/.qa (+1/-0)
qa/suites/fs/workload/tasks/6-workunit/suites/.qa (+1/-0)
qa/suites/krbd/fsx/features/no-deep-flatten.yaml (+6/-0)
qa/suites/krbd/mirror/tasks/compare-mirror-image-alternate-primary.yaml (+2/-3)
qa/suites/krbd/mirror/tasks/compare-mirror-images.yaml (+2/-3)
qa/suites/krbd/ms_modeless/tasks/krbd_rxbounce.yaml (+6/-0)
qa/suites/krbd/singleton/tasks/krbd_watch_errors_exclusive.yaml (+19/-0)
qa/suites/krbd/thrash/workloads/krbd_diff_continuous.yaml (+2/-3)
qa/suites/krbd/unmap/conf.yaml (+0/-2)
qa/suites/orch/cephadm/mgr-nfs-upgrade/4-final.yaml (+4/-0)
qa/suites/orch/cephadm/no-agent-workunits/task/test_cephadm_timeout.yaml (+2/-0)
qa/suites/orch/cephadm/no-agent-workunits/task/test_orch_cli.yaml (+2/-0)
qa/suites/orch/cephadm/osds/1-start.yaml (+1/-0)
qa/suites/orch/cephadm/smoke-roleless/1-start.yaml (+3/-0)
qa/suites/orch/cephadm/smoke-small/start.yaml (+3/-0)
qa/suites/orch/cephadm/smoke/start.yaml (+3/-0)
qa/suites/orch/cephadm/thrash/1-start.yaml (+3/-0)
qa/suites/orch/cephadm/upgrade/3-upgrade/simple.yaml (+4/-0)
qa/suites/orch/cephadm/upgrade/3-upgrade/staggered.yaml (+4/-0)
qa/suites/orch/cephadm/workunits/task/test_extra_daemon_features.yaml (+2/-0)
qa/suites/orch/cephadm/workunits/task/test_host_drain.yaml (+3/-0)
qa/suites/orch/cephadm/workunits/task/test_iscsi_container/test_iscsi_container.yaml (+2/-0)
qa/suites/orch/cephadm/workunits/task/test_monitoring_stack_basic.yaml (+2/-0)
qa/suites/orch/cephadm/workunits/task/test_set_mon_crush_locations.yaml (+1/-0)
qa/suites/rados/basic/tasks/rados_api_tests.yaml (+1/-0)
qa/suites/rados/singleton/all/ec-inconsistent-hinfo.yaml (+1/-0)
qa/suites/rados/singleton/all/mon-config-keys.yaml (+2/-0)
qa/suites/rados/thrash-old-clients/0-distro$/centos_9.stream.yaml (+1/-0)
qa/suites/rbd/basic/tasks/rbd_python_api_tests_old_format.yaml (+1/-2)
qa/suites/rbd/device/workloads/diff-continuous-krbd.yaml (+2/-3)
qa/suites/rbd/device/workloads/diff-continuous-nbd.yaml (+2/-2)
qa/suites/rbd/librbd/workloads/python_api_tests.yaml (+1/-2)
qa/suites/rbd/librbd/workloads/python_api_tests_with_defaults.yaml (+1/-2)
qa/suites/rbd/librbd/workloads/python_api_tests_with_journaling.yaml (+1/-2)
qa/suites/rbd/mirror/workloads/compare-mirror-image-alternate-primary-krbd.yaml (+2/-3)
qa/suites/rbd/mirror/workloads/compare-mirror-image-alternate-primary-nbd.yaml (+2/-2)
qa/suites/rbd/mirror/workloads/compare-mirror-images-krbd.yaml (+2/-3)
qa/suites/rbd/mirror/workloads/compare-mirror-images-nbd.yaml (+2/-2)
qa/suites/rbd/valgrind/workloads/python_api_tests.yaml (+1/-2)
qa/suites/rbd/valgrind/workloads/python_api_tests_with_defaults.yaml (+1/-2)
qa/suites/rbd/valgrind/workloads/python_api_tests_with_journaling.yaml (+1/-2)
qa/suites/rgw/multisite/clusters.yaml (+4/-2)
qa/suites/rgw/multisite/overrides.yaml (+4/-2)
qa/suites/rgw/multisite/realms/three-zones.yaml.disabled (+1/-1)
qa/suites/rgw/multisite/realms/two-zonegroup.yaml.disabled (+2/-2)
qa/suites/rgw/multisite/realms/two-zones.yaml (+21/-0)
qa/suites/rgw/multisite/tasks/test_multi.yaml (+1/-1)
qa/suites/upgrade/telemetry-upgrade/quincy-x/1-tasks.yaml (+26/-1)
qa/suites/upgrade/telemetry-upgrade/reef-x/% (+0/-0)
qa/suites/upgrade/telemetry-upgrade/reef-x/.qa (+1/-0)
qa/suites/upgrade/telemetry-upgrade/reef-x/0-random-distro$ (+1/-0)
qa/suites/upgrade/telemetry-upgrade/reef-x/1-tasks.yaml (+34/-11)
qa/tasks/cbt.py (+1/-1)
qa/tasks/ceph.py (+1/-6)
qa/tasks/ceph_manager.py (+4/-0)
qa/tasks/cephadm.py (+44/-48)
qa/tasks/cephfs/caps_helper.py (+3/-1)
qa/tasks/cephfs/cephfs_test_case.py (+7/-0)
qa/tasks/cephfs/filesystem.py (+39/-14)
qa/tasks/cephfs/fuse_mount.py (+6/-4)
qa/tasks/cephfs/kernel_mount.py (+4/-2)
qa/tasks/cephfs/mount.py (+19/-27)
qa/tasks/cephfs/test_admin.py (+488/-23)
qa/tasks/cephfs/test_cephfs_shell.py (+27/-17)
qa/tasks/cephfs/test_client_recovery.py (+1/-3)
qa/tasks/cephfs/test_damage.py (+1/-1)
qa/tasks/cephfs/test_data_scan.py (+2/-2)
qa/tasks/cephfs/test_failover.py (+73/-1)
qa/tasks/cephfs/test_flush.py (+7/-1)
qa/tasks/cephfs/test_forward_scrub.py (+2/-2)
qa/tasks/cephfs/test_fscrypt.py (+85/-3)
qa/tasks/cephfs/test_journal_migration.py (+3/-0)
qa/tasks/cephfs/test_journal_repair.py (+2/-2)
qa/tasks/cephfs/test_mirroring.py (+13/-4)
qa/tasks/cephfs/test_misc.py (+2/-4)
qa/tasks/cephfs/test_openfiletable.py (+1/-4)
qa/tasks/cephfs/test_quiesce.py (+311/-81)
qa/tasks/cephfs/test_recovery_pool.py (+2/-2)
qa/tasks/cephfs/test_scrub_checks.py (+124/-36)
qa/tasks/cephfs/test_snap_schedules.py (+33/-1)
qa/tasks/cephfs/test_snapshots.py (+32/-16)
qa/tasks/cephfs/test_strays.py (+1/-3)
qa/tasks/cephfs/test_subvolume.py (+38/-0)
qa/tasks/cephfs_mirror_thrash.py (+5/-15)
qa/tasks/fwd_scrub.py (+6/-15)
qa/tasks/mds_thrash.py (+6/-14)
qa/tasks/mgr/dashboard/test_health.py (+1/-0)
qa/tasks/mgr/dashboard/test_rbd.py (+12/-2)
qa/tasks/mgr/dashboard/test_rgw.py (+38/-33)
qa/tasks/mgr/mgr_test_case.py (+4/-4)
qa/tasks/quiescer.py (+423/-0)
qa/tasks/s3tests.py (+2/-0)
qa/tasks/thrasher.py (+33/-0)
qa/tasks/vstart_runner.py (+100/-54)
qa/tasks/waiter.py (+13/-0)
qa/valgrind.supp (+420/-0)
qa/workunits/cephtool/test.sh (+1/-1)
qa/workunits/fs/damage/test-first-damage.sh (+1/-1)
qa/workunits/libcephfs/test.sh (+1/-0)
qa/workunits/rados/test_rados_tool.sh (+2/-2)
qa/workunits/rbd/cli_generic.sh (+22/-4)
qa/workunits/rbd/krbd_data_pool.sh (+8/-8)
qa/workunits/rbd/krbd_watch_errors_exclusive.sh (+31/-0)
qa/workunits/rbd/luks-encryption.sh (+9/-9)
qa/workunits/rbd/rbd_mirror_bootstrap.sh (+38/-0)
qa/workunits/rbd/rbd_mirror_helpers.sh (+34/-1)
qa/workunits/rgw/test_rgw_orphan_list.sh (+91/-1)
qa/workunits/rgw/test_rgw_reshard.py (+16/-5)
qa/workunits/suites/cephfs_journal_tool_smoke.sh (+2/-2)
qa/workunits/suites/fsx.sh (+2/-1)
qa/workunits/test_telemetry_quincy_x.sh (+4/-3)
qa/workunits/test_telemetry_reef_x.sh (+4/-3)
qa/workunits/windows/py_tests/__init__.py (+0/-0)
qa/workunits/windows/py_tests/internal/__init__.py (+0/-0)
qa/workunits/windows/py_tests/internal/exception.py (+27/-0)
qa/workunits/windows/py_tests/internal/rbd_image.py (+286/-0)
qa/workunits/windows/py_tests/internal/task_group.py (+63/-0)
qa/workunits/windows/py_tests/internal/tracer.py (+75/-0)
qa/workunits/windows/py_tests/internal/utils.py (+119/-0)
qa/workunits/windows/py_tests/rbd_wnbd/__init__.py (+0/-0)
qa/workunits/windows/py_tests/rbd_wnbd/service_restart_test.py (+232/-0)
qa/workunits/windows/py_tests/rbd_wnbd/stress_test.py (+538/-0)
qa/workunits/windows/run-tests.ps1 (+22/-9)
run-make-check.sh (+12/-2)
src/.git_version (+2/-2)
src/CMakeLists.txt (+5/-0)
src/ceph-volume/ceph_volume/activate/main.py (+14/-17)
src/ceph-volume/ceph_volume/devices/lvm/activate.py (+21/-205)
src/ceph-volume/ceph_volume/devices/lvm/batch.py (+25/-25)
src/ceph-volume/ceph_volume/devices/lvm/common.py (+8/-1)
src/ceph-volume/ceph_volume/devices/lvm/create.py (+19/-19)
src/ceph-volume/ceph_volume/devices/lvm/prepare.py (+12/-280)
src/ceph-volume/ceph_volume/devices/raw/activate.py (+27/-97)
src/ceph-volume/ceph_volume/devices/raw/common.py (+10/-1)
src/ceph-volume/ceph_volume/devices/raw/prepare.py (+6/-114)
src/ceph-volume/ceph_volume/main.py (+16/-3)
src/ceph-volume/ceph_volume/objectstore/__init__.py (+11/-0)
src/ceph-volume/ceph_volume/objectstore/baseobjectstore.py (+154/-0)
src/ceph-volume/ceph_volume/objectstore/bluestore.py (+61/-0)
src/ceph-volume/ceph_volume/objectstore/lvmbluestore.py (+491/-0)
src/ceph-volume/ceph_volume/objectstore/rawbluestore.py (+181/-0)
src/ceph-volume/ceph_volume/tests/api/test_lvm.py (+9/-9)
src/ceph-volume/ceph_volume/tests/conftest.py (+191/-10)
src/ceph-volume/ceph_volume/tests/devices/lvm/test_activate.py (+130/-66)
src/ceph-volume/ceph_volume/tests/devices/lvm/test_batch.py (+56/-37)
src/ceph-volume/ceph_volume/tests/devices/lvm/test_migrate.py (+11/-40)
src/ceph-volume/ceph_volume/tests/devices/lvm/test_prepare.py (+49/-34)
src/ceph-volume/ceph_volume/tests/devices/lvm/test_zap.py (+0/-12)
src/ceph-volume/ceph_volume/tests/devices/raw/test_list.py (+53/-13)
src/ceph-volume/ceph_volume/tests/devices/raw/test_prepare.py (+42/-22)
src/ceph-volume/ceph_volume/tests/devices/simple/test_activate.py (+4/-2)
src/ceph-volume/ceph_volume/tests/objectstore/test_baseobjectstore.py (+162/-0)
src/ceph-volume/ceph_volume/tests/objectstore/test_bluestore.py (+27/-0)
src/ceph-volume/ceph_volume/tests/objectstore/test_lvmbluestore.py (+571/-0)
src/ceph-volume/ceph_volume/tests/objectstore/test_rawbluestore.py (+159/-0)
src/ceph-volume/ceph_volume/tests/systemd/test_main.py (+3/-3)
src/ceph-volume/ceph_volume/tests/test_main.py (+3/-3)
src/ceph-volume/ceph_volume/tests/test_terminal.py (+0/-10)
src/ceph-volume/ceph_volume/tests/util/test_arg_validators.py (+8/-10)
src/ceph-volume/ceph_volume/tests/util/test_disk.py (+31/-16)
src/ceph-volume/ceph_volume/tests/util/test_encryption.py (+43/-3)
src/ceph-volume/ceph_volume/tests/util/test_prepare.py (+38/-15)
src/ceph-volume/ceph_volume/util/arg_validators.py (+1/-1)
src/ceph-volume/ceph_volume/util/encryption.py (+40/-4)
src/ceph-volume/ceph_volume/util/prepare.py (+0/-81)
src/ceph-volume/ceph_volume/util/system.py (+1/-1)
src/ceph-volume/tox.ini (+1/-1)
src/ceph_release (+1/-1)
src/ceph_release.h.in.cmake (+8/-0)
src/ceph_ver.h.in.cmake (+2/-3)
src/cephadm/cephadm.py (+68/-107)
src/cephadm/cephadmlib/constants.py (+4/-4)
src/cephadm/cephadmlib/daemons/ceph.py (+19/-6)
src/cephadm/cephadmlib/daemons/iscsi.py (+23/-14)
src/cephadm/cephadmlib/daemons/nvmeof.py (+18/-0)
src/cephadm/cephadmlib/data_utils.py (+81/-1)
src/cephadm/cephadmlib/templating.py (+27/-0)
src/cephadm/tests/test_cephadm.py (+1/-0)
src/cephadm/tests/test_util_funcs.py (+1/-1)
src/client/Client.cc (+36/-20)
src/client/Client.h (+2/-0)
src/client/fuse_ll.cc (+1/-1)
src/cls/rbd/cls_rbd_types.h (+1/-0)
src/common/LogEntry.cc (+0/-1)
src/common/LogEntry.h (+20/-2)
src/common/TrackedOp.cc (+6/-3)
src/common/TrackedOp.h (+8/-7)
src/common/admin_finisher.h (+21/-0)
src/common/admin_socket.cc (+5/-5)
src/common/admin_socket.h (+5/-2)
src/common/ceph_strings.cc (+9/-1)
src/common/hobject.h (+44/-0)
src/common/hobject_fmt.h (+3/-2)
src/common/map_cacher.hpp (+4/-0)
src/common/options/crimson.yaml.in (+32/-1)
src/common/options/global.yaml.in (+58/-5)
src/common/options/mds-client.yaml.in (+8/-0)
src/common/options/mds.yaml.in (+4/-5)
src/common/options/mon.yaml.in (+12/-0)
src/common/options/rbd.yaml.in (+1/-1)
src/common/options/rgw.yaml.in (+1/-1)
src/common/sharedptr_registry.hpp (+6/-0)
src/common/win32/service.cc (+4/-0)
src/compressor/QatAccel.cc (+31/-17)
src/compressor/QatAccel.h (+1/-0)
src/compressor/zlib/ZlibCompressor.cc (+9/-3)
src/crimson/CMakeLists.txt (+1/-1)
src/crimson/auth/KeyRing.cc (+1/-1)
src/crimson/common/buffer_seastar.cc (+15/-1)
src/crimson/common/coroutine.h (+310/-0)
src/crimson/common/errorator.h (+128/-63)
src/crimson/common/fixed_kv_node_layout.h (+37/-10)
src/crimson/common/interruptible_future.h (+53/-9)
src/crimson/common/operation.h (+149/-96)
src/crimson/common/tri_mutex.cc (+72/-35)
src/crimson/common/tri_mutex.h (+47/-27)
src/crimson/common/utility.h (+15/-0)
src/crimson/os/alienstore/alien_store.cc (+57/-10)
src/crimson/os/alienstore/alien_store.h (+6/-0)
src/crimson/os/alienstore/thread_pool.h (+3/-7)
src/crimson/os/cyanstore/cyan_collection.h (+2/-0)
src/crimson/os/cyanstore/cyan_store.cc (+31/-0)
src/crimson/os/cyanstore/cyan_store.h (+12/-3)
src/crimson/os/futurized_store.h (+12/-0)
src/crimson/os/seastore/async_cleaner.cc (+44/-19)
src/crimson/os/seastore/async_cleaner.h (+26/-12)
src/crimson/os/seastore/btree/btree_range_pin.cc (+23/-6)
src/crimson/os/seastore/btree/btree_range_pin.h (+29/-0)
src/crimson/os/seastore/btree/fixed_kv_btree.h (+70/-64)
src/crimson/os/seastore/btree/fixed_kv_node.cc (+5/-1)
src/crimson/os/seastore/btree/fixed_kv_node.h (+173/-71)
src/crimson/os/seastore/cache.cc (+80/-44)
src/crimson/os/seastore/cache.h (+167/-213)
src/crimson/os/seastore/cached_extent.cc (+1/-1)
src/crimson/os/seastore/cached_extent.h (+148/-46)
src/crimson/os/seastore/collection_manager/collection_flat_node.h (+12/-3)
src/crimson/os/seastore/extent_placement_manager.cc (+260/-40)
src/crimson/os/seastore/extent_placement_manager.h (+108/-41)
src/crimson/os/seastore/journal.h (+4/-1)
src/crimson/os/seastore/journal/circular_bounded_journal.cc (+1/-1)
src/crimson/os/seastore/journal/circular_bounded_journal.h (+6/-2)
src/crimson/os/seastore/journal/record_submitter.cc (+58/-36)
src/crimson/os/seastore/journal/record_submitter.h (+14/-21)
src/crimson/os/seastore/journal/segmented_journal.cc (+2/-2)
src/crimson/os/seastore/journal/segmented_journal.h (+6/-2)
src/crimson/os/seastore/lba_manager.cc (+3/-1)
src/crimson/os/seastore/lba_manager.h (+39/-14)
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc (+133/-97)
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h (+289/-63)
src/crimson/os/seastore/lba_manager/btree/lba_btree_node.cc (+21/-1)
src/crimson/os/seastore/lba_manager/btree/lba_btree_node.h (+19/-6)
src/crimson/os/seastore/object_data_handler.cc (+150/-121)
src/crimson/os/seastore/object_data_handler.h (+86/-6)
src/crimson/os/seastore/omap_manager.h (+4/-2)
src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc (+2/-1)
src/crimson/os/seastore/onode_manager/staged-fltree/node.cc (+6/-12)
src/crimson/os/seastore/onode_manager/staged-fltree/node_extent_accessor.h (+5/-10)
src/crimson/os/seastore/onode_manager/staged-fltree/node_layout.h (+1/-2)
src/crimson/os/seastore/onode_manager/staged-fltree/tree_utils.h (+1/-3)
src/crimson/os/seastore/ordering_handle.h (+6/-6)
src/crimson/os/seastore/random_block_manager/avlallocator.cc (+6/-7)
src/crimson/os/seastore/record_scanner.cc (+3/-5)
src/crimson/os/seastore/record_scanner.h (+1/-2)
src/crimson/os/seastore/root_block.cc (+13/-7)
src/crimson/os/seastore/root_block.h (+3/-1)
src/crimson/os/seastore/seastore.cc (+289/-33)
src/crimson/os/seastore/seastore.h (+39/-5)
src/crimson/os/seastore/seastore_types.cc (+118/-18)
src/crimson/os/seastore/seastore_types.h (+204/-8)
src/crimson/os/seastore/transaction.h (+31/-26)
src/crimson/os/seastore/transaction_manager.cc (+119/-74)
src/crimson/os/seastore/transaction_manager.h (+227/-225)
src/crimson/osd/heartbeat.cc (+1/-2)
src/crimson/osd/main.cc (+8/-3)
src/crimson/osd/main_config_bootstrap_helpers.cc (+22/-6)
src/crimson/osd/object_context.cc (+1/-0)
src/crimson/osd/object_context.h (+63/-16)
src/crimson/osd/object_context_loader.cc (+90/-88)
src/crimson/osd/object_context_loader.h (+29/-15)
src/crimson/osd/ops_executer.cc (+40/-26)
src/crimson/osd/ops_executer.h (+18/-6)
src/crimson/osd/osd.cc (+69/-14)
src/crimson/osd/osd.h (+5/-1)
src/crimson/osd/osd_meta.cc (+3/-3)
src/crimson/osd/osd_operation.cc (+47/-68)
src/crimson/osd/osd_operation.h (+23/-5)
src/crimson/osd/osd_operation_external_tracking.h (+60/-0)
src/crimson/osd/osd_operations/background_recovery.cc (+15/-8)
src/crimson/osd/osd_operations/client_request.cc (+319/-212)
src/crimson/osd/osd_operations/client_request.h (+44/-11)
src/crimson/osd/osd_operations/client_request_common.cc (+35/-55)
src/crimson/osd/osd_operations/client_request_common.h (+3/-6)
src/crimson/osd/osd_operations/common/pg_pipeline.h (+4/-1)
src/crimson/osd/osd_operations/internal_client_request.cc (+3/-1)
src/crimson/osd/osd_operations/internal_client_request.h (+1/-0)
src/crimson/osd/osd_operations/logmissing_request.cc (+1/-1)
src/crimson/osd/osd_operations/osdop_params.h (+0/-1)
src/crimson/osd/osd_operations/peering_event.cc (+19/-16)
src/crimson/osd/osd_operations/pg_advance_map.cc (+24/-39)
src/crimson/osd/osd_operations/recovery_subrequest.cc (+1/-1)
src/crimson/osd/osd_operations/replicated_request.cc (+1/-1)
src/crimson/osd/osd_operations/scrub_events.cc (+51/-63)
src/crimson/osd/osd_operations/snaptrim_event.cc (+106/-109)
src/crimson/osd/osd_operations/snaptrim_event.h (+2/-7)
src/crimson/osd/pg.cc (+176/-81)
src/crimson/osd/pg.h (+118/-47)
src/crimson/osd/pg_backend.cc (+41/-43)
src/crimson/osd/pg_backend.h (+43/-2)
src/crimson/osd/pg_map.cc (+118/-49)
src/crimson/osd/pg_map.h (+3/-1)
src/crimson/osd/pg_recovery.cc (+26/-3)
src/crimson/osd/pg_shard_manager.h (+1/-1)
src/crimson/osd/recovery_backend.cc (+18/-11)
src/crimson/osd/recovery_backend.h (+67/-22)
src/crimson/osd/replicated_backend.cc (+2/-2)
src/crimson/osd/replicated_recovery_backend.cc (+18/-11)
src/crimson/osd/replicated_recovery_backend.h (+1/-2)
src/crimson/osd/shard_services.cc (+27/-18)
src/crimson/osd/shard_services.h (+157/-29)
src/crimson/tools/perf_crimson_msgr.cc (+1/-2)
src/crimson/tools/store_nbd/fs_driver.cc (+3/-6)
src/crimson/tools/store_nbd/tm_driver.cc (+1/-1)
src/exporter/DaemonMetricCollector.cc (+110/-78)
src/exporter/DaemonMetricCollector.h (+10/-4)
src/include/ceph_features.h (+1/-2)
src/include/ceph_fs.h (+2/-0)
src/include/denc.h (+40/-0)
src/include/encoding.h (+9/-5)
src/include/rbd/librbd.h (+13/-0)
src/include/rbd/librbd.hpp (+10/-0)
src/kv/RocksDBStore.cc (+8/-8)
src/librbd/api/DiffIterate.cc (+37/-39)
src/librbd/api/Group.cc (+30/-4)
src/librbd/api/Namespace.cc (+27/-4)
src/librbd/api/Pool.cc (+8/-0)
src/librbd/api/Snapshot.cc (+8/-6)
src/librbd/api/Snapshot.h (+1/-1)
src/librbd/image/CloneRequest.cc (+1/-1)
src/librbd/internal.cc (+28/-14)
src/librbd/internal.h (+2/-2)
src/librbd/librbd.cc (+94/-9)
src/mds/Beacon.cc (+34/-14)
src/mds/Beacon.h (+0/-3)
src/mds/CDentry.cc (+12/-2)
src/mds/CDentry.h (+1/-1)
src/mds/CDir.cc (+4/-10)
src/mds/CDir.h (+1/-1)
src/mds/CInode.cc (+29/-11)
src/mds/CInode.h (+3/-2)
src/mds/FSMap.cc (+14/-0)
src/mds/FSMap.h (+13/-1)
src/mds/Locker.cc (+91/-13)
src/mds/Locker.h (+4/-1)
src/mds/MDCache.cc (+357/-133)
src/mds/MDCache.h (+18/-5)
src/mds/MDSAuthCaps.h (+11/-6)
src/mds/MDSCacheObject.h (+1/-1)
src/mds/MDSDaemon.cc (+18/-5)
src/mds/MDSDaemon.h (+1/-1)
src/mds/MDSRank.cc (+164/-116)
src/mds/MDSRank.h (+5/-8)
src/mds/MDSRankQuiesce.cc (+25/-18)
src/mds/MetricAggregator.cc (+1/-9)
src/mds/MetricAggregator.h (+0/-5)
src/mds/Migrator.cc (+45/-5)
src/mds/Migrator.h (+1/-0)
src/mds/Mutation.cc (+7/-3)
src/mds/Mutation.h (+4/-3)
src/mds/QuiesceAgent.cc (+37/-44)
src/mds/QuiesceAgent.h (+18/-6)
src/mds/QuiesceDb.h (+47/-36)
src/mds/QuiesceDbManager.cc (+152/-73)
src/mds/QuiesceDbManager.h (+23/-12)
src/mds/ScrubStack.cc (+1/-0)
src/mds/Server.cc (+89/-79)
src/mds/Server.h (+1/-0)
src/mds/SessionMap.cc (+1/-0)
src/mds/SessionMap.h (+12/-0)
src/mds/mdstypes.cc (+25/-1)
src/mds/mdstypes.h (+3/-0)
src/messages/MClientMetrics.h (+6/-1)
src/messages/MMDSBeacon.h (+4/-0)
src/messages/MMDSPeerRequest.h (+0/-3)
src/messages/MMonCommandAck.h (+2/-2)
src/mgr/CMakeLists.txt (+5/-0)
src/mgr/DaemonServer.cc (+170/-9)
src/mgr/DaemonServer.h (+11/-1)
src/mgr/MgrOpRequest.cc (+132/-0)
src/mgr/MgrOpRequest.h (+131/-0)
src/mon/FSCommands.cc (+9/-0)
src/mon/FSCommands.h (+8/-0)
src/mon/MDSMonitor.cc (+107/-0)
src/mon/MDSMonitor.h (+2/-0)
src/mon/MonClient.cc (+4/-3)
src/mon/MonCommands.h (+9/-3)
src/mon/OSDMonitor.cc (+9/-3)
src/mon/OSDMonitor.h (+1/-1)
src/mon/PaxosFSMap.h (+47/-0)
src/msg/Dispatcher.h (+6/-0)
src/msg/Messenger.h (+51/-31)
src/os/bluestore/BlueFS.cc (+0/-1)
src/os/bluestore/BlueStore.cc (+49/-72)
src/osd/ECBackend.cc (+16/-23)
src/osd/OSD.cc (+47/-32)
src/osd/OSD.h (+23/-8)
src/osd/OSDMap.cc (+12/-7)
src/osd/PG.h (+2/-1)
src/osd/PGLog.cc (+0/-82)
src/osd/PGLog.h (+0/-7)
src/osd/PrimaryLogPG.cc (+2/-2)
src/osd/PrimaryLogPG.h (+3/-2)
src/osd/SnapMapper.cc (+12/-12)
src/osd/SnapMapper.h (+7/-2)
src/osd/osd_types.h (+5/-1)
src/osd/scheduler/OpScheduler.h (+7/-0)
src/osd/scheduler/mClockScheduler.h (+4/-0)
src/osd/scrubber/osd_scrub.cc (+0/-16)
src/osd/scrubber/osd_scrub.h (+0/-9)
src/osd/scrubber/osd_scrub_sched.cc (+1/-31)
src/osd/scrubber/osd_scrub_sched.h (+0/-36)
src/osd/scrubber/pg_scrubber.cc (+41/-21)
src/osd/scrubber/pg_scrubber.h (+6/-4)
src/osd/scrubber/scrub_job.h (+8/-0)
src/osd/scrubber/scrub_machine.cc (+0/-17)
src/osd/scrubber/scrub_machine.h (+1/-1)
src/osd/scrubber/scrub_machine_lstnr.h (+0/-12)
src/osdc/Striper.cc (+3/-2)
src/pybind/mgr/cephadm/agent.py (+5/-7)
src/pybind/mgr/cephadm/autotune.py (+17/-3)
src/pybind/mgr/cephadm/configchecks.py (+1/-1)
src/pybind/mgr/cephadm/inventory.py (+405/-2)
src/pybind/mgr/cephadm/migrations.py (+59/-1)
src/pybind/mgr/cephadm/module.py (+71/-14)
src/pybind/mgr/cephadm/serve.py (+26/-4)
src/pybind/mgr/cephadm/service_discovery.py (+4/-7)
src/pybind/mgr/cephadm/services/iscsi.py (+2/-1)
src/pybind/mgr/cephadm/services/monitoring.py (+55/-15)
src/pybind/mgr/cephadm/services/nvmeof.py (+31/-5)
src/pybind/mgr/cephadm/services/osd.py (+3/-2)
src/pybind/mgr/cephadm/templates/services/ingress/keepalived.conf.j2 (+5/-0)
src/pybind/mgr/cephadm/templates/services/loki.yml.j2 (+7/-0)
src/pybind/mgr/cephadm/templates/services/nvmeof/ceph-nvmeof.conf.j2 (+5/-4)
src/pybind/mgr/cephadm/templates/services/prometheus/prometheus.yml.j2 (+7/-0)
src/pybind/mgr/cephadm/tests/test_autotune.py (+27/-1)
src/pybind/mgr/cephadm/tests/test_cephadm.py (+243/-2)
src/pybind/mgr/cephadm/tests/test_migration.py (+50/-1)
src/pybind/mgr/cephadm/tests/test_remote_executables.py (+18/-0)
src/pybind/mgr/cephadm/tests/test_services.py (+44/-6)
src/pybind/mgr/cephadm/upgrade.py (+19/-3)
src/pybind/mgr/dashboard/controllers/cephfs.py (+19/-1)
src/pybind/mgr/dashboard/controllers/health.py (+5/-0)
src/pybind/mgr/dashboard/controllers/nvmeof.py (+79/-4)
src/pybind/mgr/dashboard/controllers/rbd.py (+4/-4)
src/pybind/mgr/dashboard/controllers/rgw.py (+159/-10)
src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/create-cluster.po.ts (+3/-3)
src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/osds.po.ts (+5/-0)
src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/services.po.ts (+18/-3)
src/pybind/mgr/dashboard/frontend/cypress/e2e/common/global.feature.po.ts (+4/-0)
src/pybind/mgr/dashboard/frontend/cypress/e2e/common/urls.po.ts (+3/-3)
src/pybind/mgr/dashboard/frontend/cypress/e2e/filesystems/snapshots.e2e-spec.feature (+43/-1)
src/pybind/mgr/dashboard/frontend/cypress/e2e/orchestrator/05-services.e2e-spec.ts (+9/-0)
src/pybind/mgr/dashboard/frontend/cypress/e2e/orchestrator/workflow/10-nfs-exports.e2e-spec.ts (+8/-6)
src/pybind/mgr/dashboard/frontend/cypress/e2e/orchestrator/workflow/nfs/nfs-export.po.ts (+6/-9)
src/pybind/mgr/dashboard/frontend/cypress/e2e/page-helper.po.ts (+31/-2)
src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/buckets.po.ts (+5/-4)
src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/multisite.e2e-spec.ts (+95/-0)
src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/multisite.po.ts (+297/-0)
src/pybind/mgr/dashboard/frontend/dist/cs/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/cs/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/cs/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/cs/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/cs/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/cs/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/de/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/de/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/de/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/de/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/de/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/de/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/en-US/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/en-US/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/en-US/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/en-US/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/en-US/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/es/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/es/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/es/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/es/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/es/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/es/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/fr/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/fr/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/fr/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/fr/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/fr/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/fr/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/id/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/id/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/id/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/id/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/id/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/id/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/it/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/it/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/it/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/it/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/it/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/it/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/ja/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/ja/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/ja/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/ja/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/ja/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/ja/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/ko/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/ko/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/ko/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/ko/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/ko/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/ko/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/pl/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/pl/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/pl/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/pl/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/pl/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/pl/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/pt/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/pt/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/pt/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/pt/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/pt/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/pt/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/zh-Hans/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/zh-Hans/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/zh-Hans/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/zh-Hans/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/zh-Hans/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/zh-Hans/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/zh-Hant/119.6ef5f8a9bbb31760.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/zh-Hant/636.2791bed1e7873eb7.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/zh-Hant/80.ec26c3ab99c30492.js (+1/-0)
src/pybind/mgr/dashboard/frontend/dist/zh-Hant/index.html (+1/-1)
src/pybind/mgr/dashboard/frontend/dist/zh-Hant/main.5d76eec705c379ed.js (+3/-0)
src/pybind/mgr/dashboard/frontend/dist/zh-Hant/runtime.36443ec5d311afe6.js (+1/-0)
src/pybind/mgr/dashboard/frontend/jest.config.cjs (+1/-1)
src/pybind/mgr/dashboard/frontend/src/app/app-routing.module.ts (+44/-32)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/block.module.ts (+83/-1)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-gateway/nvmeof-gateway.component.html (+14/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-gateway/nvmeof-gateway.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-gateway/nvmeof-gateway.component.spec.ts (+53/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-gateway/nvmeof-gateway.component.ts (+44/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-form/nvmeof-initiators-form.component.html (+104/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-form/nvmeof-initiators-form.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-form/nvmeof-initiators-form.component.spec.ts (+61/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-form/nvmeof-initiators-form.component.ts (+135/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-list/nvmeof-initiators-list.component.html (+27/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-list/nvmeof-initiators-list.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-list/nvmeof-initiators-list.component.spec.ts (+68/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-initiators-list/nvmeof-initiators-list.component.ts (+125/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-form/nvmeof-listeners-form.component.html (+76/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-form/nvmeof-listeners-form.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-form/nvmeof-listeners-form.component.spec.ts (+39/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-form/nvmeof-listeners-form.component.ts (+115/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-list/nvmeof-listeners-list.component.html (+21/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-list/nvmeof-listeners-list.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-list/nvmeof-listeners-list.component.spec.ts (+70/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-listeners-list/nvmeof-listeners-list.component.ts (+123/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.html (+118/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.spec.ts (+88/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-form/nvmeof-namespaces-form.component.ts (+192/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-list/nvmeof-namespaces-list.component.html (+20/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-list/nvmeof-namespaces-list.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-list/nvmeof-namespaces-list.component.spec.ts (+84/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-namespaces-list/nvmeof-namespaces-list.component.ts (+181/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-details/nvmeof-subsystems-details.component.html (+39/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-details/nvmeof-subsystems-details.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-details/nvmeof-subsystems-details.component.spec.ts (+49/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-details/nvmeof-subsystems-details.component.ts (+30/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-form/nvmeof-subsystems-form.component.html (+74/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-form/nvmeof-subsystems-form.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-form/nvmeof-subsystems-form.component.spec.ts (+91/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems-form/nvmeof-subsystems-form.component.ts (+108/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems/nvmeof-subsystems.component.html (+29/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems/nvmeof-subsystems.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems/nvmeof-subsystems.component.spec.ts (+80/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-subsystems/nvmeof-subsystems.component.ts (+121/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-tabs/nvmeof-tabs.component.html (+16/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-tabs/nvmeof-tabs.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-tabs/nvmeof-tabs.component.spec.ts (+22/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/nvmeof-tabs/nvmeof-tabs.component.ts (+8/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-feature.interface.ts (+1/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form-edit-request.model.ts (+1/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.html (+142/-125)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.spec.ts (+1/-1)
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.ts (+81/-28)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-form/cephfs-form.component.ts (+3/-3)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-list/cephfs-list.component.ts (+1/-1)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-subvolume-group/cephfs-subvolume-group.component.ts (+11/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-subvolume-list/cephfs-subvolume-list.component.ts (+15/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-subvolume-snapshots-list/cephfs-subvolume-snapshots-list.component.ts (+15/-3)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster-review.component.html (+32/-17)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster-review.component.ts (+18/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster.component.html (+4/-3)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster.component.spec.ts (+2/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster.component.ts (+16/-4)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/hosts.component.html (+6/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/hosts.component.ts (+14/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-form/osd-form.component.spec.ts (+1/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-form/osd-form.component.ts (+27/-3)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-form/service-form.component.html (+241/-42)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-form/service-form.component.spec.ts (+57/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-form/service-form.component.ts (+289/-104)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/upgrade/upgrade.component.html (+1/-1)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/upgrade/upgrade.component.spec.ts (+3/-1)
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/upgrade/upgrade.component.ts (+14/-18)
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard-v3/dashboard/dashboard-v3.component.html (+4/-1)
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard-v3/dashboard/dashboard-v3.component.ts (+11/-9)
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/models/nfs.fsal.ts (+5/-1)
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.html (+111/-81)
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.scss (+0/-8)
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.spec.ts (+42/-17)
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.ts (+193/-103)
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-list/nfs-list.component.spec.ts (+8/-2)
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-list/nfs-list.component.ts (+12/-5)
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs.module.ts (+1/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/utils.ts (+7/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form-modal.component.html (+40/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form-modal.component.ts (+10/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.html (+9/-2)
src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.ts (+10/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/models/rgw-daemon.ts (+1/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/models/rgw-multisite-zone-selector.ts (+33/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/models/rgw-multisite.ts (+11/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html (+75/-38)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.scss (+6/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.ts (+8/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html (+88/-3)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.spec.ts (+8/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.ts (+61/-15)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-daemon-list/rgw-daemon-list.component.spec.ts (+1/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.html (+107/-117)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.spec.ts (+3/-1)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.ts (+3/-1)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-flow-modal/rgw-multisite-sync-flow-modal.component.html (+105/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-flow-modal/rgw-multisite-sync-flow-modal.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-flow-modal/rgw-multisite-sync-flow-modal.component.spec.ts (+40/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-flow-modal/rgw-multisite-sync-flow-modal.component.ts (+183/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-pipe-modal/rgw-multisite-sync-pipe-modal.component.html (+115/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-pipe-modal/rgw-multisite-sync-pipe-modal.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-pipe-modal/rgw-multisite-sync-pipe-modal.component.spec.ts (+36/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-pipe-modal/rgw-multisite-sync-pipe-modal.component.ts (+138/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy-details/rgw-multisite-sync-policy-details.component.html (+123/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy-details/rgw-multisite-sync-policy-details.component.scss (+3/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy-details/rgw-multisite-sync-policy-details.component.spec.ts (+26/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy-details/rgw-multisite-sync-policy-details.component.ts (+346/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy-form/rgw-multisite-sync-policy-form.component.html (+94/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy-form/rgw-multisite-sync-policy-form.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy-form/rgw-multisite-sync-policy-form.component.spec.ts (+36/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy-form/rgw-multisite-sync-policy-form.component.ts (+174/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy/rgw-multisite-sync-policy.component.html (+47/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy/rgw-multisite-sync-policy.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy/rgw-multisite-sync-policy.component.spec.ts (+28/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-policy/rgw-multisite-sync-policy.component.ts (+207/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-tabs/rgw-multisite-tabs.component.html (+16/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-tabs/rgw-multisite-tabs.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-tabs/rgw-multisite-tabs.component.spec.ts (+22/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-tabs/rgw-multisite-tabs.component.ts (+8/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-overview-dashboard/rgw-overview-dashboard.component.spec.ts (+1/-0)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.spec.ts (+3/-2)
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw.module.ts (+84/-7)
src/pybind/mgr/dashboard/frontend/src/app/core/auth/login/login.component.spec.ts (+3/-1)
src/pybind/mgr/dashboard/frontend/src/app/core/auth/login/login.component.ts (+5/-1)
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/breadcrumbs/breadcrumbs.component.spec.ts (+4/-4)
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/breadcrumbs/breadcrumbs.component.ts (+1/-1)
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.html (+9/-3)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/erasure-code-profile.service.ts (+7/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/health.service.ts (+4/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/nfs.service.ts (+3/-3)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.spec.ts (+58/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/nvmeof.service.ts (+137/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/osd.service.ts (+3/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-bucket.service.spec.ts (+7/-4)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-bucket.service.ts (+9/-3)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-multisite.service.spec.ts (+211/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-multisite.service.ts (+73/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/api/upgrade.service.ts (+32/-2)
src/pybind/mgr/dashboard/frontend/src/app/shared/components/components.module.ts (+5/-2)
src/pybind/mgr/dashboard/frontend/src/app/shared/components/form-modal/form-modal.component.ts (+18/-1)
src/pybind/mgr/dashboard/frontend/src/app/shared/components/upgradable/upgradable.component.html (+26/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/components/upgradable/upgradable.component.scss (+0/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/components/upgradable/upgradable.component.spec.ts (+24/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/components/upgradable/upgradable.component.ts (+57/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/constants/app.constants.ts (+5/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.html (+24/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.ts (+6/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/enum/cell-template.enum.ts (+20/-1)
src/pybind/mgr/dashboard/frontend/src/app/shared/enum/icons.enum.ts (+2/-1)
src/pybind/mgr/dashboard/frontend/src/app/shared/forms/cd-validators.spec.ts (+2/-2)
src/pybind/mgr/dashboard/frontend/src/app/shared/forms/cd-validators.ts (+56/-12)
src/pybind/mgr/dashboard/frontend/src/app/shared/models/breadcrumbs.ts (+3/-1)
src/pybind/mgr/dashboard/frontend/src/app/shared/models/cd-form-modal-field-config.ts (+5/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/models/erasure-code-profile.ts (+2/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/models/nvmeof.ts (+49/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/models/permission.spec.ts (+3/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/models/permissions.ts (+2/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/models/service.interface.ts (+6/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/mbpersecond.pipe.spec.ts (+8/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/mbpersecond.pipe.ts (+10/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/pipes.module.ts (+10/-3)
src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/xml.pipe.spec.ts (+22/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/pipes/xml.pipe.ts (+16/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/services/json-to-xml.service.spec.ts (+44/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/services/json-to-xml.service.ts (+40/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-message.service.ts (+74/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-json-formatter.service.ts (+1/-1)
src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-xml-formatter.service.spec.ts (+16/-0)
src/pybind/mgr/dashboard/frontend/src/app/shared/services/text-area-xml-formatter.service.ts (+23/-0)
src/pybind/mgr/dashboard/openapi.yaml (+459/-0)
src/pybind/mgr/dashboard/services/nvmeof_client.py (+17/-6)
src/pybind/mgr/dashboard/services/nvmeof_conf.py (+54/-0)
src/pybind/mgr/dashboard/services/orchestrator.py (+14/-0)
src/pybind/mgr/dashboard/services/rbd.py (+13/-6)
src/pybind/mgr/dashboard/services/rgw_client.py (+376/-13)
src/pybind/mgr/dashboard/tests/__init__.py (+2/-0)
src/pybind/mgr/dashboard/tests/test_rgw.py (+110/-1)
src/pybind/mgr/dashboard/tests/test_rgw_client.py (+44/-0)
src/pybind/mgr/dashboard/tox.ini (+1/-1)
src/pybind/mgr/mirroring/fs/snapshot_mirror.py (+2/-2)
src/pybind/mgr/object_format.py (+2/-2)
src/pybind/mgr/orchestrator/_interface.py (+26/-0)
src/pybind/mgr/orchestrator/module.py (+65/-2)
src/pybind/mgr/prometheus/module.py (+2/-2)
src/pybind/mgr/rgw/module.py (+12/-9)
src/pybind/mgr/snap_schedule/fs/schedule.py (+5/-5)
src/pybind/mgr/snap_schedule/fs/schedule_client.py (+2/-2)
src/pybind/mgr/stats/fs/perf_stats.py (+1/-0)
src/pybind/mgr/volumes/fs/operations/clone_index.py (+17/-15)
src/pybind/rbd/c_rbd.pxd (+14/-2)
src/pybind/rbd/mock_rbd.pxi (+16/-2)
src/pybind/rbd/rbd.pyx (+90/-32)
src/python-common/ceph/deployment/service_spec.py (+83/-20)
src/python-common/ceph/rgw/rgwam_core.py (+2/-2)
src/python-common/ceph/tests/test_service_spec.py (+9/-0)
src/rgw/driver/daos/rgw_sal_daos.cc (+11/-5)
src/rgw/driver/motr/rgw_sal_motr.cc (+11/-4)
src/rgw/driver/rados/rgw_cr_rados.cc (+8/-10)
src/rgw/driver/rados/rgw_log_backing.h (+1/-1)
src/rgw/driver/rados/rgw_notify.cc (+229/-163)
src/rgw/driver/rados/rgw_notify.h (+3/-6)
src/rgw/driver/rados/rgw_pubsub_push.cc (+71/-18)
src/rgw/driver/rados/rgw_pubsub_push.h (+10/-7)
src/rgw/driver/rados/rgw_rados.cc (+39/-19)
src/rgw/driver/rados/rgw_rados.h (+3/-2)
src/rgw/driver/rados/rgw_sal_rados.cc (+33/-5)
src/rgw/driver/rados/rgw_sal_rados.h (+6/-0)
src/rgw/driver/rados/rgw_zone.cc (+12/-8)
src/rgw/driver/rados/topic.cc (+10/-2)
src/rgw/rgw_admin.cc (+80/-2)
src/rgw/rgw_amqp.cc (+31/-11)
src/rgw/rgw_appmain.cc (+0/-26)
src/rgw/rgw_asio_frontend.cc (+5/-3)
src/rgw/rgw_auth.cc (+9/-7)
src/rgw/rgw_auth.h (+4/-1)
src/rgw/rgw_file.cc (+2/-0)
src/rgw/rgw_kafka.cc (+164/-153)
src/rgw/rgw_lc.cc (+64/-71)
src/rgw/rgw_lib.cc (+0/-1)
src/rgw/rgw_lua_background.cc (+5/-3)
src/rgw/rgw_main.cc (+0/-1)
src/rgw/rgw_main.h (+0/-1)
src/rgw/rgw_notify_event_type.cc (+8/-4)
src/rgw/rgw_notify_event_type.h (+2/-0)
src/rgw/rgw_op.cc (+12/-13)
src/rgw/rgw_pubsub.cc (+19/-2)
src/rgw/rgw_pubsub.h (+45/-1)
src/rgw/rgw_ratelimit.h (+3/-2)
src/rgw/rgw_rest_pubsub.cc (+6/-4)
src/rgw/rgw_rest_role.cc (+8/-2)
src/rgw/rgw_sal.h (+10/-0)
src/rgw/rgw_sal_dbstore.cc (+14/-0)
src/rgw/rgw_sal_dbstore.h (+7/-0)
src/rgw/rgw_sal_filter.cc (+14/-0)
src/rgw/rgw_sal_filter.h (+6/-0)
src/seastar/include/seastar/core/sstring.hh (+1/-4)
src/test/cli/radosgw-admin/help.t (+2/-0)
src/test/cli/rbd/help.t (+5/-3)
src/test/crimson/CMakeLists.txt (+8/-0)
src/test/crimson/ctest_utils.h (+78/-0)
src/test/crimson/gtest_seastar.h (+46/-5)
src/test/crimson/seastar_runner.h (+3/-1)
src/test/crimson/seastore/onode_tree/test_fltree_onode_manager.cc (+7/-3)
src/test/crimson/seastore/onode_tree/test_staged_fltree.cc (+8/-6)
src/test/crimson/seastore/test_block.h (+5/-1)
src/test/crimson/seastore/test_btree_lba_manager.cc (+143/-45)
src/test/crimson/seastore/test_cbjournal.cc (+7/-1)
src/test/crimson/seastore/test_collection_manager.cc (+7/-3)
src/test/crimson/seastore/test_object_data_handler.cc (+183/-34)
src/test/crimson/seastore/test_omap_manager.cc (+7/-3)
src/test/crimson/seastore/test_seastore.cc (+46/-21)
src/test/crimson/seastore/test_seastore_cache.cc (+34/-17)
src/test/crimson/seastore/test_seastore_journal.cc (+8/-6)
src/test/crimson/seastore/test_transaction_manager.cc (+147/-29)
src/test/crimson/seastore/transaction_manager_test_state.h (+32/-6)
src/test/crimson/test_alien_echo.cc (+4/-4)
src/test/crimson/test_alienstore_thread_pool.cc (+2/-1)
src/test/crimson/test_buffer.cc (+2/-1)
src/test/crimson/test_config.cc (+2/-1)
src/test/crimson/test_crimson_coroutine.cc (+327/-0)
src/test/crimson/test_denc.cc (+1/-1)
src/test/crimson/test_errorator.cc (+43/-55)
src/test/crimson/test_interruptible_future.cc (+3/-0)
src/test/crimson/test_messenger.cc (+10/-11)
src/test/crimson/test_messenger_thrash.cc (+3/-3)
src/test/crimson/test_monc.cc (+2/-1)
src/test/crimson/test_perfcounters.cc (+2/-1)
src/test/crimson/test_socket.cc (+10/-8)
src/test/encoding.cc (+1/-1)
src/test/exporter/test_exporter.cc (+68/-0)
src/test/lazy-omap-stats/CMakeLists.txt (+1/-1)
src/test/lazy-omap-stats/lazy_omap_stats_test.cc (+33/-31)
src/test/lazy-omap-stats/lazy_omap_stats_test.h (+4/-4)
src/test/libcephfs/CMakeLists.txt (+15/-1)
src/test/libcephfs/test.cc (+0/-33)
src/test/libcephfs/vxattr.cc (+72/-0)
src/test/librados/misc.cc (+3/-3)
src/test/librados/misc_cxx.cc (+1/-0)
src/test/librados/snapshots_cxx.cc (+0/-3)
src/test/librados_test_stub/TestMemIoCtxImpl.cc (+1/-1)
src/test/librbd/exclusive_lock/test_mock_PostAcquireRequest.cc (+0/-2)
src/test/librbd/exclusive_lock/test_mock_PreAcquireRequest.cc (+0/-2)
src/test/librbd/exclusive_lock/test_mock_PreReleaseRequest.cc (+0/-2)
src/test/librbd/fsx.cc (+32/-20)
src/test/librbd/test_Groups.cc (+27/-17)
src/test/librbd/test_librbd.cc (+656/-296)
src/test/mds/TestQuiesceAgent.cc (+173/-67)
src/test/mds/TestQuiesceDb.cc (+214/-31)
src/test/neorados/misc.cc (+1/-0)
src/test/objectstore/store_test.cc (+9/-0)
src/test/osd/RadosModel.h (+2/-1)
src/test/osd/TestRados.cc (+4/-0)
src/test/pybind/test_rados.py (+2/-0)
src/test/pybind/test_rbd.py (+669/-54)
src/test/rbd_mirror/test_ImageDeleter.cc (+1/-1)
src/test/rbd_mirror/test_mock_PoolReplayer.cc (+154/-0)
src/test/rgw/bucket_notification/test_bn.py (+378/-47)
src/test/rgw/rgw_multi/tests.py (+134/-0)
src/test/rgw/test_multi.py (+5/-3)
src/test/test_denc.cc (+64/-11)
src/tools/cephfs/JournalTool.cc (+57/-20)
src/tools/cephfs/JournalTool.h (+0/-1)
src/tools/cephfs/first-damage.py (+1/-1)
src/tools/cephfs/shell/cephfs-shell (+2/-3)
src/tools/cephfs_mirror/FSMirror.cc (+3/-2)
src/tools/cephfs_mirror/FSMirror.h (+36/-18)
src/tools/cephfs_mirror/InstanceWatcher.cc (+5/-4)
src/tools/cephfs_mirror/InstanceWatcher.h (+5/-16)
src/tools/cephfs_mirror/Mirror.cc (+10/-9)
src/tools/cephfs_mirror/MirrorWatcher.cc (+5/-5)
src/tools/cephfs_mirror/MirrorWatcher.h (+5/-16)
src/tools/cephfs_mirror/PeerReplayer.cc (+16/-12)
src/tools/cephfs_mirror/PeerReplayer.h (+3/-6)
src/tools/cephfs_mirror/Types.h (+2/-0)
src/tools/cephfs_mirror/Watcher.h (+7/-0)
src/tools/rados/rados.cc (+26/-2)
src/tools/rbd/ArgumentTypes.cc (+14/-2)
src/tools/rbd/ArgumentTypes.h (+2/-1)
src/tools/rbd/action/Children.cc (+1/-1)
src/tools/rbd/action/Clone.cc (+24/-10)
src/tools/rbd/action/Device.cc (+4/-4)
src/tools/rbd/action/Snap.cc (+29/-24)
src/tools/rbd_mirror/Mirror.cc (+16/-8)
src/tools/rbd_mirror/PoolReplayer.cc (+7/-0)
src/tools/rbd_wnbd/rbd_mapping.cc (+132/-0)
src/tools/rbd_wnbd/rbd_mapping.h (+8/-0)
src/tools/rbd_wnbd/rbd_wnbd.cc (+5/-73)
src/tools/rbd_wnbd/rbd_wnbd.h (+0/-5)
src/tracing/CMakeLists.txt (+2/-1)
src/tracing/librbd.tp (+42/-12)
src/tracing/mgroprequest.c (+5/-0)
src/tracing/mgroprequest.tp (+27/-0)
src/vstart.sh (+33/-2)
CVE References
| tags: | added: patch |
| description: | updated |
| Changed in ceph (Ubuntu Noble): | |
| status: | Triaged → In Progress |
| assignee: | nobody → Matthew Ruffell (mruffell) |

I am currently looking at this, and hopefully can provide a patch soon.
I'd like your opinion on whether this would be worthwhile.