]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/log
ceph.git
7 days agomgr/dashboard: rbd-mirroring - hide create/import token buttons for 69951/head
Aashish Sharma [Thu, 4 Jun 2026 09:55:45 +0000 (15:25 +0530)]
mgr/dashboard: rbd-mirroring - hide create/import token buttons for
read-only users

Fixes: https://tracker.ceph.com/issues/77115
Signed-off-by: Aashish Sharma <aasharma@redhat.com>
(cherry picked from commit 50bf8ce2eb0ed6bd2c083169d6746baf3c0a8354)

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>
13 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>
13 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>
13 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>
13 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>
13 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>
13 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>
2 weeks 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>
2 weeks 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>
2 weeks 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 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)

4 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>
4 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)

5 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 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>
6 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>
6 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

6 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>
6 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)

6 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)

7 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)

7 weeks agoceph-volume: OSD mapper lifecycle (LVM + raw) for activate 69091/head
Guillaume Abrioux [Wed, 13 May 2026 12:57:03 +0000 (14:57 +0200)]
ceph-volume: OSD mapper lifecycle (LVM + raw) for activate

This adds small helpers so activate can consistently bring the OSD device
stack online (LVM lvchange, optional mapper open) and tear it down again,
with refresh in between. Same idea for the raw path. Crypto is handled
inside that flow when the OSD is encrypted.

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

7 weeks agoceph-volume: raw activate should ignore lvm backed OSD devices
Guillaume Abrioux [Tue, 28 Apr 2026 15:10:59 +0000 (17:10 +0200)]
ceph-volume: raw activate should ignore lvm backed OSD devices

the generic activate (`ceph-volume activate`) runs the
raw path before LVM. Raw.activate was walking lsblk / raw
list entries and could hit block devices that are actually
logical volumes from `ceph-volume lvm prepare` or `lvm batch`
(with ceph lvm tags on the lv).
That made raw activation poke at LVM backed OSDs instead of
leaving it to `lvm activate`.

with this commit ceph-volume now builds the set of LV paths
that carry those tags once (`lvs` via ceph_volume_lvm_prepare_lv_paths)
and skip any candidate path that matches, so only real raw
OSDs go through the 'raw activate path'.

Also, we now pass `with_tpm` through luks_open() calls for db and
wal so encrypted metadata uses the same systemd-cryptsetup path
as the block LV when ceph.with_tpm is set.

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

7 weeks agoqa: ignore expected OSD_ROOT_DOWN 69036/head
Patrick Donnelly [Fri, 15 May 2026 17:20:50 +0000 (13:20 -0400)]
qa: ignore expected OSD_ROOT_DOWN

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

Conflicts:
qa/overrides/upgrade_ignorelist_health.yaml
Resolution: missing ignorelist from main

7 weeks agoqa: ignore fs offline warning
Patrick Donnelly [Fri, 15 May 2026 17:12:59 +0000 (13:12 -0400)]
qa: ignore fs offline warning

Dup of FS_DOWN.

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

7 weeks agoqa: add MDS_INSUFFICIENT_STANDBY to ignorelist
Patrick Donnelly [Wed, 13 May 2026 14:22:50 +0000 (10:22 -0400)]
qa: add MDS_INSUFFICIENT_STANDBY to ignorelist

This is expected when MDS are going up and down.

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

Conflicts:
qa/overrides/upgrade_ignorelist_health.yaml

Resolution: union merge

7 weeks agoqa/suites/upgrade: use common ignorelist
Patrick Donnelly [Wed, 13 May 2026 14:22:05 +0000 (10:22 -0400)]
qa/suites/upgrade: use common ignorelist

Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
(cherry picked from commit b2ac7f6561326f7020159e43737ef8e9fe9248aa)
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
Conflicts:
qa/suites/upgrade/reef-x/parallel/+
qa/suites/upgrade/reef-x/parallel/overrides/+
qa/suites/upgrade/reef-x/parallel/overrides/upgrade_ignorelist_health.yaml
qa/suites/upgrade/reef-x/parallel/upgrade_ignorelist_health.yaml
qa/suites/upgrade/squid-x/stress-split/overrides/ignorelist_health.yaml

