]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/log
ceph.git
5 weeks agokv/RocksDB: Add instrumentation to BinnedLRUCache 67349/head
Adam Kupczyk [Thu, 17 Jul 2025 16:09:02 +0000 (16:09 +0000)]
kv/RocksDB: Add instrumentation to BinnedLRUCache

1) perf counters
For each cache section in perf counters is created.
    "rocksdb-cache-O": {
        "capacity": 134217728,
        "usage": 134182832,
        "pinned": 0,
        "elems": 24502,
        "inserts": 25806978,
        "lookups": 150436987,
        "hits": 124629911,
        "misses": 25807076
    }
In default configuration there are 2 sections: "rocksdb-cache-O", "rocksdb-cache-default".

2) admin command
For each cache admin command "rocksdb show cache x" is added.
> ./bin/ceph tell osd.0 rocksdb show cache O
shard  capacity     usage    pinned     elems   inserts   lookups      hits    misses
    0  13631488  11076400         0      2099    136987    822679    685923    136756
    1  13631488  11549712         0      2043    133359    571500    438383    133117
    2  13631488  11060608         0      2232    135076    908468    773313    135155
    3  13631488  11166896         0      2269    134006    427070    293147    133923
    4  13631488  11117984         0      2297    133367    700242    567318    132924
    5  13631488  11306672         0      2155    137501   1130135    991810    138325
    6  13631488  11506512         0      2353    134515    662792    528514    134278
    7  13631488  11093856         0      2316    135348    718971    583421    135550
    8  13631488  11660624         0      2424    137363   1092043    954248    137795
    9  13631488  10962000         0      2561    131982    431702    300467    131235
   10  13631488  11379392         0      1916    134543    477118    342854    134264
   11  13631488  11294272         0      2555    134508    512393    378337    134056
   12  13631488  11277136         0      2079    137312   1131571    993692    137879
   13  13631488  10887776         0      2543    134001    567073    432903    134170
   14  13631488  10986528         0      2394    133288    584452    451018    133434
   15  13631488  11954464         0      2456    134615    708285    573374    134911

