]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/log
ceph.git
4 days agomonitoring: add Ceph Hardware - Compression dashboard 69925/head
Afreen Misbah [Thu, 2 Jul 2026 00:55:13 +0000 (06:25 +0530)]
monitoring: add Ceph Hardware - Compression dashboard

Add comprehensive Grafana dashboard for monitoring hardware compression
metrics from FCM-enabled drives.

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit da21940d118bbd4f88af1e985e2753551ed3a4a7)

4 days agomonitoring: add panel descriptions and fix tooltip labels
Afreen Misbah [Wed, 1 Jul 2026 12:25:06 +0000 (17:55 +0530)]
monitoring: add panel descriptions and fix tooltip labels

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit b231e6f31893bf0cdce972a78c5a9e8faeaf39b7)

4 days agomonitoring: add PSU temperature graph to hardware dashboard
Afreen Misbah [Thu, 25 Jun 2026 22:07:58 +0000 (03:37 +0530)]
monitoring: add PSU temperature graph to hardware dashboard

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit 4be833e11e5138454cc39d4acb5ae2a604e1e486)

4 days agomointoring: Add hardware alerts
Afreen Misbah [Thu, 2 Jul 2026 09:21:19 +0000 (14:51 +0530)]
mointoring: Add hardware alerts

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit 42b3a7dfe820cab0fd5b8af22c88a29c5a1dc546)

4 days agomgr/promethues: fixed tests and refactor module.py
Afreen Misbah [Wed, 1 Jul 2026 11:19:00 +0000 (16:49 +0530)]
mgr/promethues: fixed tests and refactor module.py

- Update tests to check for queries in nested row panels
- fix tox tests
- add named tuple

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit aba8698e961da03384c9493cd74e46e368d4c38b)

4 days agomgr/prometheus: refactor hardware metrics
Afreen Misbah [Tue, 30 Jun 2026 14:09:13 +0000 (19:39 +0530)]
mgr/prometheus: refactor hardware metrics

- export `firmware_version` labels from `node_proxy_storage_capacity_bytes` metrics to be used in device firmware panel
- improve iterations for performance - dropping redundant node_proxy_firmware() RPC; firmware data is already
  present in the fullreport response, and removing unnecessary loops.
- replace health if/elif chain with HEALTH_STATUS_MAP dict lookup
- rename metrics to ceph_hardware_*, fix component labels and add tests
- added unit test cases
- add serial name, slot info to capacity metric
- fix health metrics showing ID instead of component name

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit be324304db45f37d3a4027ab568c5010003ef486)

4 days agomonitoring: improve hardware Grafana dashboard panels
Afreen Misbah [Thu, 25 Jun 2026 18:58:53 +0000 (00:28 +0530)]
monitoring: improve hardware Grafana dashboard panels

- CPU/NVMe temp: change from stat to gauge panels with colored
  arc thresholds (green/yellow/red) and proper °C units
- Health panels: wrap queries in max() aggregation to show
  single worst-case value instead of overlapping series
- Pie charts: switch to donut style with visible legends
- Fan RPM: use locale unit for comma formatting instead of
  short which auto-scaled to "K"
- Fix temperature panels units
- Add Device List and Platform Firmware table panels

Fixes https://tracker.ceph.com/issues/77723

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit 5dd6807e3187ba6792f69736b5e4d396832b1686)

4 days agomgr/prometheus: Rename node_proxy_memory_capacity_mib to node_proxy_memory_capacity_bytes
Afreen Misbah [Thu, 25 Jun 2026 18:58:21 +0000 (00:28 +0530)]
mgr/prometheus: Rename node_proxy_memory_capacity_mib to node_proxy_memory_capacity_bytes

Prometheus naming conventions require base units (bytes not MiB)

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit ae0567e98a545f13b0c47c4b0e54220cf21e6eb5)

4 days agomonitoring: fix hardware Grafana dashboard and health metrics
Afreen Misbah [Thu, 25 Jun 2026 08:18:19 +0000 (13:48 +0530)]
monitoring: fix hardware Grafana dashboard and health metrics

- Fix fan repeating panels: set multi=true on fan_speeds template
  variable so Grafana generates one panel per fan instead of one
- Remove TACH-only regex filter on fan_speeds template and AVG
  Cooling query so all system fans are visible regardless of naming
- Replace duplicate Power Control panel with Network health panel
- Fix NVMe drive count to use storage_capacity_bytes{protocol=NVMe}
  instead of counting temperature sensors (inaccurate proxy)
- Normalize all hostname filters to regex match (=~) for consistency
- Register hardware.libsonnet in dashboards.libsonnet so the
  dashboard JSON is generated during ceph-mixin builds
- Add temperatures category to prometheus health metrics loop

Signed-off-by: Afreen Misbah <afreen@ibm.com>
Assisted-by: Claude
Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit 04207ca6dcfc86c51845912848d9cbf1a7cb87d0)

4 days agomgr/prometheus: use orchestrator API for node-proxy hardware metrics
Afreen Misbah [Thu, 25 Jun 2026 08:13:38 +0000 (13:43 +0530)]
mgr/prometheus: use orchestrator API for node-proxy hardware metrics

The hardware metrics exporter was reading cephadm's private KV store
directly via get_store_prefix('mgr/cephadm/node_proxy/data'). This
had two problems:

1. get_store_prefix() is module-scoped, so from the prometheus module
   it searched under prometheus's own namespace instead of cephadm's,
   resulting in zero metrics being exported despite metric definitions
   appearing at /metrics.

2. The firmware key was accessed as 'firmwares' (plural) but the
   stored field is 'firmware' (singular), causing all firmware version
   metrics to be silently empty.

Use node_proxy_fullreport() and node_proxy_firmware() via the
OrchestratorClientMixin instead. This routes through cephadm's
NodeProxyCache which handles KV access and firmware key compat
correctly. Follows the same pattern as set_cephadm_daemon_status_metrics()
and get_smb_metadata().

Signed-off-by: Afreen Misbah <afreen@ibm.com>
Assisted-by: Claude
Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit 6bb07c6e5393daeb72fe0cf3832955721e7b4b18)

4 days agomonitoring: add hardware metrics Grafana dashboard
Afreen Misbah [Thu, 11 Jun 2026 23:56:00 +0000 (05:26 +0530)]
monitoring: add hardware metrics Grafana dashboard

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit 0514014687defceb1805c5ca7c628d6de968a518)

4 days agomgr/prometheus: add node-proxy hardware metrics exporter
Afreen Misbah [Thu, 11 Jun 2026 23:55:55 +0000 (05:25 +0530)]
mgr/prometheus: add node-proxy hardware metrics exporter

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit aa8f05400de764e9f1b8b3d65d871a665cd922ed)

4 days agoMerge PR #69980 into tentacle
Patrick Donnelly [Thu, 9 Jul 2026 19:58:37 +0000 (15:58 -0400)]
Merge PR #69980 into tentacle

* refs/pull/69980/head:
nvmeof: Change the NVMEOF image version to 1.7

4 days agoMerge PR #69338 into tentacle
Patrick Donnelly [Thu, 9 Jul 2026 19:57:24 +0000 (15:57 -0400)]
Merge PR #69338 into tentacle

* refs/pull/69338/head:
qa/suites/nvmeof: ignore "have only 1 nvmeof gateway"
qa/suites/nvmeof: set beacon grace and connect panic