Resolution: tentacle -> reef. Added tentacle-p2p

7 weeks agoMerge PR #68733 into tentacle
Patrick Donnelly [Wed, 20 May 2026 19:32:57 +0000 (15:32 -0400)]
Merge PR #68733 into tentacle

* refs/pull/68733/head:
tentacle: tentacle-p2p add centos9 to stress-split
tentacle: upgrade/tentacle-p2p install pytest for rbd-python tests
tentacle: suites/upgrade add centos to centos image upgrade

Reviewed-by: Laura Flores <lflores@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
7 weeks agoMerge PR #68905 into tentacle
Patrick Donnelly [Wed, 20 May 2026 19:29:22 +0000 (15:29 -0400)]
Merge PR #68905 into tentacle

* refs/pull/68905/head:
mds: remove duplicate context completion calls
mds: add retry request to MDSRank wait queue rather via finisher
mds: adjust scan_stray_dir after fixing up MDSContext class
Revert "mds: move MDSContext completion handling to finish method"

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
7 weeks agoMerge PR #68820 into tentacle
Patrick Donnelly [Wed, 20 May 2026 19:13:44 +0000 (15:13 -0400)]
Merge PR #68820 into tentacle

* refs/pull/68820/head:
qa/cephfs: treat "implicit declaration of function" for blogbench workunit for newer gcc version

7 weeks agoMerge PR #68826 into tentacle
Patrick Donnelly [Wed, 20 May 2026 18:08:55 +0000 (14:08 -0400)]
Merge PR #68826 into tentacle

* refs/pull/68826/head:
rgw: fix lifecycle transition of encrypted multipart objects

Reviewed-by: Adam C. Emerson <aemerson@redhat.com>
7 weeks agotentacle: tentacle-p2p add centos9 to stress-split 68733/head
Nitzan Mordechai [Mon, 4 May 2026 08:49:52 +0000 (08:49 +0000)]
tentacle: tentacle-p2p add centos9 to stress-split

Adds CentOS 9 Stream as a supported host OS for the tentacle-p2p
stress-split suite.

Rocky10 is not added here. This suite tests a bare-metal p2p upgrade
between Tentacle point releases. Rocky10 package support was added during
that release cycle, meaning there is no valid "FROM" package baseline to
install on Rocky10, making a bare-metal point-to-point upgrade path on Rocky10
impossible to test.

Fixes: https://tracker.ceph.com/issues/76710
Signed-off-by: Nitzan Mordechai <nmordech@ibm.com>
7 weeks agotentacle: upgrade/tentacle-p2p install pytest for rbd-python tests
Nitzan Mordechai [Tue, 5 May 2026 16:00:11 +0000 (16:00 +0000)]
tentacle: upgrade/tentacle-p2p install pytest for rbd-python tests

The rbd-python workload runs test_librbd_python.sh, which invokes
'python3 -m pytest' to run the librbd Python API tests.
On a bare-metal install, python3-pytest is not pulled in by the
Ceph packages and is not present and the workunit fails.
Add it via extra_system_packages so the tests can run.

Fixes: https://tracker.ceph.com/issues/76710
Signed-off-by: Nitzan Mordechai <nmordech@ibm.com>
7 weeks agotentacle: suites/upgrade add centos to centos image upgrade
Nitzan Mordechai [Sun, 3 May 2026 08:58:34 +0000 (08:58 +0000)]
tentacle: suites/upgrade add centos to centos image upgrade

Previously, each suite had a single upgrade-sequence.yaml that targeted
only one image.
This commit splits each upgrade sequence into two variants teuthology
picks one per run

  upgrade-sequence$/centos-stream9.yaml  - targets $sha1
  upgrade-sequence$/rockylinux-10.yaml   - targets $sha1-rockylinux-10

This applies to:
 - reef-x/parallel
 - reef-x/stress-split
 - squid-x/parallel
 - squid-x/stress-split
 - telemetry/reef-x
 - telemetry/squid-x