3) admin command
" ./bin/ceph tell osd.0 rocksdb reset cache O" clears "inserts",
"lookups", "hits" and "misses"

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
(cherry picked from commit cadd4a4f6cc376882555a31f0304766430ba9e6a)
(contributed as https://github.com/ceph/ceph/pull/64819)

5 weeks agoMerge PR #67993 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 19:55:54 +0000 (15:55 -0400)]
Merge PR #67993 into tentacle

* refs/pull/67993/head:
test/rgw/kafka: fix kafka relase to more recent one

Reviewed-by: J. Eric Ivancich <ivancich@redhat.com>
5 weeks agoMerge PR #67797 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 19:40:39 +0000 (15:40 -0400)]
Merge PR #67797 into tentacle

* refs/pull/67797/head:
qa/workunits/rbd: fix unbound variable in status()
qa/workunits/rbd: short-circuit status() if "ceph -s" fails
qa: rbd_mirror_fsx_compare.sh doesn't error out as expected

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
5 weeks agoMerge PR #67795 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 19:40:07 +0000 (15:40 -0400)]
Merge PR #67795 into tentacle

* refs/pull/67795/head:
qa/tasks: make rbd_mirror_thrash inherit from ThrasherGreenlet

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
5 weeks agoMerge PR #67705 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 19:39:48 +0000 (15:39 -0400)]
Merge PR #67705 into tentacle

* refs/pull/67705/head:
librbd/cache/pwl: WriteLogOperationSet::cell can be garbage

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
5 weeks agoMerge PR #66837 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:25:25 +0000 (14:25 -0400)]
Merge PR #66837 into tentacle

* refs/pull/66837/head:
os/bluestore: rename row names in RocksDBBlueFSVolumeSelector.
test/bluestore: add volume selector tests
os/bluestore:fix bluestore_volume_selection_reserved_factor usage

Reviewed-by: Adam Kupczyk <akupczyk@redhat.com>
5 weeks agoMerge PR #67354 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:24:11 +0000 (14:24 -0400)]
Merge PR #67354 into tentacle

* refs/pull/67354/head:
debian: remove invoke-rc.d calls from postrm scripts

Reviewed-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
5 weeks agoMerge PR #67407 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:22:32 +0000 (14:22 -0400)]
Merge PR #67407 into tentacle

* refs/pull/67407/head:
osd: add pg-upmap-primary to clean_pg_upmaps

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
5 weeks agoMerge PR #66482 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:21:40 +0000 (14:21 -0400)]
Merge PR #66482 into tentacle

* refs/pull/66482/head:
mgr/prometheus/test_module: Adding unit-test for new classes
mgr/prometheus: metrics header for standby module
mgr/prometheus: Use RLock to fix deadlock in HealthHistory
mgr/TTLCache: fix PyObject* lifetime management and cleanup logic
mgr/prometheus: prune stale health checks, compress output

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
5 weeks agoMerge PR #65913 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:17:08 +0000 (14:17 -0400)]
Merge PR #65913 into tentacle

* refs/pull/65913/head:
client: signal waitfor_commit waiters for write delegation enabled inode
test/libcephfs: add test for fsync on a write delegated inode
client: adjust `Fb` cap ref count check during synchronous fsync()

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
5 weeks agoMerge PR #65957 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:16:33 +0000 (14:16 -0400)]
Merge PR #65957 into tentacle

* refs/pull/65957/head:
client: crash caused by invalid iterator in _readdir_cache_cb

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
5 weeks agoMerge PR #66469 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:16:13 +0000 (14:16 -0400)]
Merge PR #66469 into tentacle

* refs/pull/66469/head:
mds: MDCache: check validity of mdr requests before dispatching
mds: MDCache request cleanup handles potential null mdr

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
5 weeks agoMerge PR #67617 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:14:09 +0000 (14:14 -0400)]
Merge PR #67617 into tentacle

* refs/pull/67617/head:
qa: fix TypeError in delay

Reviewed-by: Venky Shankar <vshankar@redhat.com>
5 weeks agoMerge PR #67455 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:10:14 +0000 (14:10 -0400)]
Merge PR #67455 into tentacle

* refs/pull/67455/head:
qa: krbd_rxbounce.sh: do more reads to generate more errors

Reviewed-by: Ramana Raja <rraja@redhat.com>
5 weeks agoMerge PR #67581 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:09:55 +0000 (14:09 -0400)]
Merge PR #67581 into tentacle

* refs/pull/67581/head:
librbd: don't complete ImageUpdateWatchers::shut_down() prematurely

Reviewed-by: Ramana Raja <rraja@redhat.com>
5 weeks agoMerge PR #67583 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:09:34 +0000 (14:09 -0400)]
Merge PR #67583 into tentacle

* refs/pull/67583/head:
librbd/mirror: detect trashed snapshots in UnlinkPeerRequest

Reviewed-by: Ramana Raja <rraja@redhat.com>
5 weeks agoMerge PR #67031 into tentacle
Patrick Donnelly [Mon, 6 Apr 2026 18:03:06 +0000 (14:03 -0400)]
Merge PR #67031 into tentacle

* refs/pull/67031/head:
doc/ceph.rst: scrub-related 'tell pgid' commands
osd/scrub: operator abort: (not) handling in-the-mail scrubs
osd/scrub: added the scrub-abort command
osd/scrub: support an operator-abort command
osd/scrub: removing the unused PgScrubber::m_scrub_reg_stamp

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
6 weeks agoMerge PR #68185 into tentacle
Patrick Donnelly [Fri, 3 Apr 2026 16:55:31 +0000 (12:55 -0400)]
Merge PR #68185 into tentacle

* refs/pull/68185/head:
20.2.1

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
6 weeks ago20.2.1 68185/head v20.2.1
Ceph Release Team [Thu, 2 Apr 2026 14:15:15 +0000 (14:15 +0000)]
20.2.1

Signed-off-by: Ceph Release Team <ceph-maintainers@ceph.io>
7 weeks agotest/rgw/kafka: fix kafka relase to more recent one 67993/head
Yuval Lifshitz [Wed, 4 Mar 2026 14:53:13 +0000 (14:53 +0000)]
test/rgw/kafka: fix kafka relase to more recent one

Fixes: https://tracker.ceph.com/issues/75323
Signed-off-by: Yuval Lifshitz <ylifshit@ibm.com>
(cherry picked from commit dc412a7e519d037acbcac8a92c7ecf2dbde9875a)

8 weeks agoMerge PR #67894 into tentacle
Patrick Donnelly [Thu, 19 Mar 2026 17:48:33 +0000 (13:48 -0400)]
Merge PR #67894 into tentacle

* refs/pull/67894/head:
src: Move the decision to build the ISA plugin to the top level make file

Reviewed-by: Bill Scales <bill_scales@uk.ibm.com>
8 weeks agoMerge PR #67765 into tentacle
Patrick Donnelly [Thu, 19 Mar 2026 15:23:06 +0000 (11:23 -0400)]
Merge PR #67765 into tentacle

* refs/pull/67765/head:
qa: reduce radosbench runs
qa: use correct upgrade order
qa: preload isa ec module
qa/tests: added inital draft for tentacle-p2p

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
8 weeks agosrc: Move the decision to build the ISA plugin to the top level make file 67894/head
Alex Ainscow [Wed, 18 Mar 2026 14:51:57 +0000 (14:51 +0000)]
src: Move the decision to build the ISA plugin to the top level make file

Previously, the first time you build ceph, common did not see the correct
value of WITH_EC_ISA_PLUGIN.  The consequence is that the global.yaml gets
build with osd_erasure_code_plugins not including isa.  This is not great
given its our default plugin.

We considered simply removing this parameter from make entirely, but this
may require more discussion about supporting old hardware.

So the slightly ugly fix is to move this erasure-code specific declartion
to the top-level.

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

8 weeks agoqa: reduce radosbench runs wip-yuriw-squid-p2p-tentacle 67765/head
Patrick Donnelly [Wed, 18 Mar 2026 17:42:38 +0000 (13:42 -0400)]
qa: reduce radosbench runs

to avoid running out of space.

Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
8 weeks agoqa: use correct upgrade order
Patrick Donnelly [Wed, 18 Mar 2026 17:42:22 +0000 (13:42 -0400)]
qa: use correct upgrade order

Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
8 weeks agoqa: preload isa ec module
Patrick Donnelly [Wed, 18 Mar 2026 17:41:59 +0000 (13:41 -0400)]
qa: preload isa ec module

So that the mons won't load an upgraded plugin.

Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
8 weeks agoMerge PR #67750 into tentacle
Patrick Donnelly [Wed, 18 Mar 2026 17:41:18 +0000 (13:41 -0400)]
Merge PR #67750 into tentacle

* refs/pull/67750/head:
Revert "Merge pull request #66958 from Hezko/wip-74413-tentacle"

Reviewed-by: Yuri Weinstein <yweins@redhat.com>
Tested-by: Patrick Donnelly <pdonnell@redhat.com>
2 months agoRevert "Merge pull request #66958 from Hezko/wip-74413-tentacle" 67750/head
Patrick Donnelly [Thu, 12 Mar 2026 06:46:09 +0000 (12:16 +0530)]
Revert "Merge pull request #66958 from Hezko/wip-74413-tentacle"

This reverts commit 6dddf544a44d3944e883c051d886f0049a95a2e5, reversing
changes made to 07ec509cf156d83e38aa6c2a151d4f06009e8dfa.

Backport 6dddf54 introduced a new connection feature bit
NVMEOF_BEACON_DIFF but there are plans (#66624) to make further
enhancements on that feature bit. This would cause the mons to crash
during upgrades.

However, this connection feature bit should not have been added to
begin with. The correct way to do this is extend
e55ad7bce2fb85096cd31ff9846403f9dbd01e85 by @athanatos to require
`CEPH_MON_FEATURE_INCOMPAT_NVMEOF_BEACON_DIFF` if all mons support it.
This should be done by having mons add/update their supported features
the MonMap via an update from `MMonJoin` (see for instance `crush_loc`
which was recently added to `mon_info_t`). Once the supported features
indicated for each mon in the `MonMap` show they understand the new
NVMEOF_BEACON_DIFF, then it should be turned on globally in the
`MonMap` as a required feature (added to the incompat set).

Conflicts:
src/mon/NVMeofGwMon.h: conflicts with header change from 19c9be2
                               fix missing header change in #66584

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2 months agoqa/workunits/rbd: fix unbound variable in status() 67797/head
Ilya Dryomov [Mon, 2 Mar 2026 11:07:48 +0000 (12:07 +0100)]
qa/workunits/rbd: fix unbound variable in status()

It was missed in commit 5fe64fa806f3 ("qa: rbd_mirror.sh: change
parameters to cluster rather than daemon name").

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 1a280b9a320d51bdc4cb80be9bdd6ae265151132)

2 months agoqa/workunits/rbd: short-circuit status() if "ceph -s" fails
Ilya Dryomov [Sun, 1 Mar 2026 21:55:52 +0000 (22:55 +0100)]
qa/workunits/rbd: short-circuit status() if "ceph -s" fails

In mirror-thrash tests, status() can be invoked after one of the
clusters is effectively stopped due to a watchdog bark:

2026-03-01T22:27:38.633 INFO:tasks.daemonwatchdog.daemon_watchdog:thrasher.rbd_mirror.[cluster2] failed
2026-03-01T22:27:38.633 INFO:tasks.daemonwatchdog.daemon_watchdog:BARK! unmounting mounts and killing all daemons
...
2026-03-01T22:32:46.964 INFO:tasks.workunit.cluster1.client.mirror.trial199.stderr:+ status
2026-03-01T22:32:46.964 INFO:tasks.workunit.cluster1.client.mirror.trial199.stderr:+ local cluster daemon image_pool image_ns image
2026-03-01T22:32:46.964 INFO:tasks.workunit.cluster1.client.mirror.trial199.stderr:+ for cluster in ${CLUSTER1} ${CLUSTER2}

In this scenario all commands that are invoked from the loop body
are going to time out anyway.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 82717e43a08a1262987f5e271fd72d4433c4fb3b)

2 months agoqa: rbd_mirror_fsx_compare.sh doesn't error out as expected
Ilya Dryomov [Sun, 1 Mar 2026 16:45:51 +0000 (17:45 +0100)]
qa: rbd_mirror_fsx_compare.sh doesn't error out as expected

In mirror-thrash tests, one of the clusters can be effectively stopped
due to a watchdog bark while rbd_mirror_fsx_compare.sh is running and is
in the middle of the "wait for all images" loop:

2026-03-01T12:55:35.059 INFO:tasks.workunit.cluster1.client.mirror.trial055.stderr:+ retrying_seconds=1040
2026-03-01T12:55:35.060 INFO:tasks.workunit.cluster1.client.mirror.trial055.stderr:+ '[' 1040 -le 7200 ']'
2026-03-01T12:55:35.060 INFO:tasks.workunit.cluster1.client.mirror.trial055.stderr:++ rbd --cluster cluster2 --pool mirror ls
2026-03-01T12:55:35.060 INFO:tasks.workunit.cluster1.client.mirror.trial055.stderr:++ wc -l
2026-03-01T12:55:35.084 INFO:tasks.workunit.cluster1.client.mirror.trial055.stderr:+ '[' 290 -ge 292 ']'
2026-03-01T12:55:35.084 INFO:tasks.workunit.cluster1.client.mirror.trial055.stderr:+ sleep 10
...
2026-03-01T12:55:49.568 INFO:tasks.daemonwatchdog.daemon_watchdog:thrasher.rbd_mirror.[cluster2] failed
2026-03-01T12:55:49.568 INFO:tasks.daemonwatchdog.daemon_watchdog:BARK! unmounting mounts and killing all daemons

In this scenario "rbd ls" is going to time out repeatedly, turning the
loop into up to a ~60-hour sleep (up to 720 iterations with a 5-minute
timeout + 10-second sleep per iteration).

Fixes: https://tracker.ceph.com/issues/75239
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 81a5906f0d1cc844bb4ef16aae9ace3e7d371ac2)