4 days agoMerge PR #69729 into tentacle
Patrick Donnelly [Thu, 9 Jul 2026 19:56:19 +0000 (15:56 -0400)]
Merge PR #69729 into tentacle

* refs/pull/69729/head:
qa: fix nvmeof upgrade from v20.2.0

4 days agoMerge PR #69773 into tentacle
Patrick Donnelly [Thu, 9 Jul 2026 19:52:43 +0000 (15:52 -0400)]
Merge PR #69773 into tentacle

* refs/pull/69773/head:
mClockScheduler: adjust mClock profile parameters to prevent backfill starvation
src/messages, osd: Calculate and set cost for subOpReads for mClock scheduler
osd/scheduler: Classify EC subOp reads according to op priority for mClock
osd/scheduler/mClockScheduler: Fix line alignments
osd/scheduler/mClockScheduler: Log the size of high priority queues.

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
4 days agoMerge PR #68968 into tentacle
Patrick Donnelly [Thu, 9 Jul 2026 19:21:32 +0000 (15:21 -0400)]
Merge PR #68968 into tentacle

* refs/pull/68968/head:
rgw/bucket-logging: handle SigV2 presigned URLs

Reviewed-by: Yuval Lifshitz <ylifshit@redhat.com>
4 days agoMerge PR #66522 into tentacle
Patrick Donnelly [Thu, 9 Jul 2026 19:21:06 +0000 (15:21 -0400)]
Merge PR #66522 into tentacle

* refs/pull/66522/head:
rgw/services: don't expose RGWServices::notify
rgw/services: don't allocate RGWSI_Notify unless its used
rgw: remove unused RGWSI_Finisher
rgw: RGWSI_Notify drains the finisher before deleting RGWWatchers
rgw: RGWSI_Notify uses Finisher instead of RGWSI_Finisher
rgw: RGWSI_Notify spawns a coroutine on null_yield

Reviewed-by: Krunal Chheda <kchheda3@bloomberg.net>
4 days agoMerge PR #69113 into tentacle
Patrick Donnelly [Thu, 9 Jul 2026 19:01:17 +0000 (15:01 -0400)]
Merge PR #69113 into tentacle

* refs/pull/69113/head:
rgw/datalog: DataLogBackends::trim_entries: fix crash when target_gen > head_gen
test/rgw/datalog: test for trim_entries with max_marker
rgw/datalog: also handle errors properly for fifo trim
neocls log trimming (time based): fix infinite loop on ENODATA
neocls log trimming (marker based): fix infinite loop on ENODATA
test/neocls/log trimming: reproduce log trimming can go into an infinite loop

Reviewed-by: Casey Bodley <cbodley@redhat.com>
5 days agoMerge PR #69160 into tentacle
Patrick Donnelly [Wed, 8 Jul 2026 23:14:52 +0000 (19:14 -0400)]
Merge PR #69160 into tentacle

* refs/pull/69160/head:
osd/scrub: removed a misleading comment about 'overdue' scrubs
osd/scrub: 'repairing' scrubs allowed at all times

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
5 days agoMerge PR #68865 into tentacle
Patrick Donnelly [Wed, 8 Jul 2026 23:11:13 +0000 (19:11 -0400)]
Merge PR #68865 into tentacle

* refs/pull/68865/head:
osd: prevent OSDMap::check_health() from asserting due to new OSDs found in subtree

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
5 days agoMerge PR #68692 into tentacle
Patrick Donnelly [Wed, 8 Jul 2026 23:08:00 +0000 (19:08 -0400)]
Merge PR #68692 into tentacle

* refs/pull/68692/head:
mgr/pg_autoscaler: Add 'osd pool get threshold' command which returns the current threshold value

7 days agoqa: fix nvmeof upgrade from v20.2.0 69729/head
Vallari Agrawal [Wed, 8 Apr 2026 15:51:45 +0000 (21:21 +0530)]
qa: fix nvmeof upgrade from v20.2.0

Bootstrap fails on v20.2.0 upgrade because of
cephadm binary and ceph image version mismatch.

This fixes following problem in bootstrap by using
tentacle cephadm binary:
```
Error: Container release tentacle != cephadm release umbrella; please use matching version of cephadm (pass --allow-mismatched-release to continue anyway)
```

Fixes: https://tracker.ceph.com/issues/75912
Signed-off-by: Vallari Agrawal <vallari.agrawal@ibm.com>
(cherry picked from commit 6f648e7c8ce0631e172e2e290102354a3ffb848f)

7 days agonvmeof: Change the NVMEOF image version to 1.7 69980/head
Gil Bregman [Mon, 23 Feb 2026 10:56:54 +0000 (12:56 +0200)]
nvmeof: Change the NVMEOF image version to 1.7
Fixes: https://tracker.ceph.com/issues/75097
Signed-off-by: Gil Bregman <gbregman@il.ibm.com>
(cherry picked from commit 02587347b0a4e7ae1d7f5d738bd33808e2d56bc9)

Conflicts:
src/python-common/ceph/cephadm/images.py
The indentation was changed between the main branch and tentacle which
caused a conflict

7 days agoMerge PR #65457 into tentacle
Patrick Donnelly [Mon, 6 Jul 2026 22:26:46 +0000 (18:26 -0400)]
Merge PR #65457 into tentacle

* refs/pull/65457/head:
[Stretch Mode] mon: restrict changing mon election strategy post stretch mode

Reviewed-by: Brad Hubbard <bhubbard@redhat.com>
7 days agoMerge PR #67338 into tentacle
Patrick Donnelly [Mon, 6 Jul 2026 22:26:24 +0000 (18:26 -0400)]
Merge PR #67338 into tentacle

* refs/pull/67338/head:
qa/tasks/thrashosds-health: fine tune ignorelist for degraded and undersized pgs

Reviewed-by: Kamoltat Sirivadhna <ksirivad@redhat.com>
7 days agoMerge PR #69015 into tentacle
Patrick Donnelly [Mon, 6 Jul 2026 22:25:24 +0000 (18:25 -0400)]
Merge PR #69015 into tentacle

* refs/pull/69015/head:
mgr/DaemonServer: auto-tune stats period when message queue gets backed up

7 days agoMerge PR #68689 into tentacle
Patrick Donnelly [Mon, 6 Jul 2026 22:22:27 +0000 (18:22 -0400)]
Merge PR #68689 into tentacle

* refs/pull/68689/head:
test: rados singleton-bluestore missing mds for cephtool tests

7 days agoMerge PR #69150 into tentacle
Patrick Donnelly [Mon, 6 Jul 2026 22:19:43 +0000 (18:19 -0400)]
Merge PR #69150 into tentacle

* refs/pull/69150/head:
mgr/smb: fix incorrect referenced variable

Reviewed-by: Xavi Hernandez <xhernandez@gmail.com>
Reviewed-by: Avan Thakkar <athakkar@redhat.com>
7 days agoMerge PR #69075 into tentacle
Patrick Donnelly [Mon, 6 Jul 2026 22:18:20 +0000 (18:18 -0400)]
Merge PR #69075 into tentacle

* refs/pull/69075/head:
mon/OSDMonitor: remove unused crush rules after erasure code pools deleted

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
7 days agoMerge PR #69050 into tentacle
Patrick Donnelly [Mon, 6 Jul 2026 22:17:37 +0000 (18:17 -0400)]
Merge PR #69050 into tentacle

* refs/pull/69050/head:
librados/asio: clear cancellation slot in associated executor
librados/asio: extend lifetime of AioCompletion