For the stress-split suites, the upgrade logic is split into a
first-half-sequence run concurrently with thrashosds,
and a second-half-sequence run after.
Both sequences contain the hardcoded target image, so each variant
needs its own copy. They were previously inlined in 1-start.yaml.

This commit extracts them into the upgrade-sequence$/ files so
each variant can target the right image.

Fixes: https://tracker.ceph.com/issues/76710
Signed-off-by: Nitzan Mordechai <nmordech@ibm.com>
7 weeks agoMerge PR #68803 into tentacle
Patrick Donnelly [Tue, 19 May 2026 23:15:29 +0000 (19:15 -0400)]
Merge PR #68803 into tentacle

* refs/pull/68803/head:
rgw/multisite: concurrency adjustment - consider the case caller provides 1
rgw/multisite: log concurrency state transitions in adj_concurrency
rgw/multisite: fix uninitialized LatencyMonitor average and use exponentially weighted moving average
rgw/multisite: expose lock latency as perf counter for data sync

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
7 weeks agoMerge PR #68877 into tentacle
Patrick Donnelly [Tue, 19 May 2026 22:56:08 +0000 (18:56 -0400)]
Merge PR #68877 into tentacle

* refs/pull/68877/head:
extblkdev: Fix FCM plugin asserting on multivolume devices

Reviewed-by: Jaya Prakash Madaka <jayaprakash@ibm.com>
8 weeks agoMerge PR #68617 into tentacle
Patrick Donnelly [Tue, 19 May 2026 19:23:40 +0000 (15:23 -0400)]
Merge PR #68617 into tentacle

* refs/pull/68617/head:
qa: fix setting rbd_sparse_read_threshold_bytes in test_migration_clone()

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
8 weeks agomgr/cephadm: renames ceph_device to ceph_device_lvm 68751/head
Robert Sander [Fri, 17 Oct 2025 10:53:13 +0000 (12:53 +0200)]
mgr/cephadm: renames ceph_device to ceph_device_lvm

commit 4941d098e337f2b7ad8c6f7c90be3ae252d22f7b changed ceph_device to ceph_device_lvm,
but only on the ceph-volume inventory side, not in the orchestrator.

See https://tracker.ceph.com/issues/72696

Signed-off-by: Robert Sander <r.sander@heinlein-support.de>
(cherry picked from commit 5c700ed7d64f904d7f21d174a9b7066b217ff072)

8 weeks agoMerge PR #68406 into tentacle
Patrick Donnelly [Tue, 19 May 2026 12:43:06 +0000 (08:43 -0400)]
Merge PR #68406 into tentacle

* refs/pull/68406/head:
tools/ceph-kvstore-tool: fix crash on db close.
tools/kvstore_tool: reduce BlueStore.h exposure.
tools/kvstore_tool: add missing `#ifdef WITH_BLUESTORE`
tools/kvstore_tool: make load_bluestore() `private`

Reviewed-by: Laura Flores <lflores@redhat.com>
Reviewed-by: Adam Kupczyk <akupczyk@redhat.com>
8 weeks agoceph-volume: fallback to default for empty get_file_contents values 68883/head
Guillaume Abrioux [Wed, 6 May 2026 08:49:49 +0000 (10:49 +0200)]
ceph-volume: fallback to default for empty get_file_contents values

With this change, get_file_contents() returns the default when
a file exists but reads as empty.
This avoids repeating fallback checks in callers.

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

8 weeks agoMerge PR #68710 into tentacle
Patrick Donnelly [Sat, 16 May 2026 15:54:35 +0000 (11:54 -0400)]
Merge PR #68710 into tentacle

* refs/pull/68710/head:
osd: FastEC: always update pwlc epoch when activating

Reviewed-by: bcAlex Ainscow <aainscow@uk.ibm.com>
8 weeks agoMerge PR #68776 into tentacle
Patrick Donnelly [Fri, 15 May 2026 17:27:08 +0000 (13:27 -0400)]
Merge PR #68776 into tentacle