2 months agoqa/tasks: make rbd_mirror_thrash inherit from ThrasherGreenlet 67795/head
Ilya Dryomov [Fri, 27 Feb 2026 14:18:27 +0000 (15:18 +0100)]
qa/tasks: make rbd_mirror_thrash inherit from ThrasherGreenlet

Commit 21b4b89e5280 ("qa/tasks: watchdog terminate thrasher") made it
required for a thrasher to have stop_and_join() method, but the
preceding commit a035b5a22fb8 ("thrashers: standardize stop and join
method names") missed to add it to rbd_mirror_thrash (whether as an
ad-hoc implementation or by way of inheriting from ThrasherGreenlet).
Later on, commit 783f0e3a9903 ("qa: Adding a new class for the
daemonwatchdog to monitor") worsened the issue by expanding the use
of stop_and_join() to all watchdog barks rather than just the case of
a thrasher throwing an exception which is something that practically
never happens.

Fixes: https://tracker.ceph.com/issues/75200
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 3ebe3a0a43251b0f126497d4100bd1af9ca8afc5)

2 months agoqa/tests: added inital draft for tentacle-p2p
Yuri Weinstein [Thu, 12 Mar 2026 21:38:39 +0000 (14:38 -0700)]
qa/tests: added inital draft for tentacle-p2p

Signed-off-by: Yuri Weinstein <yweinste@redhat.com>
2 months agolibrbd/cache/pwl: WriteLogOperationSet::cell can be garbage 67705/head
Ilya Dryomov [Mon, 16 Feb 2026 21:24:47 +0000 (22:24 +0100)]
librbd/cache/pwl: WriteLogOperationSet::cell can be garbage

The pointer is never initialized but gets printed by operator<<.
Luckily outside of that it's unused.

Fixes: https://tracker.ceph.com/issues/74971
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit bffa11487cb7d68c0aa39994f50fbc3b4b00e415)

2 months agoclient: signal waitfor_commit waiters for write delegation enabled inode 65913/head
Venky Shankar [Wed, 15 Oct 2025 13:40:35 +0000 (13:40 +0000)]
client: signal waitfor_commit waiters for write delegation enabled inode

Fixes: http://tracker.ceph.com/issues/73624
Signed-off-by: Venky Shankar <vshankar@redhat.com>
Tested-by: Suhas Athani <sathani@redhat.com>
(cherry picked from commit ee864798373248abda5237ceef2258ed7236f6ee)

2 months agotest/libcephfs: add test for fsync on a write delegated inode
Venky Shankar [Mon, 29 Sep 2025 06:44:28 +0000 (06:44 +0000)]
test/libcephfs: add test for fsync on a write delegated inode

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

2 months agoclient: adjust `Fb` cap ref count check during synchronous fsync()
Venky Shankar [Mon, 29 Sep 2025 06:41:23 +0000 (06:41 +0000)]
client: adjust `Fb` cap ref count check during synchronous fsync()

cephfs client holds a ref on Fb caps when handing out a write delegation[0].
As fsync from (Ganesha) client holding write delegation will block indefinitely[1]
waiting for cap ref for Fb to drop to 0, which will never happen until the
delegation is returned/recalled.

[0]: https://github.com/ceph/ceph/blob/main/src/client/Delegation.cc#L71
[1]: https://github.com/ceph/ceph/blob/main/src/client/Client.cc#L12438

If an inode has been write delegated, adjust for cap reference count
check in fsync().

Note: This only workls for synchronous fsync() since `client_lock` is
held for the entire duration of the call (at least till the patch leading
upto the reference count check). Asynchronous fsync() needs to be fixed
separately (as that can drop `client_lock`).

Fixes: https://tracker.ceph.com/issues/73298
Signed-off-by: Venky Shankar <vshankar@redhat.com>
(cherry picked from commit d7eca69a5b887e2b65513411280158d06cdb6b3c)

2 months agomgr/prometheus/test_module: Adding unit-test for new classes 66482/head
NitzanMordhai [Mon, 2 Feb 2026 13:37:34 +0000 (13:37 +0000)]
mgr/prometheus/test_module: Adding unit-test for new classes

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

2 months agomgr/prometheus: metrics header for standby module
Nitzan Mordechai [Thu, 11 Dec 2025 06:32:31 +0000 (06:32 +0000)]
mgr/prometheus: metrics header for standby module

PR #65245 drop the header set for standby module,
we should still have it.

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

2 months agomgr/prometheus: Use RLock to fix deadlock in HealthHistory
Nitzan Mordechai [Tue, 9 Dec 2025 12:34:07 +0000 (12:34 +0000)]
mgr/prometheus: Use RLock to fix deadlock in HealthHistory

The HealthHistory.check() method acquires the lock and then calls
HealthHistory.save(), which also tries to acquire the same lock.
With a regular Lock(), the same thread blocks trying to re-acquire it (deadlock).
Switch to RLock to allow nested acquisition by the same thread.
PR #65245 added the locks.

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