Reviewed-by: Shilpa Jagannath <smanjara@redhat.com>
7 days agoMerge PR #69025 into tentacle
Patrick Donnelly [Mon, 6 Jul 2026 22:17:03 +0000 (18:17 -0400)]
Merge PR #69025 into tentacle

* refs/pull/69025/head:
nvmeofgw : do not process starting  beacons from GWs in DELETING state

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
7 days agoMerge PR #69848 into tentacle
Patrick Donnelly [Mon, 6 Jul 2026 22:14:54 +0000 (18:14 -0400)]
Merge PR #69848 into tentacle

* refs/pull/69848/head:
mgr/dashboard: fix nested shell quoting in cephadm e2e start-cluster
mgr/dashboard: run kcli commands in libvritd group

Reviewed-by: Nizamudeen A <nia@redhat.com>
12 days agoMerge pull request #69703 from guits/wip-77636-tentacle
Neha Ojha [Wed, 1 Jul 2026 22:08:29 +0000 (15:08 -0700)]
Merge pull request #69703 from guits/wip-77636-tentacle

tentacle: ceph-volume: skip internal raid mirror LVs in inventory

Reviewed-by: Adam King <adking@redhat.com>
12 days agoMerge pull request #69091 from guits/wip-76800-tentacle
Neha Ojha [Wed, 1 Jul 2026 22:07:24 +0000 (15:07 -0700)]
Merge pull request #69091 from guits/wip-76800-tentacle

tentacle: ceph-volume: OSD mapper lifecycle (LVM + raw) for activate

Reviewed-by: Adam King <adking@redhat.com>
12 days agoMerge pull request #69206 from guits/wip-77020-tentacle
Neha Ojha [Wed, 1 Jul 2026 22:06:46 +0000 (15:06 -0700)]
Merge pull request #69206 from guits/wip-77020-tentacle

tentacle: ceph-volume: retry lvs after empty result and "devices file is missing" stderr

Reviewed-by: Adam King <adking@redhat.com>
12 days agoMerge pull request #68586 from guits/wip-76240-tentacle
Neha Ojha [Wed, 1 Jul 2026 19:45:40 +0000 (12:45 -0700)]
Merge pull request #68586 from guits/wip-76240-tentacle

tentacle: ceph-volume: has_bluestore_label checks all bluestore label replica o…

Reviewed-by: Adam King <adking@redhat.com>
12 days agoMerge pull request #68681 from guits/wip-76351-tentacle
Neha Ojha [Wed, 1 Jul 2026 19:45:03 +0000 (12:45 -0700)]
Merge pull request #68681 from guits/wip-76351-tentacle

tentacle: ceph-volume: make TPM2 PCR policy configurable (default to PCR 7)

Reviewed-by: Teoman ONAY <tonay@ibm.com>
12 days agoMerge pull request #68751 from guits/wip-76043-tentacle
Neha Ojha [Wed, 1 Jul 2026 19:44:19 +0000 (12:44 -0700)]
Merge pull request #68751 from guits/wip-76043-tentacle

tentacle: mgr/cephadm: renames ceph_device to ceph_device_lvm

Reviewed-by: Teoman ONAY <tonay@ibm.com>
12 days agoMerge pull request #68882 from guits/wip-76571-tentacle
Neha Ojha [Wed, 1 Jul 2026 19:43:19 +0000 (12:43 -0700)]
Merge pull request #68882 from guits/wip-76571-tentacle

tentacle: ceph-volume: fix argparse dmcrypt opts: use str type

Reviewed-by: Teoman ONAY <tonay@ibm.com>
12 days agoMerge pull request #68883 from guits/wip-76569-tentacle
Neha Ojha [Wed, 1 Jul 2026 19:42:56 +0000 (12:42 -0700)]
Merge pull request #68883 from guits/wip-76569-tentacle

tentacle: ceph-volume: fallback to default for empty get_file_contents values

Reviewed-by: Teoman ONAY <tonay@ibm.com>
12 days agoMerge pull request #69542 from sseshasa/wip-77444-tentacle
Neha Ojha [Wed, 1 Jul 2026 17:19:42 +0000 (10:19 -0700)]
Merge pull request #69542 from sseshasa/wip-77444-tentacle

tentacle: mgr/DaemonServer: Aggregate and globally sort OSDs for ok-to-upgrade

Reviewed-by: Nitzan Mordechai <nmordech@redhat.com>
13 days agomgr/dashboard: fix nested shell quoting in cephadm e2e start-cluster 69848/head
Afreen Misbah [Wed, 27 May 2026 00:07:38 +0000 (05:37 +0530)]
mgr/dashboard: fix nested shell quoting in cephadm e2e start-cluster

with_libvirt wraps commands in sg libvirt -c "$1", adding an extra
shell layer. Nested double quotes inside the outer double-quoted
string caused the argument to be split — with_libvirt received a
truncated $1, producing "Unterminated quoted string" on the remote
shell.

Drop the unnecessary inner double quotes around cephadm shell
arguments since cephadm shell accepts the command as separate args.
Use single quotes for the grep pattern inside the double-quoted
string so it survives the sg subshell.

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit ae1fee05818e202287609ec1cbebd5f73ed4fd81)

13 days agomgr/dashboard: run kcli commands in libvritd group
Nizamudeen A [Thu, 2 Apr 2026 10:55:19 +0000 (16:25 +0530)]
mgr/dashboard: run kcli commands in libvritd group

Also https://github.com/ceph/ceph-build/pull/2562/
Signed-off-by: Nizamudeen A <nia@redhat.com>
(cherry picked from commit 8293aa38bd9c9abca6353ebbdb64401bf3263017)

13 days agoMerge pull request #69377 from NitzanMordhai/wip-77281-tentacle
Neha Ojha [Tue, 30 Jun 2026 18:38:37 +0000 (11:38 -0700)]
Merge pull request #69377 from NitzanMordhai/wip-77281-tentacle

tentacle: qa: ignore evicted client warnings for singletone bluestore

Reviewed-by: Neha Ojha <nojha@redhat.com>
13 days agoMerge pull request #69369 from sseshasa/wip-77126-tentacle
Neha Ojha [Tue, 30 Jun 2026 18:37:20 +0000 (11:37 -0700)]
Merge pull request #69369 from sseshasa/wip-77126-tentacle

tentacle: mgr/DaemonServer: clarify ok-to-upgrade error message for CRUSH buckets

Reviewed-by: Kamoltat Sirivadhna <ksirivad@redhat.com>
Reviewed-by: Aishwarya Mathuria <amathuri@redhat.com>
13 days agoMerge pull request #68508 from batrick/wip-76074-tentacle
Neha Ojha [Tue, 30 Jun 2026 18:36:12 +0000 (11:36 -0700)]
Merge pull request #68508 from batrick/wip-76074-tentacle

tentacle: mon/MonClient: check stopping for auth request handling

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2 weeks agoceph-volume: skip internal raid mirror LVs in inventory 69703/head
Guillaume Abrioux [Thu, 18 Jun 2026 05:19:43 +0000 (07:19 +0200)]
ceph-volume: skip internal raid mirror LVs in inventory

ceph-volume inventory started including all LVM mapper devices after
c06bee965f1. On hosts with raid mirrored system volumes, that pulls in
hidden legs like var_rmeta_0 which have no /dev/vg/lv node and makes
cephadm's ceph-volume inventory call fail.