* refs/pull/68776/head:
tentacle: test/neorados: Narrow Asio includes in `leak_watch_notify`
test/neorados: Don't leak watch handle
neorados: Avoid double cleanup in watch/notify
neorados: Actually enforce notification queue limit
neorados: Do not try to decode an empty response in notify
neorados: Go through linger_cancel on `io_context` shutdown
common/async: Fix removal from service list
osdc: remove implicit LingerOp reference between watch/unwatch
osdc: linger_register() returns intrusive_ptr<LingerOp>
neorados: NotifierHandler holds intrusive_ptr<LingerOp>
neorados: Notifier holds intrusive_ptr<LingerOp>
librados: aio_unwatch() delivers ENOTCONN to AioCompletion
osdc: Objecter::linger_by_cookie() for safe cast from uint64
librados: linger callbacks hold a reference to LingerOp

Reviewed-by: Ilya Dryomov <idryomov@redhat.com>
8 weeks agoMerge PR #68718 into tentacle
Patrick Donnelly [Fri, 15 May 2026 15:53:50 +0000 (11:53 -0400)]
Merge PR #68718 into tentacle

* refs/pull/68718/head:
osd: PGLog Attach correct version to missing list when ignoring log entries

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
8 weeks agoMerge PR #68717 into tentacle
Patrick Donnelly [Fri, 15 May 2026 15:52:28 +0000 (11:52 -0400)]
Merge PR #68717 into tentacle

* refs/pull/68717/head:
osd: Twiddle should create a full sized vector for optimized EC

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
8 weeks agoMerge PR #68716 into tentacle
Patrick Donnelly [Fri, 15 May 2026 15:51:56 +0000 (11:51 -0400)]
Merge PR #68716 into tentacle

* refs/pull/68716/head:
osd:  Add asserts to look for potential missing list corruption.
osd: Change rmissing map key from version_t to eversion_t

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
8 weeks agoMerge PR #68715 into tentacle
Patrick Donnelly [Fri, 15 May 2026 15:51:04 +0000 (11:51 -0400)]
Merge PR #68715 into tentacle

* refs/pull/68715/head:
osd: Fix incorrect rollback logic for partial write OI

Reviewed-by: Bill Scales <bill_scales@uk.ibm.com>
8 weeks agoMerge PR #68739 into tentacle
Patrick Donnelly [Fri, 15 May 2026 15:44:11 +0000 (11:44 -0400)]
Merge PR #68739 into tentacle

* refs/pull/68739/head:
tentacle: test/rgw_multi: Import boto.s3.user for UserJSONENcoder
qa/radosgw_admin_rest: replace boto2 with boto3
qa/radosgw_admin_rest: pass endpoint to rgwadmin_rest()
rgw/rest: RESTArgs::get_string() url-decodes query params
qa/radosgw_admin: replace boto2 with boto3
qa/radosgw_admin: remove requestlog
qa/radosgw_admin: remove acl test cases

Reviewed-by: J. Eric Ivancich <ivancich@redhat.com>
2 months agoMerge PR #68552 into tentacle
Patrick Donnelly [Fri, 15 May 2026 00:18:42 +0000 (20:18 -0400)]
Merge PR #68552 into tentacle

* refs/pull/68552/head:
ceph-volume: skip /dev/ram* devices in inventory

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
2 months agoMerge PR #67293 into tentacle
Patrick Donnelly [Fri, 15 May 2026 00:15:14 +0000 (20:15 -0400)]
Merge PR #67293 into tentacle

* refs/pull/67293/head:
qa/cephfs: lua to respect missing kernel in yaml

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
2 months agotentacle: test/neorados: Narrow Asio includes in `leak_watch_notify` 68776/head
Adam C. Emerson [Wed, 6 May 2026 21:16:07 +0000 (17:16 -0400)]
tentacle: test/neorados: Narrow Asio includes in `leak_watch_notify`

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agotentacle: test/rgw_multi: Import boto.s3.user for UserJSONENcoder 68739/head
Adam C. Emerson [Tue, 12 May 2026 20:43:19 +0000 (16:43 -0400)]
tentacle: test/rgw_multi: Import boto.s3.user for UserJSONENcoder