2 months agomgr/TTLCache: fix PyObject* lifetime management and cleanup logic
Nitzan Mordechai [Tue, 26 Aug 2025 14:30:12 +0000 (14:30 +0000)]
mgr/TTLCache: fix PyObject* lifetime management and cleanup logic

Fix incorrect reference counting and memory retention behavior in TTLCache
when storing PyObject* values.
Previously, TTLCache::insert did not increment the reference count,
and `erase` / `clear` did not correctly decref the values, leading
to use-after-free or leaks depending on usage.

Changes:
- Move Py_INCREF from cacheable_get_python() to TTLCache::insert()
- Add `TTLCache::clear()` method for proper memory cleanup
- Ensure TTLCache::get() returns a new reference
- Fix misuse of std::move on c_str() in PyJSONFormatter

These changes prevent both memory leaks and use-after-free errors when
mgr modules use cached Python objects logic.

Fixes: https://tracker.ceph.com/issues/68989
Signed-off-by: Nitzan Mordechai <nmordech@redhat.com>
(cherry picked from commit 7fadf6a8d464456668550e1f85c6c5a86f94bb49)

2 months agomgr/prometheus: prune stale health checks, compress output
Nitzan Mordechai [Wed, 20 Aug 2025 14:50:40 +0000 (14:50 +0000)]
mgr/prometheus: prune stale health checks, compress output

This patch introduces several improvements to the Prometheus module:

 - Introduces `HealthHistory._prune()` to drop stale and inactive health checks.
  Limits the in-memory healthcheck dict to a configurable max_entries (default 1000).
  TTL for stale entries is configurable via `healthcheck_history_stale_ttl` (default 3600s).

 - Refactors HealthHistory.check() to use a unified iteration over known and current checks,
  improving concurrency and minimizing redundant updates.

 - Use cherrypy.tools.gzip instead of manual gzip.compress() for cleaner
  HTTP compression with proper header handling and client negotiation.

 - Introduces new module options:
    - `healthcheck_history_max_entries`

 - Add proper error handling for CherryPy engine startup failures
 - Remove os._exit monkey patch in favor of proper exception handling
 - Remove manual Content-Type header setting (CherryPy handles automatically)

Fixes: https://tracker.ceph.com/issues/68989
Signed-off-by: Nitzan Mordechai <nmordech@redhat.com>
(cherry picked from commit be28901f361cadcf6bf993276d71f3a79beaae4f)

2 months agoMerge PR #67318 into tentacle
Patrick Donnelly [Tue, 3 Mar 2026 20:53:18 +0000 (15:53 -0500)]
Merge PR #67318 into tentacle

* refs/pull/67318/head:
qa/multisite: use boto3's ClientError in place of assert_raises from tools.py.
qa/multisite: test fixes
qa/multisite: boto3 in tests.py
qa/multisite: zone files use boto3 resource api
qa/multisite: switch to boto3 in multisite test libraries

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
2 months agoMerge PR #67425 into tentacle
Patrick Donnelly [Tue, 3 Mar 2026 20:52:10 +0000 (15:52 -0500)]
Merge PR #67425 into tentacle

* refs/pull/67425/head:
RGW | fix conditional MultiWrite

Reviewed-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoMerge PR #67449 into tentacle
Patrick Donnelly [Tue, 3 Mar 2026 20:51:44 +0000 (15:51 -0500)]
Merge PR #67449 into tentacle

* refs/pull/67449/head:
tentacle: qa/rgw: bucket notifications use pynose

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
2 months agoqa: fix TypeError in delay 67617/head
Jos Collin [Tue, 24 Feb 2026 02:03:13 +0000 (07:33 +0530)]
qa: fix TypeError in delay

random.randrange() asserts TypeError for arguments of type 'float'.
So use random.uniform() to fix this.

Fixes: https://tracker.ceph.com/issues/75090
Signed-off-by: Jos Collin <jcollin@redhat.com>
(cherry picked from commit 027400df81aa3bff0def422acfa43eff5f6e08c0)

2 months agolibrbd/mirror: detect trashed snapshots in UnlinkPeerRequest 67583/head
Ilya Dryomov [Tue, 24 Feb 2026 11:46:35 +0000 (12:46 +0100)]
librbd/mirror: detect trashed snapshots in UnlinkPeerRequest

If two instances of UnlinkPeerRequest race with each other (e.g. due
to rbd-mirror daemon unlinking from a previous mirror snapshot and the
user taking another mirror snapshot at same time), the snapshot that
UnlinkPeerRequest was created for may be in the process of being removed
(which may mean trashed by SnapshotRemoveRequest::trash_snap()) or fully
removed by the time unlink_peer() grabs the image lock.  Because trashed
snapshots weren't handled explicitly, UnlinkPeerRequest could spuriously
fail with EINVAL ("not mirror snapshot" case) instead of the expected
ENOENT ("missing snapshot" case).  This in turn could lead to spurious
ImageReplayer failures with it stopping prematurely.

Fixes: https://tracker.ceph.com/issues/68279
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 3596ca077097a4e0ff8e8d05a410c2044332391e)

2 months agolibrbd: don't complete ImageUpdateWatchers::shut_down() prematurely 67581/head
Ilya Dryomov [Wed, 25 Feb 2026 10:37:16 +0000 (11:37 +0100)]
librbd: don't complete ImageUpdateWatchers::shut_down() prematurely

ImageUpdateWatchers::flush() requests aren't tracked with
m_in_flight-like mechanism the way ImageUpdateWatchers::send_notify()
requests are, but in both cases callbacks that represent delayed work
that is very likely to (indirectly) reference ImageCtx are involved.
When the image is getting closed, ImageUpdateWatchers::shut_down() is
called before anything that belongs to ImageCtx is destroyed.  However,
the shutdown can complete prematurely in the face of a pending flush if
one gets sent shortly before CloseRequest is invoked.  The callback for
that flush will then race with CloseRequest and may execute after parts
of or even the entire ImageCtx is destroyed, leading to use-after-free
and various segfaults.

Fixes: https://tracker.ceph.com/issues/75161
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 3ea6ee62aa339d1ad9976fdcc6e207a505f9bf44)

2 months agoos/bluestore: rename row names in RocksDBBlueFSVolumeSelector. 66837/head
Igor Fedotov [Wed, 21 May 2025 08:30:15 +0000 (11:30 +0300)]
os/bluestore: rename row names in RocksDBBlueFSVolumeSelector.

Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit a9f591f4e1cb1e364879165250c55cb0f841d64f)

2 months agotest/bluestore: add volume selector tests
Igor Fedotov [Mon, 19 May 2025 19:20:53 +0000 (22:20 +0300)]
test/bluestore: add volume selector tests

Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit 158d1550a021ed60e5ad1c565b247e5b0b6d5946)

2 months agoos/bluestore:fix bluestore_volume_selection_reserved_factor usage
Igor Fedotov [Mon, 19 May 2025 19:19:45 +0000 (22:19 +0300)]
os/bluestore:fix bluestore_volume_selection_reserved_factor usage