Skip those internal LVs in get_devices() and avoid rewriting the device
path to a missing lv_path in Device._parse().

Fixces: https://tracker.ceph.com/issues/77486

Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
(cherry picked from commit daec7e125a167bb8fd0fb9faaa04879f0bb215d2)

2 weeks agoceph-volume: fix inventory without /dev/vg/lv (slashed paths)
Guillaume Abrioux [Thu, 19 Mar 2026 11:30:42 +0000 (12:30 +0100)]
ceph-volume: fix inventory without /dev/vg/lv (slashed paths)

Ths makes ceph-volume use UdevData.preferred_block_path() in
get_devices() so it keeps /dev/vg/lv (slashed path form) when
it exists, else /dev/mapper/<name> (dashed path form).

This is needed for thin-pool LVs and environments where udev
does not create slashed paths.

Fixes: https://tracker.ceph.com/issues/75615
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
(cherry picked from commit 0e96c625f69179126f3472761d276f2c36aa7b29)
(cherry picked from commit 567590f7fff95a06fb29fec91a167be54febbd1c)

2 weeks agomClockScheduler: adjust mClock profile parameters to prevent backfill starvation 69773/head
Sridhar Seshasayee [Mon, 25 May 2026 12:14:54 +0000 (17:44 +0530)]
mClockScheduler: adjust mClock profile parameters to prevent backfill starvation

Adjust the 'background_best_effort' queue parameters across the
three standard mClock profiles (high_client_ops, balanced, and
high_recovery_ops) to ensure best effort ops are not starved.

Previously, the 'background_best_effort' queue carried a default allocation
of 0% (MIN) reservation and a weight of 1 under these profiles. When
concurrent client traffic is dense, the zero-reservation for example completely
starves backfill sub-ops (MSG_OSD_EC_READ) on pools with
'allow_ec_optimizations' set to false. This starvation forces the Primary OSD
to hold internal BlueStore transactions and PG object locks for extended
windows, causing severe client median (50th) latency inflation.

To prevent background starvation and resolve the effects of the primary lock
retention, the profile configurations are tuned as follows:

The following profile changes forces low-cost sub-ops to clear out of peer
queues rapidly to drop  primary locks, which helps improve the client
completion latency and tail latency (95th, 99th and 99.5th) percentile.

1. high_client_ops profile:
   - Grant 'background_best_effort' a safe 5% minimum reservation.
   - Scale the queue weight to 4.

2. balanced profile:
   - Grant 'background_best_effort' a 5% minimum reservation.
   - Set the queue weight to 2.

3. high_recovery_ops profile:
   - Grant 'background_best_effort' a 5% minimum reservation.
   - Set the queue weight to 2.

4. Modify the mClock config reference documentation to reflect the tuning
   changes to the best-effort QoS parameters across the profiles.

Note on Proportional Scaling Compatibility:
Configuring these changes shifts total reservations to 105% (e.g., 50%
client + 50% recovery + 5% best-effort under the Balanced profile). Under
heavy concurrent saturation, mClock's internal controls resolves this
gracefully via proportional down-scaling, preserving the underlying
device bandwidth limits for different classes of clients. For example instead
of the client being allocated 50% bandwidth, a slightly lower reservation is
allocated while shifting the remaining bandwidth to the best-effort queue.
This minor scaling shift is virtually unnoticeable to the client application,
but it prevents the internal queue deadlocks.

Signed-off-by: Sridhar Seshasayee <sridhar.seshasayee@ibm.com>
(cherry picked from commit 77421c83665fdfd3343c487793e37e003d8c1891)

Conflicts:
        src/common/mclock_common.h
- src/common/mclock_common.h doesn't exist in tentacle.
  mclock_common.h/cc was created as a refactor in later releases to share
  common bits between classic and crimson OSDs. Introduced in PR:
  https://github.com/ceph/ceph/pull/63516.

  Therefore, the profile parameters change is added to the original
  location in src/osd/mClockScheduler.cc.

2 weeks agosrc/messages, osd: Calculate and set cost for subOpReads for mClock scheduler
Sridhar Seshasayee [Mon, 28 Jul 2025 11:09:34 +0000 (16:39 +0530)]
src/messages, osd: Calculate and set cost for subOpReads for mClock scheduler

Previously, sub-op reads returned a hardcoded cost of 0, bypassing
mClock's background bandwidth and tag calculation mechanisms. This
allowed backfill operations to proceed un-metered, occasionally causing
backend resource contention and driving up client tail latencies.

Cost is calculated based on whether the complete chunk/shard or a subchunk
needs to be read. The possible cases are:
1. Read the complete chunk aligned length:
   - Cost is set to the length of the chunk aligned extent size.
2. Fragmented reads:
   - Consider the subchunk length and count to calculate the cost.
   - compute_cost evaluates the exact layout of fragmented shard bytes on
     disk by summing up the active subchunk allocations exactly once
     (`fragmented_shard_bytes += k.second * subchunk_size`).
   - Linear Extent Scaling: Scale the baseline footprint cleanly by
     multiplying it against the true count of read extents (`tl.size()`),
     achieving a highly efficient O(N) time complexity.

This linear cost model is compatible with pools running with
'allow_ec_optimizations' set to true. Under the FastEC optimized
pipeline, most operations are unified and bypass fragment slicing,
meaning requests will primarily match the Case 1 chunk-aligned path.
In Case 2 where applicable, the O(N) loop ensures that cost will
scale proportionally according to the layout.

It is important to note that the amount of data to read was set to an upper
bound defined by osd_recovery_max_chunk (8 MiB) and was rounded up to the
stripe width. The reason for setting a higher than actual upper bound is that
there may be cases where the object doesn't have the xattrs yet to determine
its size. Therefore, the amount to read was ultimatly set to ~(8 MiB / k)
where k is the number of data shards. This can cause mClock to prolong
the recovery times as items stay longer in the queue. To address this, the
amount to read is set to the remaining length of the object to recover
if the object size is known. Otherwise, the amount to read is set to the
recovery chunk size as before. Therefore, in some cases, only the first
recovery read could be costly if the object context is not known.

The MOSDECSubOpRead class introduces the following:
 - cost member. This necessitates an increment to the HEAD_VERSION and
   appropriate handling within the encode and decode methods.
 - compute_cost() that is called when creating the message by
   ECCommonL::ReadPipeline::do_read_op(). This calls into ECSubRead::cost()
   that performs the actual calculations to set the cost based on the cases
   mentioned above.
 - The same sequence applies to the EC optimized path in
   ECCommon::ReadPipeline::do_read_op().

Fixes: https://tracker.ceph.com/issues/71655
Signed-off-by: Sridhar Seshasayee <sridhar.seshasayee@ibm.com>
(cherry picked from commit e79befea328e58366c43e490c129e2a467e6db84)

Conflicts:
        src/osd/ECMsgTypes.h
- Removed a couple of variable declarations related to recovery of OMAP
  header and entries in EC pools which is yet to be backported to
  tentacle. See commit: a5f4a4902075e343df154da61e3d205d2bd2a5d5.

2 weeks agoosd/scheduler: Classify EC subOp reads according to op priority for mClock
Sridhar Seshasayee [Tue, 22 Jul 2025 08:39:16 +0000 (14:09 +0530)]
osd/scheduler: Classify EC subOp reads according to op priority for mClock