This fixes the run-tox-qa failure in make check.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agotest/neorados: Don't leak watch handle
Adam C. Emerson [Wed, 26 Nov 2025 05:59:35 +0000 (00:59 -0500)]
test/neorados: Don't leak watch handle

Add missing unwatch call.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
(cherry picked from commit ccc40eb69b4e8b66f7b9d32622bb22614b410166)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoneorados: Avoid double cleanup in watch/notify
Adam C. Emerson [Wed, 26 Nov 2025 05:59:13 +0000 (00:59 -0500)]
neorados: Avoid double cleanup in watch/notify

An error coming in after `maybe_cleanup()` is called could trigger it
again. Add a flag to prevent that.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
(cherry picked from commit d4ee87e985a6f2234050fd85d31564b7776bf1e6)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoneorados: Actually enforce notification queue limit
Adam C. Emerson [Wed, 26 Nov 2025 05:54:21 +0000 (00:54 -0500)]
neorados: Actually enforce notification queue limit

We were adding an overflow marker on every message above capacity, not
just the first, vitiating the purpose of the bound. The shame, the
shame.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
(cherry picked from commit 4cc2dbe316be9d8ac63ee00a6aff5455ecb4cd86)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoneorados: Do not try to decode an empty response in notify
Adam C. Emerson [Wed, 26 Nov 2025 03:15:13 +0000 (22:15 -0500)]
neorados: Do not try to decode an empty response in notify

The response can be empty on some errors. Attempting to decode an
empty one loses the error value on valid errors. Also swallow any
decode errors.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
(cherry picked from commit 89134791c16a2332457cfea85321a07e9ff7ca87)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoneorados: Go through linger_cancel on `io_context` shutdown
Adam C. Emerson [Fri, 6 Mar 2026 00:53:17 +0000 (19:53 -0500)]
neorados: Go through linger_cancel on `io_context` shutdown

Rather than just dropping the reference, clean up the linger operation
properly within Objecter. Also, clear out handlers before
relinquishing reference to avoid use-after-free.

Fixes: https://tracker.ceph.com/issues/75164
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
(cherry picked from commit f5affe06676bec2f32f856bce85b5d78932d807f)

Conflicts:
qa/workunits/rados/test.sh
 - Just drop the `watch_leak` test on teuthology since it's of
   marginal utility and not worth backporting all of
   <https://github.com/ceph/ceph/pull/64219>.

Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agocommon/async: Fix removal from service list
Adam C. Emerson [Mon, 9 Mar 2026 22:03:42 +0000 (18:03 -0400)]
common/async: Fix removal from service list

Thanks to Seena Fallah <seenafallah@gmail.com> for this fix, part of a
larger commit.

Fixes: https://tracker.ceph.com/issues/75164
Co-authored-by: Seena Fallah <seenafallah@gmail.com>
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
(cherry picked from commit b6a54e67cbcf11b23dcd5a5cd59795aeb7ff948e)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoosdc: remove implicit LingerOp reference between watch/unwatch
Casey Bodley [Thu, 11 Dec 2025 19:19:01 +0000 (14:19 -0500)]
osdc: remove implicit LingerOp reference between watch/unwatch

before this change set, linger_register() returned a raw LingerOp
pointer with an implicit reference for the caller. for librados,
this implicit reference is only dropped when the corresponding
unwatch() calls linger_cancel()

after commit 94f42b648feea77bd09dc3fdb48e6db2b48c7717 introduced
linger_by_cookie(), unwatch() no longer has a safe way to drop this
implicit reference. to prevent LingerOp leaks when unwatch() returns
ENOTCONN, we can't hold this implicit reference count until unwatch()

linger_register() now returns an explicit reference to the caller as
intrusive_ptr<LingerOp>. this helps to guarantee that this reference
count gets dropped before the completion of watch()/aio_watch()

because linger_register() no longer acquires an implicit reference for
the caller, linger_cancel() no longer drops it with info->put()