Fixes: https://tracker.ceph.com/issues/71368
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit 43d7864093f92977a3fd084bbfd65229244b1cc9)

2 months agoMerge PR #67559 into tentacle
Patrick Donnelly [Fri, 27 Feb 2026 15:04:33 +0000 (10:04 -0500)]
Merge PR #67559 into tentacle

* refs/pull/67559/head:
test: disable known flaky tests in run-rbd-unit-tests

Reviewed-by: Ramana Raja <rraja@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
2 months agotest: disable known flaky tests in run-rbd-unit-tests 67559/head
Ilya Dryomov [Thu, 19 Feb 2026 14:45:39 +0000 (15:45 +0100)]
test: disable known flaky tests in run-rbd-unit-tests

The failures seem to be more frequent on newer hardware.  In the
absence of immediate fixes, disable a few tests that have been known to
be flaky for a long time to avoid disrupting "make check" runs.

Fixes: https://tracker.ceph.com/issues/75163
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit ecb616681b5347676198b33c80de60742bac7b69)

2 months agoMerge PR #66540 into tentacle
Patrick Donnelly [Thu, 26 Feb 2026 20:17:06 +0000 (15:17 -0500)]
Merge PR #66540 into tentacle

* refs/pull/66540/head:
include: detect corrupt frag from byteswap
test/encoding: print context on diff failure
mds: dump frag_t as an object
common/frag: produce valid fragments for test instances
common: simplify fragment printing
common: properly convert frag_t to net/store endianness
mds: include sysinfo in status command output
include/frag.h: un-inline methods to reduce header dependencies

Tested-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
2 months agoMerge PR #65358 into tentacle
Patrick Donnelly [Thu, 26 Feb 2026 20:16:07 +0000 (15:16 -0500)]
Merge PR #65358 into tentacle

* refs/pull/65358/head:
qa: Disable a test for kernel mount
qa: Run test_admin with the squid client
src/test/mds: Fix TestMDSAuthCaps
client: Fix the multifs auth caps check
mds: Fix multifs auth caps check
qa: Fix validation of client_version
qa: Test cross fs access by single client in multifs

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
2 months agoMerge PR #67333 into tentacle
Patrick Donnelly [Thu, 26 Feb 2026 13:53:27 +0000 (08:53 -0500)]
Merge PR #67333 into tentacle

* refs/pull/67333/head:
test/test_bluefs: make a standalone test case to reproduce bug#74765
os/bluestore: update volume selector after recovering BlueFS WAL in
test/test_bluefs: reproduce volume selector inconsistency after
os/bluestore: move RocksDBBlueFSVolumeSelector to BlueFS.cc
os/bluestore: rename/repurpose bluefs_check_volume_selector_on_umount setting.
os/bluestore/bluefs: Fix stat() for WAL envelope mode

Reviewed-by: Adam Kupczyk <akupczyk@redhat.com>
2 months agoqa: krbd_rxbounce.sh: do more reads to generate more errors 67455/head
Ilya Dryomov [Sun, 8 Feb 2026 08:27:26 +0000 (09:27 +0100)]
qa: krbd_rxbounce.sh: do more reads to generate more errors

On faster hardware having each thread do 1024 reads isn't always
sufficient for the "two orders of magnitude" threshold that is used in
the test.

Fixes: https://tracker.ceph.com/issues/74712
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 7f85b9ddb54cb3d83311daa7a72be27731be2806)

2 months agotentacle: qa/rgw: bucket notifications use pynose 67449/head
Casey Bodley [Thu, 19 Feb 2026 15:09:44 +0000 (10:09 -0500)]
tentacle: qa/rgw: bucket notifications use pynose

nose incompatibility in multisite tests was fixed by switching to pynose
in https://github.com/ceph/teuthology/pull/1947, so i'm trying the same
here

Fixes: https://tracker.ceph.com/issues/74573
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 915a5309a639333839829b5a554f3fdb6c560464)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2 months agoMerge PR #65949 into tentacle
Patrick Donnelly [Thu, 19 Feb 2026 17:12:12 +0000 (12:12 -0500)]
Merge PR #65949 into tentacle

* refs/pull/65949/head:
RGW | fixed enqueueing the overwritten object for gc
RGW | Added debugs in cases where precondition check fails
RGW | fix conditional Delete and MultiDelete

Reviewed-by: Casey Bodley <cbodley@redhat.com>
2 months agotest/test_bluefs: make a standalone test case to reproduce bug#74765 67333/head
Igor Fedotov [Thu, 12 Feb 2026 15:46:35 +0000 (18:46 +0300)]
test/test_bluefs: make a standalone test case to reproduce bug#74765

Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit 03ef619e79a56cd363b087a5c6f19a1a09b49040)

2 months agoos/bluestore: update volume selector after recovering BlueFS WAL in
Igor Fedotov [Wed, 11 Feb 2026 16:52:20 +0000 (19:52 +0300)]
os/bluestore: update volume selector after recovering BlueFS WAL in
envelope mode.

Fixes: https://tracker.ceph.com/issues/74765
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit 7807e11ee411192563fa256143bce9a454ccf5f1)

2 months agotest/test_bluefs: reproduce volume selector inconsistency after
Igor Fedotov [Wed, 11 Feb 2026 16:36:20 +0000 (19:36 +0300)]
test/test_bluefs: reproduce volume selector inconsistency after
recovering WAL in envelope mode.

Reproduces: https://tracker.ceph.com/issues/74765

Exact bug reproduction (which occurs on file removal) requires
'bluefs_check_volume_selector_on_mount' to be set manually to false
in 'wal_v2_simulate_crash' test case.
That's not the case for the default implementation which fails volume selector
validation at earlier stage during BlueFS mount.
This seems a general approach which provides better test coverage.

Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit e65564e9d1d7f97731f5f9d1d0072192ffb66183)

2 months agoos/bluestore: move RocksDBBlueFSVolumeSelector to BlueFS.cc
Igor Fedotov [Wed, 11 Feb 2026 16:34:30 +0000 (19:34 +0300)]
os/bluestore: move RocksDBBlueFSVolumeSelector to BlueFS.cc

We'll need it from test_bluefs.cc and hence better move out of
BlueStore.cc to not expose it for the tests.

Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit 42b25e52e19014206b26be7ea7fa1e5538ecae08)

2 months agoos/bluestore: rename/repurpose bluefs_check_volume_selector_on_umount setting.
Igor Fedotov [Wed, 11 Feb 2026 16:20:23 +0000 (19:20 +0300)]
os/bluestore: rename/repurpose bluefs_check_volume_selector_on_umount setting.

This is bluefs_check_volume_selector_on_mount now and enables volume
selector validation on both mount and umount.

Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit 777783f4219d7e456d701b01463ec3419bf20873)

2 months agoos/bluestore/bluefs: Fix stat() for WAL envelope mode
Adam Kupczyk [Thu, 4 Dec 2025 13:59:57 +0000 (13:59 +0000)]
os/bluestore/bluefs: Fix stat() for WAL envelope mode

After indexing WAL envelope files update of actual file size was
forgotten. Strangely, it does not affect RocksDB WAL recovery procedure.