The change brings MSG_OSD_EC_READ into the fold of mClock scheduler. This
improves the scheduling of client and other classes of operation as they
are no longer unnecessarily preempted by the 'immediate' queue.
EC SubOps are now handled as follows:

 - EC SubOp reads generated during recovery will either go into the
   'background_recovery' or 'background_best_effort' class based on
   the recovery priority set for the op. EC SubOp reads generated due
   to client will continue to be classified as 'immediate'.

 - EC SubOp writes generated as a result of client operations will
   continue to be classified as 'immediate'.

 - EC SubOp replies are considered high priority and therefore
   continue to be classed as 'immediate'.

Fixes: https://tracker.ceph.com/issues/71655
Signed-off-by: Sridhar Seshasayee <sridhar.seshasayee@ibm.com>
(cherry picked from commit a0464c3d82825beddb5598b15a8752e567160a05)

 Conflicts:
         src/osd/scheduler/OpSchedulerItem.h
- enum SchedulerClass doesn't exist in tentacle.Therefore, the original
  enum op_scheduler_class is used.

  enum SchedulerClass was introduced when mclock_common.h/cc was created
  as a refactor in later releases to share common bits between classic and
  crimson OSDs. Introduced in PR: https://github.com/ceph/ceph/pull/63516.

2 weeks agoosd/scheduler/mClockScheduler: Fix line alignments
Sridhar Seshasayee [Tue, 22 Jul 2025 08:23:07 +0000 (13:53 +0530)]
osd/scheduler/mClockScheduler: Fix line alignments

Signed-off-by: Sridhar Seshasayee <sridhar.seshasayee@ibm.com>
(cherry picked from commit 913e8911760eeb21d48c6d1a8dd9cd8169dda23f)

2 weeks agoosd/scheduler/mClockScheduler: Log the size of high priority queues.
Sridhar Seshasayee [Tue, 22 Jul 2025 08:08:16 +0000 (13:38 +0530)]
osd/scheduler/mClockScheduler: Log the size of high priority queues.

Signed-off-by: Sridhar Seshasayee <sridhar.seshasayee@ibm.com>
(cherry picked from commit 89c7b217efec511be1cc5892bc181ae499bedaef)

2 weeks agoMerge pull request #69709 from tchaikov/wip-77608-tentacle
Neha Ojha [Fri, 26 Jun 2026 15:14:07 +0000 (08:14 -0700)]
Merge pull request #69709 from tchaikov/wip-77608-tentacle

tentacle: mgr/dashboard: skip the table when an nvmeof cli result has no columns

Reviewed-by: Ilya Dryomov <idryomov@redhat.com>
2 weeks agopython-common/cryptotools: stop using the removed X509Req API 69709/head
Kefu Chai [Sat, 13 Jun 2026 01:50:09 +0000 (09:50 +0800)]
python-common/cryptotools: stop using the removed X509Req API

pyOpenSSL deprecated OpenSSL.crypto.X509Req in 24.2.0 (2024-07-20) and
removed it in 26.3.0 (2026-06-12). as we don't pin pyopenssl, CI picked
up the new release, and create_self_signed_cert() started failing with:

  AttributeError: module 'OpenSSL.crypto' has no attribute 'X509Req'

this took down run-tox-mgr, run-tox-mgr-dashboard-py3 and the mypy check.

we only used X509Req to build a subject name and then copied it into the
X509 cert. so drop it, and set the subject on the cert directly. the
resulting cert stays the same: subject from dname, issuer set to the same
subject, self-signed.

Fixes: https://tracker.ceph.com/issues/77391
Signed-off-by: Kefu Chai <k.chai@proxmox.com>
(cherry picked from commit 1dda56b1a00a6cbf520d932332ff097716ab256e)

2 weeks agomgr/dashboard: skip the table when an nvmeof cli result has no columns
Kefu Chai [Tue, 23 Jun 2026 07:43:28 +0000 (15:43 +0800)]
mgr/dashboard: skip the table when an nvmeof cli result has no columns