Reported-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 1b0f873162d4bc357b230a78452531fdf39a6b25)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoosdc: linger_register() returns intrusive_ptr<LingerOp>
Casey Bodley [Thu, 11 Dec 2025 19:17:53 +0000 (14:17 -0500)]
osdc: linger_register() returns intrusive_ptr<LingerOp>

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 4064da7ce716b42ce4924787024fd7ce01182762)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoneorados: NotifierHandler holds intrusive_ptr<LingerOp>
Casey Bodley [Thu, 11 Dec 2025 19:16:45 +0000 (14:16 -0500)]
neorados: NotifierHandler holds intrusive_ptr<LingerOp>

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 72eb48e041820095d20a035627999ec3db781180)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoneorados: Notifier holds intrusive_ptr<LingerOp>
Casey Bodley [Thu, 11 Dec 2025 19:16:20 +0000 (14:16 -0500)]
neorados: Notifier holds intrusive_ptr<LingerOp>

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 9456aa73689924a0ad85005e824444b48d3c7d99)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agolibrados: aio_unwatch() delivers ENOTCONN to AioCompletion
Casey Bodley [Thu, 11 Dec 2025 16:34:00 +0000 (11:34 -0500)]
librados: aio_unwatch() delivers ENOTCONN to AioCompletion

94f42b648feea77bd09dc3fdb48e6db2b48c7717 added a new error condition to
IoCtx::aio_unwatch() that callers aren't prepared to handle. instead of
returning that error directly, report it asynchronously to the
AioCompletion

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit c0c146d37ae793fd1e1ab2a5118eac40149f2c6b)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoosdc: Objecter::linger_by_cookie() for safe cast from uint64
Casey Bodley [Fri, 26 Sep 2025 21:25:53 +0000 (17:25 -0400)]
osdc: Objecter::linger_by_cookie() for safe cast from uint64

a `linger_ops_set` was added for `Objecter::handle_watch_notify()`
as a safety check before casting `uint64_t cookie` to `LingerOp*`
and deferencing it

neorados also made use of this set through `Objecter::is_valid_watch()`
checks. however, this approach was still susceptible to use-after-free,
because the callers didn't preserve a LingerOp reference between this
check and its use - and the Objecter lock is dropped in between. in
addition, `neorados::RADOS::unwatch_()` was missing its check for
`is_valid_watch()`

librados did not make use of this `is_valid_watch()` at all, so was
casting cookies directly to LingerOp* and dereferencing. this results
in use-after-free for any cookies invalidated by `linger_cancel()` -
for example when called by `CB_DoWatchError`

replace `is_valid_watch()` with a `linger_by_cookie()` function that
* performs the validity check with `linger_ops_set`,
* safely reinterpret_casts the cookie to LingerOp*, and
* returns a reference to the caller via intrusive_ptr<LingerOp>

`librados::IoCtxImpl::watch_check()`, `unwatch()` and `aio_unwatch()`
now call `linger_by_cookie()`, so have to handle the null case by
returning `-ENOTCONN` (this matches neorados' existing behavior)

Fixes: https://tracker.ceph.com/issues/72771
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 94f42b648feea77bd09dc3fdb48e6db2b48c7717)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agolibrados: linger callbacks hold a reference to LingerOp
Casey Bodley [Fri, 26 Sep 2025 21:23:29 +0000 (17:23 -0400)]
librados: linger callbacks hold a reference to LingerOp

preserve a reference to LingerOp in case their invocation races with
another linger_cancel()

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 2455a713d44babf979b55832dc6f75363357d270)
Fixes: https://tracker.ceph.com/issues/76434
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agomds: remove duplicate context completion calls 68905/head
Venky Shankar [Thu, 30 Apr 2026 06:05:05 +0000 (11:35 +0530)]
mds: remove duplicate context completion calls

After reverting commit df404e0, the context completion in
MDSRank handling for `dump stray` command isn't required.

Also fixup the incorrect usage of std::unique_ptr with context
completion class (Context). Contexts delete themselves upon
completion.

Introduced-by: 801951e8c0d62dbbe724ce506fb44bc809bb7d4f
Signed-off-by: Venky Shankar <vshankar@redhat.com>
(cherry picked from commit a77af14dd75bd4bda8b245ec7da0b85abccebc45)