Fixes: https://tracker.ceph.com/issues/74091
Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
(cherry picked from commit 5a13df1c8c68d98c8a98ec6dc90c80ef8a5b6cbb)

2 months agoRGW | fix conditional MultiWrite 67425/head
Ali Masarwa [Sun, 3 Aug 2025 11:00:11 +0000 (14:00 +0300)]
RGW | fix conditional MultiWrite

Signed-off-by: Ali Masarwa <amasarwa@redhat.com>
(cherry picked from commit 0f8d0969d50a986837d0d79134cf561af1fefad2)

2 months agoMerge PR #67319 into tentacle
Patrick Donnelly [Thu, 19 Feb 2026 13:26:31 +0000 (08:26 -0500)]
Merge PR #67319 into tentacle

* refs/pull/67319/head:
mon: Deny EC optimizations (fast EC) for non-4k-aligned chunk-sizes.

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
2 months agoosd: add pg-upmap-primary to clean_pg_upmaps 67407/head
Laura Flores [Fri, 28 Feb 2025 06:04:42 +0000 (06:04 +0000)]
osd: add pg-upmap-primary to clean_pg_upmaps

This commit adds handling of pg_upmap_primary to `clean_pg_upmaps`
so invalid mappings are properly removed. Invalid mappings occur
when pools are deleted, the PG size is decreased, or an OSD is
marked down/out.

Test cases cover cases where:
1. PG num is reduced (all pg_upmap_primary mappings should be canceled)
2. An OSD outside of the up set has been mapped as the primary
3. An OSD is marked "out"
4. A mapping is redundant
5. A pool is deleted

Run the unit test with:
$ ninja unittest_osdmap
$ ./bin/unittest_osdmap --gtest_filter=*CleanPGUpmapPrimaries* --debug_osd=10

Fixes: https://tracker.ceph.com/issues/67265
Signed-off-by: Laura Flores <lflores@ibm.com>
(cherry picked from commit e37d02a3a591f559710471d4ce3dcef76bb9565f)

2 months agomon: Deny EC optimizations (fast EC) for non-4k-aligned chunk-sizes. 67319/head
Alex Ainscow [Wed, 11 Feb 2026 18:11:12 +0000 (18:11 +0000)]
mon: Deny EC optimizations (fast EC) for non-4k-aligned chunk-sizes.

There are some bugs in the way Fast EC handles non 4k-aligned chunk sizes.

Such chunk sizes are buggy and even if they did work, the performance
would not be very good.  Storage efficiency is also not helped by these
unusual encodings.

This commit will reject any attempt to turn optimizations (fast EC) on.

If the default is set to turn optimizations on, then this will be ignored
if the profile is not 4k aligned.

Note that to create a profile in the first place requires a --force override.

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

2 months agodebian: remove invoke-rc.d calls from postrm scripts 67354/head
Kefu Chai [Fri, 21 Nov 2025 11:50:26 +0000 (19:50 +0800)]
debian: remove invoke-rc.d calls from postrm scripts

Previously, we called "invoke-rc.d ceph stop" in postrm scripts to
support sysvinit-based installations. However, this fails on systemd-
based systems, which are now the default on modern Debian distributions.

When invoke-rc.d detects systemd as the init system, it delegates to
systemctl, converting "invoke-rc.d ceph stop" to "systemctl stop
ceph.service". Since Ceph provides ceph.target and template units
(ceph-osd@.service, ceph-mon@.service, etc.) rather than a monolithic
ceph.service, this command always fails with exit code 5
(LSB EXIT_NOTINSTALLED).

This failure prevents the auto-generated cleanup sections added by
debhelper from executing properly, which can leave the system in an
inconsistent state during package removal.

Changes:

- Remove the invoke-rc.d call entirely. Systemd will handle service
  cleanup through its own mechanisms when the package is removed.
- Remove redundant "exit 0" statement (the script exits successfully
  by default, and "set -e" is no longer needed without commands that
  might fail).
- Remove vim modeline comment, as it's unnecessary for a 3-line script.
- Eventually remove this 3-line script stanza, as this is exactly what
  debhelper provides us.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
(cherry picked from commit 4f48af0d01472453b9388732fcd10997ee893929)

3 months agoqa/multisite: use boto3's ClientError in place of assert_raises from tools.py. 67318/head
Shilpa Jagannath [Tue, 3 Feb 2026 05:15:46 +0000 (00:15 -0500)]
qa/multisite: use boto3's ClientError in place of assert_raises from tools.py.

tools.py should eventually be removed once all other dependent tests move to boto3

Signed-off-by: Shilpa Jagannath <smanjara@redhat.com>
(cherry picked from commit 3d08847abc44e2c09e1ca7fa8a2fbadb32332303)

Conflicts:
src/test/rgw/rgw_multi/tests.py
 - Assert changes
 - We still don't replicate object locks in tentacle
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
3 months agoqa/multisite: test fixes
Shilpa Jagannath [Wed, 28 Jan 2026 00:04:19 +0000 (19:04 -0500)]
qa/multisite: test fixes

Signed-off-by: Shilpa Jagannath <smanjara@redhat.com>
(cherry picked from commit 90eb0612fd83547b20a1e1eeae8f2384526be508)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
3 months agoqa/multisite: boto3 in tests.py
Shilpa Jagannath [Wed, 21 Jan 2026 23:54:55 +0000 (18:54 -0500)]
qa/multisite: boto3 in tests.py

Signed-off-by: Shilpa Jagannath <smanjara@redhat.com>
(cherry picked from commit 3438add3fc9e086da6313830e697e6a987893f3c)

Conflicts:
src/test/rgw/rgw_multi/tests.py
 - Whitespace and other drift
 - Tentacle doesn't sync object locks
 - `test_suspended_delete_marker_incremental_sync` is a new test but
   not a new behavior.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
3 months agoqa/multisite: zone files use boto3 resource api
Shilpa Jagannath [Wed, 21 Jan 2026 06:50:01 +0000 (01:50 -0500)]
qa/multisite: zone files use boto3 resource api

Signed-off-by: Shilpa Jagannath <smanjara@redhat.com>
(cherry picked from commit 47ad27cb2f373ee5057a8b2fd1acaaa5073729b7)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
3 months agoqa/multisite: switch to boto3 in multisite test libraries
Shilpa Jagannath [Tue, 20 Jan 2026 23:42:30 +0000 (18:42 -0500)]
qa/multisite: switch to boto3 in multisite test libraries

Signed-off-by: Shilpa Jagannath <smanjara@redhat.com>
(cherry picked from commit c84efd9af5a4e2845745285ada994aad072eb2a0)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
3 months agoMerge PR #67279 into tentacle
Patrick Donnelly [Fri, 13 Feb 2026 19:38:54 +0000 (14:38 -0500)]
Merge PR #67279 into tentacle

* refs/pull/67279/head:
librbd: introduce RBD_LOCK_MODE_EXCLUSIVE_TRANSIENT
librbd: prepare lock_acquire() for changing between policies
librbd: fix RequestLockPayload log message in ImageWatcher
librbd: amend error message in lock_acquire()