The dashboard leaves prettytable unpinned.  prettytable commit 2574492 ("Apply
some Pylint rules (PLR)", #436) rewrote _stringify_row()'s row_height as
`max(_get_size(c)[1] for c in row)`, which raises ValueError("max() iterable
argument is empty") on a row with no cells.  The change is undocumented and
shipped in 3.18.0; get_string() trips on it when a table has a row but no
columns.

AnnotatedDataTextOutputFormatter builds such a table for an empty result, or
one whose only field is status or error_message, so NvmeofCLICommand.call()
returns -EINVAL and the command fails.  This broke run-tox-mgr-dashboard-py3
once the tox virtualenv picked up prettytable 3.18.0.

Return an empty string when there are no columns instead of formatting a
degenerate table.

Fixes: https://tracker.ceph.com/issues/77589
Signed-off-by: Kefu Chai <k.chai@proxmox.com>
(cherry picked from commit 9dd7fd0b0a78871f7f71c89a061490f3ffc97605)

Conflicts:
    src/pybind/mgr/dashboard/tests/test_nvmeof_cli.py
Resolution: tentacle has only the empty-result test case; updated its
expected stdout to ''

3 weeks agomgr/DaemonServer: Aggregate and globally sort OSDs for ok-to-upgrade 69542/head
Sridhar Seshasayee [Wed, 6 May 2026 15:11:33 +0000 (20:41 +0530)]
mgr/DaemonServer: Aggregate and globally sort OSDs for ok-to-upgrade

The 'ok-to-upgrade' command output sorting did not scale accurately
when target CRUSH buckets contained multiple child buckets (e.g., a
chassis containing multiple hosts). OSDs were previously sorted
individually per child bucket and appended sequentially. This created
fragmented, per-host sort segments rather than a globally sorted list
for the parent bucket.

Changes:

1. Fix the issue above by aggregating all child OSDs into a single vector prior
to executing a single, global sort operation based on PG counts. Additionally,
optimize memory efficiency and future-proof the logic by reserving continuous
vector blocks to avoid dynamic heap reallocations.

2. Add integration tests with chassis and rack based CRUSH hierarchies which
verifies the ok-to-upgrade functionality. In addition, the tests crucially
verify the order of OSDs returned is according to the ascending order of
acting PG count. Additionally, make minor fix-ups to lines that determine the
length of a list in JSON response by removing the redundant "| bc".

Fixes: https://tracker.ceph.com/issues/77272
Signed-off-by: Sridhar Seshasayee <sridhar.seshasayee@ibm.com>
(cherry picked from commit 6761549c5a719f541a850f243318a1212b76c0a6)

3 weeks agoMerge PR #69115 into tentacle
Patrick Donnelly [Tue, 16 Jun 2026 18:49:22 +0000 (14:49 -0400)]
Merge PR #69115 into tentacle

* refs/pull/69115/head:
qa/rgw: remove ragweed from verify subsuite

Reviewed-by: Casey Bodley <cbodley@redhat.com>
3 weeks agoMerge PR #69493 into tentacle
Patrick Donnelly [Tue, 16 Jun 2026 18:47:45 +0000 (14:47 -0400)]
Merge PR #69493 into tentacle

* refs/pull/69493/head:
20.2.2

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
4 weeks ago20.2.2 69493/head v20.2.2
Ceph Release Team [Mon, 15 Jun 2026 14:56:49 +0000 (14:56 +0000)]
20.2.2

Signed-off-by: Ceph Release Team <ceph-maintainers@ceph.io>
4 weeks agoMerge PR #69450 into tentacle
Patrick Donnelly [Mon, 15 Jun 2026 13:57:44 +0000 (09:57 -0400)]
Merge PR #69450 into tentacle

* refs/pull/69450/head:
osd: Allow multiple objects with same version in missing list.

Reviewed-by: Bill Scales <bill_scales@uk.ibm.com>
Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
4 weeks agoosd: Allow multiple objects with same version in missing list. 69450/head
Alex Ainscow [Wed, 8 Apr 2026 10:49:58 +0000 (11:49 +0100)]
osd: Allow multiple objects with same version in missing list.

Most of the time, a single version in a PG can only correspond to a single object.

However, following a PG merge it is possible, even likely, that two objects will
have the same version.   The PG Log works around this by discarding the log.

However, during backfill, it is possible for the missing list to be build with
these duplicate versions.

A recently added assert detected that this scenario was corrupting the reverse
missing list (rmissing). This behaviour has always existed, but was previously
unnoticed.  It could cause some bugs and potentially loop-asserts on OSDs,
although mostly would not be noticed.

Here we fix this properly, by converting rmissing to a multimap. This is wrapped
in some insert functions, which assert that the rmissing list does not end up
with duplicate entries.  The code is optimised for the case where there are no
duplicate versions.

Additionally, some of the old asserts have been rolled into the insert functions.

Fixes: https://tracker.ceph.com/issues/75778
Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
(cherry picked from commit f3940400952b444a31f59b633fa3fa35437c87a9)

4 weeks agoMerge PR #69436 into tentacle 69403/head
Patrick Donnelly [Fri, 12 Jun 2026 23:55:10 +0000 (19:55 -0400)]
Merge PR #69436 into tentacle

* refs/pull/69436/head:
mgr: guard close_section calls in get_perf_schema_python

Reviewed-by: Yaarit Hatuka <yaarithatuka@gmail.com>
4 weeks agomgr: guard close_section calls in get_perf_schema_python 69436/head
Lumir Sliva [Sat, 4 Apr 2026 15:25:15 +0000 (17:25 +0200)]
mgr: guard close_section calls in get_perf_schema_python

When a daemon exists in the daemon state map but has no perf counters
(e.g. an OSD that was running but is now down or destroyed), the loop
in get_perf_schema_python never executes, leaving prev_key_name empty
and no formatter sections opened. The unconditional close_section()
calls after the loop then trigger an assertion failure in PyFormatter
(cursor != root).

Add the same `if (!prev_key_name.empty())` guard that already protects
the close_section() calls inside the loop, so we only close sections
that were actually opened.

Fixes: https://tracker.ceph.com/issues/75745
Signed-off-by: Lumir Sliva <61183145+lumir-sliva@users.noreply.github.com>
(cherry picked from commit b1c1ddaf0b771420e0905cd47e33919de5e11fd5)

4 weeks agoqa: ignore evicted client warnings for singletone bluestore 69377/head
Nitzan Mordechai [Sun, 10 May 2026 06:51:08 +0000 (06:51 +0000)]
qa: ignore evicted client warnings for singletone bluestore

After adding mds client into singletone bluestore and increas debug
levels and bluestore_allocator=stupid client is slow enough that MDS
evicts it after ~302 seconds

Fixes: https://tracker.ceph.com/issues/76497
Signed-off-by: Nitzan Mordechai <nmordech@ibm.com>
(cherry picked from commit 20352536fdbd14b4113add75ef5a9963994f8b6d)

4 weeks agomgr/DaemonServer: clarify ok-to-upgrade error message for CRUSH buckets 69369/head
Sridhar Seshasayee [Wed, 6 May 2026 15:11:33 +0000 (20:41 +0530)]
mgr/DaemonServer: clarify ok-to-upgrade error message for CRUSH buckets

Refine the error string in DaemonServer.cc returned by the
ok-to-upgrade command when OSDs in a CRUSH bucket cannot be upgraded.

The original message is ambiguous. It fails to clearly convey that
stopping *any* individual OSD in that specific bucket will drop PGs
offline, meaning no OSDs within that bucket can be safely upgraded at
this time.

Update the phrasing to explicitly state that at least X PGs will go offline
if any OSD out of the total count in that CRUSH bucket is stopped. Also
standardize on capitalized acronyms (PG, OSD, CRUSH) and wrap the bucket
name in single quotes for better log readability.

Fixes: https://tracker.ceph.com/issues/74612
Signed-off-by: Sridhar Seshasayee <sridhar.seshasayee@ibm.com>
(cherry picked from commit dd7f8af9d643e03d4b2ea5504a5e20c53e86b661)

5 weeks agoqa/suites/nvmeof: ignore "have only 1 nvmeof gateway" 69338/head
Vallari Agrawal [Wed, 27 May 2026 12:17:55 +0000 (17:47 +0530)]
qa/suites/nvmeof: ignore "have only 1 nvmeof gateway"

Add "have only 1 nvmeof gateway" to ignorelist.
NVMEOF_SINGLE_GATEWAY is already part of ignorelist
but tests sometimes fail on "have only 1 nvmeof gateway".

Thrasher or scalability tests can trigger this but there
are enough asserts to ensure all expected gateways are
up, we can safely ignore this healthcheck warning.

Fixes: https://tracker.ceph.com/issues/75913
Signed-off-by: Vallari Agrawal <vallari.agrawal@ibm.com>
(cherry picked from commit 7f8bcdc7d1f79e68e98cc09375d273087dab25ed)

5 weeks agoqa/suites/nvmeof: set beacon grace and connect panic
Vallari Agrawal [Wed, 27 May 2026 08:12:12 +0000 (13:42 +0530)]
qa/suites/nvmeof: set beacon grace and connect panic

For teuthology clusters, set:
'''
ceph config set mon mon_nvmeofgw_beacon_grace 10
ceph config set mon nvmeof_mon_client_connect_panic 60
'''
Reason explained in https://tracker.ceph.com/issues/74660#note-12

Fixes: https://tracker.ceph.com/issues/74660
Signed-off-by: Vallari Agrawal <vallari.agrawal@ibm.com>
(cherry picked from commit 9d8d2e21da8369f23c70a51a3619cdb936be0f00)

5 weeks agoMerge PR #68263 into tentacle
Patrick Donnelly [Mon, 8 Jun 2026 20:18:13 +0000 (16:18 -0400)]
Merge PR #68263 into tentacle

* refs/pull/68263/head:
libcephsqlite: ensure atexit handlers are registered after openssl

Reviewed-by: Yuri Weinstein <yweins@redhat.com>
5 weeks agoMerge PR #68510 into tentacle
Patrick Donnelly [Mon, 8 Jun 2026 20:00:11 +0000 (16:00 -0400)]
Merge PR #68510 into tentacle

* refs/pull/68510/head:
qa/tasks/quiescer: remove racy assertion

Reviewed-by: Yuri Weinstein <yweins@redhat.com>
5 weeks agoMerge PR #69310 into tentacle
Patrick Donnelly [Mon, 8 Jun 2026 19:16:00 +0000 (15:16 -0400)]
Merge PR #69310 into tentacle

* refs/pull/69310/head:
qa/suites/upgrade: ignore undersized PG during stress splits

Reviewed-by: Laura Flores <lflores@redhat.com>
5 weeks agoMerge PR #69307 into tentacle
Patrick Donnelly [Mon, 8 Jun 2026 19:15:42 +0000 (15:15 -0400)]
Merge PR #69307 into tentacle

* refs/pull/69307/head:
qa/suites/upgrade: ignore osd in unknown state

Reviewed-by: Laura Flores <lflores@redhat.com>
5 weeks agoMerge PR #69159 into tentacle
Patrick Donnelly [Mon, 8 Jun 2026 19:14:49 +0000 (15:14 -0400)]
Merge PR #69159 into tentacle

* refs/pull/69159/head:
osd: Fix bug when calculating min_peer_features

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
5 weeks agoMerge PR #69309 into tentacle
Patrick Donnelly [Mon, 8 Jun 2026 18:38:53 +0000 (14:38 -0400)]
Merge PR #69309 into tentacle

* refs/pull/69309/head:
qa: ignore cephadm failed daemon warnings during thrashing

Reviewed-by: Yuri Weinstein <yweins@redhat.com>
5 weeks agoMerge PR #68328 into tentacle
Patrick Donnelly [Mon, 8 Jun 2026 18:36:33 +0000 (14:36 -0400)]
Merge PR #68328 into tentacle

* refs/pull/68328/head:
qa/cephadm: derive container image from cephadm release

Reviewed-by: Laura Flores <lflores@redhat.com>
Reviewed-by: Redouane Kachach <rkachach@redhat.com>
5 weeks agoMerge PR #69304 into tentacle
Patrick Donnelly [Mon, 8 Jun 2026 18:34:13 +0000 (14:34 -0400)]
Merge PR #69304 into tentacle

* refs/pull/69304/head:
qa: ignore POOL_FULL for rbd tests exercising full pools

Reviewed-by: Ilya Dryomov <idryomov@redhat.com>
5 weeks agoMerge PR #69251 into tentacle
Patrick Donnelly [Mon, 8 Jun 2026 18:33:45 +0000 (14:33 -0400)]
Merge PR #69251 into tentacle

* refs/pull/69251/head:
tentacle: qa/suites/fs: fix extraneous distro links

Reviewed-by: Venky Shankar <vshankar@redhat.com>
5 weeks agoMerge PR #69036 into tentacle
Patrick Donnelly [Mon, 8 Jun 2026 18:33:21 +0000 (14:33 -0400)]
Merge PR #69036 into tentacle

* refs/pull/69036/head:
qa: ignore expected OSD_ROOT_DOWN
qa: ignore fs offline warning
qa: add MDS_INSUFFICIENT_STANDBY to ignorelist
qa/suites/upgrade: use common ignorelist

Reviewed-by: Venky Shankar <vshankar@redhat.com>
5 weeks agoceph-volume: has_bluestore_label checks all bluestore label replica offsets 68586/head
Guillaume Abrioux [Thu, 16 Apr 2026 07:29:23 +0000 (09:29 +0200)]
ceph-volume: has_bluestore_label checks all bluestore label replica offsets

BlueStore replicates the block device label at fixed offsets (0 and
multiples of 1Gb up to 1000gb). has_bluestore_label() only read the
first 22 bytes, so disks with a wiped primary label but intact
replicas are missed.

with this commit, has_bluestore_label() scans each known offset with
seek/read and compares the ASCII prefix as bytes.

Fixes: https://tracker.ceph.com/issues/76060
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
(cherry picked from commit 981dfa4acef2d87938a92c1e69715e95ad7d845b)

5 weeks agoqa/suites/upgrade: ignore undersized PG during stress splits 69310/head
Patrick Donnelly [Fri, 5 Jun 2026 16:33:04 +0000 (12:33 -0400)]
qa/suites/upgrade: ignore undersized PG during stress splits

Fixes: https://tracker.ceph.com/issues/76585
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
(cherry picked from commit 322e78c1ce47b1200c988bd53785bb26d446b48a)

Conflicts:
    qa/suites/upgrade/reef-x/stress-split/1-start.yaml
    qa/suites/upgrade/squid-x/stress-split/1-start.yaml
Resolution: manual merge

5 weeks agoqa: ignore cephadm failed daemon warnings during thrashing 69309/head
Patrick Donnelly [Fri, 5 Jun 2026 16:27:21 +0000 (12:27 -0400)]
qa: ignore cephadm failed daemon warnings during thrashing

Fixes: https://tracker.ceph.com/issues/73079
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
(cherry picked from commit ad6f20fde54d09f810591a49c87ed5150797b2c0)

Conflicts:
    qa/suites/upgrade/reef-x/stress-split/1-start.yaml
    qa/suites/upgrade/squid-x/stress-split/1-start.yaml
Resolution: merged changes manually

5 weeks agoqa/suites/upgrade: ignore osd in unknown state 69307/head
Patrick Donnelly [Fri, 5 Jun 2026 16:22:57 +0000 (12:22 -0400)]
qa/suites/upgrade: ignore osd in unknown state

The thrashosds task is occasionally restarting OSDs and mon/mgr log
warnings are wrongly flagging this as a problem.

Fixes: https://tracker.ceph.com/issues/76747
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
(cherry picked from commit a1430973f2c3e8758890447a1de3b906da77b60e)

Conflicts:
    qa/suites/upgrade/reef-x/stress-split/1-start.yaml
    qa/suites/upgrade/squid-x/stress-split/1-start.yaml
Resolution: different upgrade suites, just add the change manually

5 weeks agoMerge PR #69252 into tentacle 69328/head
Patrick Donnelly [Fri, 5 Jun 2026 16:12:42 +0000 (12:12 -0400)]
Merge PR #69252 into tentacle

* refs/pull/69252/head:
qa: install nvme-cli only if distro remains rocky10

Reviewed-by: Redouane Kachach <rkachach@redhat.com>
5 weeks agoqa: ignore POOL_FULL for rbd tests exercising full pools 69304/head
Patrick Donnelly [Wed, 13 May 2026 18:29:43 +0000 (14:29 -0400)]
qa: ignore POOL_FULL for rbd tests exercising full pools

Fixes: https://tracker.ceph.com/issues/76586
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
(cherry picked from commit eb433c57ead239eb819ddff5fda8a1322ea66b94)

5 weeks agolibcephsqlite: ensure atexit handlers are registered after openssl 68263/head
Patrick Donnelly [Tue, 7 Apr 2026 20:43:56 +0000 (16:43 -0400)]
libcephsqlite: ensure atexit handlers are registered after openssl

When the sqlite3 executable encounters an error with .bail=on, it will
make a call to exit(). The atexit() handlers will execute in LIFO order.
We need to ensure that openssl (before OpenSSL 4.0 [1]) atexit handlers are
registered before libcephsqlite.

[1] http://github.com/openssl/openssl/commit/31659fe32673a6bd66abf3f8a7d803e81c6ffeed (OpenSSL 4.0 no longer arms `OPENSSL_cleanup()` function as an `atexit(3)`)

Fixes: https://tracker.ceph.com/issues/59335
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
(cherry picked from commit 7949cd5f12eb7cc0dc85fd1b5c1d795fad1df922)

5 weeks agoMerge PR #69231 into tentacle
Patrick Donnelly [Fri, 5 Jun 2026 14:38:15 +0000 (10:38 -0400)]
Merge PR #69231 into tentacle

* refs/pull/69231/head:
mgr/test_orchestrator: fixing daemon_action method signature

Reviewed-by: Adam King <adking@redhat.com>
5 weeks agoosd/scrub: removed a misleading comment about 'overdue' scrubs 69160/head
Ronen Friedman [Thu, 28 May 2026 14:55:41 +0000 (14:55 +0000)]
osd/scrub: removed a misleading comment about 'overdue' scrubs

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
(cherry picked from commit 787f2b0d0a438726510353aa86b42919ac35f94f)

5 weeks agoosd/scrub: 'repairing' scrubs allowed at all times
Ronen Friedman [Tue, 26 May 2026 15:29:32 +0000 (15:29 +0000)]
osd/scrub: 'repairing' scrubs allowed at all times

Fix ScrubJob::observes_allowed_hours() to not block 'repairing'
scrubs outside of the allowed hours. This allows repair scrubs
to run at any time or day-of-week.
The fixed behaviour matches the documented requirements.

Fixes: https://tracker.ceph.com/issues/76811
Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
(cherry picked from commit 4ac5a3210ae55e33466ca867a8c1c4b5b0a18c64)
CONFLICT (content): Merge conflict in src/osd/scrubber/scrub_job.h
Resolved manually (comment lines only)
Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
5 weeks agotentacle: qa/suites/fs: fix extraneous distro links 69251/head
Patrick Donnelly [Mon, 1 Jun 2026 16:39:53 +0000 (12:39 -0400)]
tentacle: qa/suites/fs: fix extraneous distro links

Fixes: c70da583615898a63600956c4e408c7a717ea420
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
5 weeks agoqa: install nvme-cli only if distro remains rocky10 69252/head
Patrick Donnelly [Mon, 1 Jun 2026 15:37:23 +0000 (11:37 -0400)]
qa: install nvme-cli only if distro remains rocky10

Notably, only include these the `dnf install` commands if the distro is
not overriden by some other mechanism (like cephfs kernel overrides).

This is only a problem for tentacle presently as the k-stock kernel will
override with centos9.

Fixes: https://tracker.ceph.com/issues/77037
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
(cherry picked from commit 038383a2ffab063afdddb3d2084cfbdd49b99e31)

Conflicts:
qa/distros/all/rocky_10.yaml
Resolution: used `main` version

5 weeks agoMerge PR #69226 into tentacle
Patrick Donnelly [Tue, 2 Jun 2026 14:34:43 +0000 (10:34 -0400)]
Merge PR #69226 into tentacle

* refs/pull/69226/head:
mgr/cephadm: serialize OSD class before returning for OSD rm status

Reviewed-by: Redouane Kachach <rkachach@redhat.com>
5 weeks agomgr/test_orchestrator: fixing daemon_action method signature 69231/head
Redouane Kachach [Wed, 25 Mar 2026 14:49:59 +0000 (15:49 +0100)]
mgr/test_orchestrator: fixing daemon_action method signature

Adding missing argument (force) to the method signature

Fixes: https://tracker.ceph.com/issues/75664 (original issue)
Fixes: https://tracker.ceph.com/issues/75742 (backport tracker)
Signed-off-by: Redouane Kachach <rkachach@ibm.com>
(cherry picked from commit 394aaff8ffb6563fb2c63ad17a90d044823af3c1)

5 weeks agoMerge PR #69232 into tentacle
Patrick Donnelly [Tue, 2 Jun 2026 12:23:07 +0000 (08:23 -0400)]
Merge PR #69232 into tentacle

* refs/pull/69232/head:
qa/tasks: capture CommandCrashedError when running nvme list cmd

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
6 weeks agoqa/tasks: capture CommandCrashedError when running nvme list cmd 69232/head
Redouane Kachach [Fri, 29 May 2026 09:09:44 +0000 (11:09 +0200)]
qa/tasks: capture CommandCrashedError when running nvme list cmd

The safe_while retry loop does not catch exceptions, so a
CommandCrashedError from `nvme list` bypasses it entirely. Catch
CommandCrashedError and continue the retry loop instead.

Fixes: https://tracker.ceph.com/issues/77001 (Tentacle backport tracker)
Fixes: https://tracker.ceph.com/issues/76984 (original tracker)
Signed-off-by: Redouane Kachach <rkachach@ibm.com>
(cherry picked from commit 0bf55d6a8bb38942a33220ee6ab2890fb557476e)

6 weeks agomgr/cephadm: serialize OSD class before returning for OSD rm status 69226/head
Adam King [Tue, 17 Mar 2026 18:30:51 +0000 (14:30 -0400)]
mgr/cephadm: serialize OSD class before returning for OSD rm status

Fixes: https://tracker.ceph.com/issues/74862
Signed-off-by: Adam King <adking@redhat.com>
(cherry picked from commit 179e9bd3296a973f0889e611d8269d06fb7faf38)

6 weeks agoceph-volume: retry lvs after empty result and "devices file is missing" stderr 69206/head
Guillaume Abrioux [Thu, 28 May 2026 11:39:55 +0000 (13:39 +0200)]
ceph-volume: retry lvs after empty result and "devices file is missing" stderr

When LVM's devices file is out of sync with the runtime device view (common
in teuthology/container namespaces with multipath), `lvs` can exit 0 with
empty stdout and only stderr warnings about missing mapper entries.
It can leave get_lvs() empty and cause Device() to fall through to lsblk on a
vg/lv path which can produce a misleading "not a block device" error.

With this fix, ceph-volume retries once with 'use_devicesfile=0' when it
detects this specific pattern.

Fixes: https://tracker.ceph.com/issues/76959
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
(cherry picked from commit d91d320a7f1eb936be9ecb4f18806aa9f235ea0e)

6 weeks agoosd: Fix bug when calculating min_peer_features 69159/head
Bill Scales [Fri, 15 May 2026 14:39:25 +0000 (15:39 +0100)]
osd: Fix bug when calculating min_peer_features

PeeringState calculates the minimum set of features for the set
of OSDs within a PG. There is a bug when the peer info has
already been cached where these peers features are not included
in the calculation. This can lead to the min feature set
including features that not all OSDs have.

Previously this just made some asserts less aggressive than they
should have been. Pull request https://github.com/ceph/ceph/pull/57740
uses min_peer_features to decide how to encode messages to other OSDs.

Midway through an upgrade this bug can cause an OSD to send
the wrong version of a message to a downlevel OSD causing
it to abort.

Fixes: https://tracker.ceph.com/issues/76600
Signed-off-by: Bill Scales <bill_scales@uk.ibm.com>
(cherry picked from commit ce5882778db9b92b14a6bb5eca22e3cecf2be9dc)

6 weeks agomgr/smb: fix incorrect referenced variable 69150/head
Xavi Hernandez [Wed, 27 May 2026 16:09:10 +0000 (18:09 +0200)]
mgr/smb: fix incorrect referenced variable

An unassigned variable was used in a log message. Replace it by the
relevant one.

Fixes: https://tracker.ceph.com/issues/76947
Signed-off-by: Xavi Hernandez <xhernandez@gmail.com>
(cherry picked from commit c03af0ba8d4744babec94533788cd9a4ea961d0e)

6 weeks agoqa/rgw: remove ragweed from verify subsuite 69115/head
Casey Bodley [Wed, 25 Mar 2026 16:33:40 +0000 (12:33 -0400)]
qa/rgw: remove ragweed from verify subsuite

it's currently broken with newer python on rocky 10 and ubuntu 24
(tracked in https://tracker.ceph.com/issues/72500) and doesn't provide
interesting test coverage outside of rgw/upgrade

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 060f0447ae9814c2ba8b1c0c7e27ce37f9f8b4c1)