Reviewed-by: Ramana Raja <rraja@redhat.com>
3 months agoMerge PR #67226 into tentacle
Patrick Donnelly [Fri, 13 Feb 2026 15:21:44 +0000 (10:21 -0500)]
Merge PR #67226 into tentacle

* refs/pull/67226/head:
qa/standalone/availability.sh: retry after feature is turned on

Reviewed-by: Kamoltat Sirivadhna <ksirivad@redhat.com>
3 months agoMerge PR #66839 into tentacle
Patrick Donnelly [Fri, 13 Feb 2026 15:19:44 +0000 (10:19 -0500)]
Merge PR #66839 into tentacle

* refs/pull/66839/head:
vstart.sh: revert unintended allocator type change
os/bluestore: introduce allocator lookup policy
os/bluestore: add free space spatial histogram to adminsock

Reviewed-by: Adam Kupczyk <akupczyk@redhat.com>
3 months agoMerge PR #66611 into tentacle
Patrick Donnelly [Fri, 13 Feb 2026 15:18:17 +0000 (10:18 -0500)]
Merge PR #66611 into tentacle

* refs/pull/66611/head:
Revert "PrimeryLogPG: don't accept ops with mixed balance_reads and rwordered flags"

Reviewed-by: Greg Farnum <gfarnum@redhat.com>
Reviewed-by: Samuel Just <sjust@redhat.com>
3 months agoMerge PR #67283 into tentacle
Patrick Donnelly [Fri, 13 Feb 2026 15:14:27 +0000 (10:14 -0500)]
Merge PR #67283 into tentacle

* refs/pull/67283/head:
qa/tasks/qemu: adjust NFS service name for Rocky 10
qa/tasks/qemu: install genisoimage package

Reviewed-by: Ramana Raja <rraja@redhat.com>
3 months agoMerge PR #67282 into tentacle
Patrick Donnelly [Fri, 13 Feb 2026 15:13:51 +0000 (10:13 -0500)]
Merge PR #67282 into tentacle

* refs/pull/67282/head:
qa/workunits/rbd: use the same qemu-iotests version throughout

Reviewed-by: Ramana Raja <rraja@redhat.com>
3 months agoMerge PR #67281 into tentacle
Patrick Donnelly [Fri, 13 Feb 2026 15:13:18 +0000 (10:13 -0500)]
Merge PR #67281 into tentacle

* refs/pull/67281/head:
qa/valgrind.supp: make gcm_cipher_internal suppression more resilient

Reviewed-by: Casey Bodley <cbodley@redhat.com>
3 months agolibrbd: introduce RBD_LOCK_MODE_EXCLUSIVE_TRANSIENT 67279/head
Ilya Dryomov [Tue, 23 Dec 2025 13:27:18 +0000 (14:27 +0100)]
librbd: introduce RBD_LOCK_MODE_EXCLUSIVE_TRANSIENT

The existing StandardPolicy that exposed as RBD_LOCK_MODE_EXCLUSIVE
argument to rbd_lock_acquire() disables automatic exclusive lock
transitions with "permanent" semantics: any request to release the lock
causes the peer to error out immediately.  Such a lock owner can
perform maintenance operations that are proxied from other peers, but
any write-like I/O issued by other peers will fail with EROFS.

This isn't suitable for use cases where one of the peers wants to
manage exclusive lock manually (i.e. rbd_lock_acquire() is used) but
the lock is acquired only for very short periods of time.  The rest of
the time the lock is expected to be held by other peers that stay in
the default "auto" mode (AutomaticPolicy) and run as usual, completely
unconcerned with each other or the manual-mode peer.  However, these
peers get acutely aware of the manual-mode peer because when it grabs
the lock with RBD_LOCK_MODE_EXCLUSIVE their I/O gets disrupted: higher
layers translate EROFS into generic EIO, filesystems shut down, etc.

Add a new TransientPolicy exposed as RBD_LOCK_MODE_EXCLUSIVE_TRANSIENT
to allow disabling automatic exclusive lock transitions with semantics
that would cause the other peers to block waiting for the lock to be
released by the manual-mode peer.  This is intended to be a low-level
interface -- no attempt to safeguard against potential misuse causing
e.g. indefinite blocking is made.

It's possible to switch between RBD_LOCK_MODE_EXCLUSIVE and
RBD_LOCK_MODE_EXCLUSIVE_TRANSIENT modes of operation both while the
lock is held and after it's released.

Fixes: https://tracker.ceph.com/issues/73824
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 8740544c51781211b82ac45d4bc93b9eb9623e76)

3 months agolibrbd: prepare lock_acquire() for changing between policies
Ilya Dryomov [Mon, 19 Jan 2026 16:43:41 +0000 (17:43 +0100)]
librbd: prepare lock_acquire() for changing between policies

In preparation for adding a new TransientPolicy, get rid of the check
implemented in terms of exclusive_lock::Policy::may_auto_request_lock()
that essentially makes it so that exclusive lock policy on a given
image handle can be changed from the default AutomaticPolicy only once.
In order to effect another change a new image handle would have been
needed which is pretty suboptimal.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 1f9396ff8208accdf334c088745d2734225b34c1)

3 months agolibrbd: fix RequestLockPayload log message in ImageWatcher
Ilya Dryomov [Mon, 22 Dec 2025 18:07:27 +0000 (19:07 +0100)]
librbd: fix RequestLockPayload log message in ImageWatcher

exclusive_lock::Policy::lock_requested() isn't guaranteed to queue
the release of exclusive lock (and in fact only one of the two existing
implementations does that).  Instead of talking about the lock, log the
response to the notification.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit ff89abf5ddcca91c34cfd46d288d41fe93ec38b0)

3 months agolibrbd: amend error message in lock_acquire()
Ilya Dryomov [Mon, 22 Dec 2025 16:22:53 +0000 (17:22 +0100)]
librbd: amend error message in lock_acquire()

... since it went stale with commit 2914eef50d69 ("rbd: Changed
exclusive-lock implementation to use the new managed-lock").  In the
context of exclusive lock, requesting the lock refers to a specific
action which may or may not be performed as part of acquiring the lock
and lock_acquire() doesn't get visibility into that.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 9159a2dd032bf47a030260660ff64b5be2d72648)

3 months agoqa/valgrind.supp: make gcm_cipher_internal suppression more resilient 67281/head
Ilya Dryomov [Tue, 11 Nov 2025 20:39:58 +0000 (21:39 +0100)]
qa/valgrind.supp: make gcm_cipher_internal suppression more resilient

gcm_cipher_internal() and ossl_gcm_stream_final() make it to the stack
trace only on CentOS Stream 9.  On Ubuntu 22.04 and Rocky 10, it looks
as follows:

Thread 4 msgr-worker-1:
Conditional jump or move depends on uninitialised value(s)
   at 0x70A36D4: ??? (in /usr/lib64/libcrypto.so.3.2.2)
   by 0x70A39A1: ??? (in /usr/lib64/libcrypto.so.3.2.2)
   by 0x6F8A09C: EVP_DecryptFinal_ex (in /usr/lib64/libcrypto.so.3.2.2)
   by 0xB498C1F: ceph::crypto::onwire::AES128GCM_OnWireRxHandler::authenticated_decrypt_update_final(ceph::buffer::v15_2_0::list&) (crypto_onwire.cc:271)
   by 0xB4992D7: ceph::msgr::v2::FrameAssembler::disassemble_preamble(ceph::buffer::v15_2_0::list&) (frames_v2.cc:281)
   by 0xB482D98: ProtocolV2::handle_read_frame_preamble_main(std::unique_ptr<ceph::buffer::v15_2_0::ptr_node, ceph::buffer::v15_2_0::ptr_node::disposer>&&, int) (ProtocolV2.cc:1149)
   by 0xB475318: ProtocolV2::run_continuation(Ct<ProtocolV2>&) (ProtocolV2.cc:54)
   by 0xB457012: AsyncConnection::process() (AsyncConnection.cc:495)
   by 0xB49E61A: EventCenter::process_events(unsigned int, std::chrono::duration<unsigned long, std::ratio<1l, 1000000000l> >*) (Event.cc:492)
   by 0xB49EA9D: UnknownInlinedFun (Stack.cc:50)
   by 0xB49EA9D: UnknownInlinedFun (invoke.h:61)
   by 0xB49EA9D: UnknownInlinedFun (invoke.h:111)
   by 0xB49EA9D: std::_Function_handler<void (), NetworkStack::add_thread(Worker*)::{lambda()#1}>::_M_invoke(std::_Any_data const&) (std_function.h:290)
   by 0xBB11063: ??? (in /usr/lib64/libstdc++.so.6.0.33)
   by 0x4F17119: start_thread (in /usr/lib64/libc.so.6)

The proposal to amend the existing suppression so that it's tied to the
specific callsite rather than libcrypto internals [1] received a thumbs
up from Radoslaw.

[1] https://github.com/ceph/ceph/pull/61689#issuecomment-2650179891

Fixes: https://tracker.ceph.com/issues/74672
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit d85265eab4f9344f0d08330f737ce9d7be32d716)

3 months agoqa/workunits/rbd: use the same qemu-iotests version throughout 67282/head
Ilya Dryomov [Thu, 29 Jan 2026 20:25:55 +0000 (21:25 +0100)]
qa/workunits/rbd: use the same qemu-iotests version throughout

"platform:el10" could be appended to the grep pattern for v2.11.0 but
we no longer test on any distro needing v2.3.0 or v2.2.0-rc3.

Fixes: https://tracker.ceph.com/issues/74671
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 825ec0d9bb21140b8732257bbe45503179790ef7)

3 months agoqa/tasks/qemu: adjust NFS service name for Rocky 10 67283/head
Ilya Dryomov [Tue, 11 Nov 2025 17:31:56 +0000 (18:31 +0100)]
qa/tasks/qemu: adjust NFS service name for Rocky 10

Fixes: https://tracker.ceph.com/issues/74670
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit e6b08ae02b5fffdd95c9627dff91d756b0329b6e)

3 months agoqa/tasks/qemu: install genisoimage package
Ilya Dryomov [Tue, 11 Nov 2025 15:33:16 +0000 (16:33 +0100)]
qa/tasks/qemu: install genisoimage package

genisoimage is expected to be included in our base images but currently
isn't on Rocky 10.  Since it's quite a niche thing, let's install the
package explicitly.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit dffdcb6b02ff792d54be6c577eb3b5b03722f166)

3 months agoMerge PR #66452 into tentacle
Patrick Donnelly [Thu, 12 Feb 2026 13:57:40 +0000 (08:57 -0500)]
Merge PR #66452 into tentacle

* refs/pull/66452/head:
doc/cephfs: fix doc for config option pause_cloning
doc/cephfs: fix doc for pause_purging config option

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
Reviewed-by: Anthony D Atri <anthony.datri@gmail.com>
3 months agoMerge PR #67002 into tentacle
Patrick Donnelly [Thu, 12 Feb 2026 13:36:52 +0000 (08:36 -0500)]
Merge PR #67002 into tentacle

* refs/pull/67002/head:
doc: fetch releases from main branch

Reviewed-by: Anthony D Atri <anthony.datri@gmail.com>
3 months agoMerge PR #66877 into tentacle
Patrick Donnelly [Thu, 12 Feb 2026 04:13:03 +0000 (23:13 -0500)]
Merge PR #66877 into tentacle

* refs/pull/66877/head:
pybind/mgr/dashboard/tox.ini: use up-to-date rstcheck invocations
pybind/mgr/dashboard/requirements-lint.txt: re-pin rstcheck

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
Reviewed-by: Kefu Chai <tchaikov@gmail.com>
3 months agoMerge PR #66861 into tentacle
Patrick Donnelly [Thu, 12 Feb 2026 01:48:34 +0000 (20:48 -0500)]
Merge PR #66861 into tentacle

* refs/pull/66861/head:
systemd services: fix installing ceph-volume@

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
3 months agoMerge PR #66991 into tentacle
Patrick Donnelly [Thu, 12 Feb 2026 01:10:55 +0000 (20:10 -0500)]
Merge PR #66991 into tentacle

* refs/pull/66991/head:
mgr/volumes: remove unnecessary log error lines from earmark handling

Reviewed-by: Anoop C S <anoopcs@cryptolab.net>
Reviewed-by: John Mulligan <jmulligan@redhat.com>
3 months agodoc: fetch releases from main branch 67002/head
Patrick Donnelly [Thu, 15 Jan 2026 16:35:34 +0000 (11:35 -0500)]
doc: fetch releases from main branch

So we do not need to backport actual EOL dates.

Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
(cherry picked from commit 4e57701c59d43d8b2e51b99664ba529cbf9445a8)

3 months agoMerge PR #64687 into tentacle
Patrick Donnelly [Thu, 12 Feb 2026 00:57:01 +0000 (19:57 -0500)]
Merge PR #64687 into tentacle

* refs/pull/64687/head:
mon/MgrMonitor: add a space before "is already disabled"

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
3 months agoMerge PR #65761 into tentacle
Patrick Donnelly [Thu, 12 Feb 2026 00:54:33 +0000 (19:54 -0500)]
Merge PR #65761 into tentacle

* refs/pull/65761/head:
.github: pin GH Actions to SHA-1 commit

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
3 months agoMerge PR #67296 into tentacle
Patrick Donnelly [Wed, 11 Feb 2026 19:37:08 +0000 (14:37 -0500)]
Merge PR #67296 into tentacle

* refs/pull/67296/head:
doc: Remove sphinxcontrib-seqdiag Python package from RTD builds

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
Reviewed-by: Anthony D Atri <anthony.datri@gmail.com>
3 months agoMerge pull request #66871 from pdvian/wip-73963-tentacle
Laura Flores [Wed, 11 Feb 2026 19:01:48 +0000 (13:01 -0600)]
Merge pull request #66871 from pdvian/wip-73963-tentacle

tentacle: pybind/mgr/pg_autoscaler: Introduce dynamic threshold to improve scal…