]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/log
ceph.git
12 days agomgr/dashboard: Add auto-fetch listeners option in subsystem page 69413/head
pujashahu [Thu, 11 Jun 2026 10:29:51 +0000 (15:59 +0530)]
mgr/dashboard: Add auto-fetch listeners option in subsystem page

Fixes: https://tracker.ceph.com/issues/77083
Signed-off-by: pujaoshahu <pshahu@redhat.com>
12 days agoMerge pull request #69426 from rhcs-dashboard/fix-77361
Afreen Misbah [Fri, 26 Jun 2026 17:07:32 +0000 (22:37 +0530)]
Merge pull request #69426 from rhcs-dashboard/fix-77361

mgr/dashboard: NVMe-oF – Updated subtitle text on the Create Gateway page

Reviewed-by: Afreen Misbah <afreen@ibm.com>
Reviewed-by: Nizamudeen A <nia@redhat.com>
12 days agoMerge pull request #69768 from MaxKellermann/rgw__missing_includes
Casey Bodley [Fri, 26 Jun 2026 16:58:06 +0000 (12:58 -0400)]
Merge pull request #69768 from MaxKellermann/rgw__missing_includes

rgw: add missing include

Reviewed-by: Casey Bodley <cbodley@redhat.com>
12 days agoMerge pull request #69769 from idryomov/wip-ptl-tool-multiple-source-prs
Ilya Dryomov [Fri, 26 Jun 2026 14:42:07 +0000 (16:42 +0200)]
Merge pull request #69769 from idryomov/wip-ptl-tool-multiple-source-prs

script/ptl-tool: fix redmine_linkage_correct case in _get_active_issues()

Reviewed-by: John Mulligan <jmulligan@redhat.com>
12 days agoMerge pull request #69660 from tchaikov/wip-cmake-boost-with-asan
Kefu Chai [Fri, 26 Jun 2026 14:00:46 +0000 (22:00 +0800)]
Merge pull request #69660 from tchaikov/wip-cmake-boost-with-asan

cmake/boost: build libboost_context with BOOST_USE_ASAN

Reviewed-by: Casey Bodley <cbodley@redhat.com>
12 days agoMerge pull request #69103 from Sodani/shsodani_ceph_rgw_new_module
John Mulligan [Fri, 26 Jun 2026 13:40:04 +0000 (09:40 -0400)]
Merge pull request #69103 from Sodani/shsodani_ceph_rgw_new_module

mgr/smb: add RGW-backed SMB share support

Reviewed-by: Avan Thakkar <athakkar@redhat.com>
Reviewed-by: John Mulligan <jmulligan@redhat.com>
13 days agoMerge pull request #69598 from aclamk/aclamk-doc-fcm-plugin
Jaya Prakash [Fri, 26 Jun 2026 11:48:40 +0000 (17:18 +0530)]
Merge pull request #69598 from aclamk/aclamk-doc-fcm-plugin

doc/rados/bluestore: ExtBlkDev, FCM plugin

Reviewed-by: Anthony D'Atri <anthonyeleven@users.noreply.github.com>
Reviewed-by: Jaya Prakash <jayaprakash@ibm.com>
13 days agoMerge pull request #69605 from sunyuechi/wip-readable-sliding-window
Kefu Chai [Fri, 26 Jun 2026 11:26:10 +0000 (19:26 +0800)]
Merge pull request #69605 from sunyuechi/wip-readable-sliding-window

test/encoding: run readable.sh with a sliding window of jobs

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
13 days agoscript/ptl-tool: fix redmine_linkage_correct case in _get_active_issues() 69769/head
Ilya Dryomov [Fri, 26 Jun 2026 10:56:27 +0000 (12:56 +0200)]
script/ptl-tool: fix redmine_linkage_correct case in _get_active_issues()

If redmine_linkage_correct is True, _get_active_issues() is supposed to
ignore issues with "Multiple Source PRs" category.  However that doesn't
happen because the category string is compared against (category, text)
pair.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
13 days agorgw: add missing include 69768/head
Max Kellermann [Thu, 25 Jun 2026 19:34:27 +0000 (21:34 +0200)]
rgw: add missing include

Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
13 days agomgr/dashboard: NVMe-oF – Updated subtitle text on the Create Gateway page 69426/head
pujashahu [Thu, 11 Jun 2026 18:49:40 +0000 (00:19 +0530)]
mgr/dashboard: NVMe-oF – Updated subtitle text on the Create Gateway page

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

Signed-off-by: pujaoshahu <pshahu@redhat.com>
13 days agoMerge pull request #69008 from MaxKellermann/tools__missing_includes
Ilya Dryomov [Fri, 26 Jun 2026 08:04:15 +0000 (10:04 +0200)]
Merge pull request #69008 from MaxKellermann/tools__missing_includes

tools: add missing includes

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
13 days agoMerge pull request #69736 from gbregman/main
Gil Bregman [Fri, 26 Jun 2026 07:18:04 +0000 (10:18 +0300)]
Merge pull request #69736 from gbregman/main

nvmeof: Change the NVMEOF image version to 1.9

13 days agoMerge pull request #69510 from tchaikov/wip-cryptotools-sans-pyopenssl
Kefu Chai [Fri, 26 Jun 2026 06:29:38 +0000 (14:29 +0800)]
Merge pull request #69510 from tchaikov/wip-cryptotools-sans-pyopenssl

python-common/cryptotools: reimplement on top of cryptography

Reviewed-by: John Mulligan <jmulligan@redhat.com>
13 days agotools: add missing includes 69008/head
Max Kellermann [Tue, 14 Apr 2026 16:13:59 +0000 (18:13 +0200)]
tools: add missing includes

Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
13 days agoMerge pull request #69620 from tchaikov/wip-rbd-fix-uaf
Ilya Dryomov [Thu, 25 Jun 2026 18:08:52 +0000 (20:08 +0200)]
Merge pull request #69620 from tchaikov/wip-rbd-fix-uaf

librbd: fix use-after-free releasing object map locks in deep copy

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
13 days agoMerge pull request #69140 from MaxKellermann/CompatSet_optimizations
Yuri Weinstein [Thu, 25 Jun 2026 17:24:00 +0000 (10:24 -0700)]
Merge pull request #69140 from MaxKellermann/CompatSet_optimizations

CompatSet optimizations

Reviewed-by: Kefu Chai <tchaikov@gmail.com>
13 days agoMerge pull request #68738 from aainscow/dout-hacks
Yuri Weinstein [Thu, 25 Jun 2026 17:23:20 +0000 (10:23 -0700)]
Merge pull request #68738 from aainscow/dout-hacks

test/osd: Improve test logging with OSD identification

Reviewed-by: Bill Scales <bill_scales@uk.ibm.com>
13 days agomgr/smb: add RGW credentials resource and store in priv_stor 69103/head
Avan Thakkar [Thu, 11 Jun 2026 09:55:33 +0000 (15:25 +0530)]
mgr/smb: add RGW credentials resource and store in priv_stor

Refactored RGW credential management to use dedicated RGWCredential
resources instead of embedding credentials directly in Share resources.
This will help to reuse the same credential across multiple shares using
same user.

RGW credentials must not appear in the public RADOS store, which any
client with pool caps can read. Instead, write a config:merge stub
containing only the credential fields to the private mon config-key
store, and pass its URI to the container alongside the primary config
URI via extra_config_uris.

- Public config: ceph_rgw:access_key / secret_access_key are empty strings
- Private stub: stored under smb/config/<cluster_id>/config.smb.rgw,
  contains only the real credential values via config:merge
- extra_config_uris: new Config field carrying supplementary URIs
  appended to SAMBACC_CONFIG after the primary config_uri

Signed-off-by: Avan Thakkar <athakkar@redhat.com>
Signed-off-by: Shweta Sodani <ssodani@redhat.com>
13 days agodoc/mgr/smb: document new options for smb share create rgw
Shweta Sodani [Wed, 27 May 2026 08:02:27 +0000 (13:32 +0530)]
doc/mgr/smb: document new options for smb share create rgw

Signed-off-by: Shweta Sodani <ssodani@redhat.com>
13 days agomgr/smb: Add test coverage for RGW share functionality
Shweta Sodani [Tue, 26 May 2026 14:27:42 +0000 (19:57 +0530)]
mgr/smb: Add test coverage for RGW share functionality

Add test cases for RGW-backed SMB shares

Key changes:
- RGWStorage creation, validation, and serialization
- Edge cases: None values, mutual exclusion

Signed-off-by: Shweta Sodani <ssodani@redhat.com>
Signed-off-by: Avan Thakkar <athakkar@redhat.com>
13 days agomgr/smb: Update handler to process RGW shares, added validation and error handling
Shweta Sodani [Mon, 20 Apr 2026 09:17:35 +0000 (14:47 +0530)]
mgr/smb: Update handler to process RGW shares, added validation and error handling

- Add _generate_rgw_share() function for RGW share configuration
- Skip CephFS authorization for RGW shares in cluster assembly
- Configure Samba VFS with RGW-specific parameters:
  - rgw_bucket, rgw_user_id, rgw_access_key, rgw_secret_key
- Validate bucket accessibility using radosgw-admin
- Ensure proper error handling in share creation flow

This enables the handler to generate proper Samba configuration for
RGW-backed shares along with validation and error handling.

Signed-off-by: Shweta Sodani <ssodani@redhat.com>
13 days agomgr/smb: Add CLI command for RGW share creation
Shweta Sodani [Mon, 20 Apr 2026 09:14:01 +0000 (14:44 +0530)]
mgr/smb: Add CLI command for RGW share creation

- Add 'smb share create rgw' CLI command
- Import rgw module for credential management
- Fetch RGW credentials using radosgw-admin
- Create Share resource with RGWStorage backend
- Handle errors from credential fetching

This enables users to create SMB shares backed by RGW buckets,
similar to 'nfs export create rgw' functionality.

Example usage:
  ceph smb share create rgw mysmb share1 mybucket

Signed-off-by: Shweta Sodani <ssodani@redhat.com>
13 days agomgr/smb: Add RGW credential management utilities
Shweta Sodani [Mon, 20 Apr 2026 09:07:54 +0000 (14:37 +0530)]
mgr/smb: Add RGW credential management utilities

- Add rgw.py module for RGW integration
- Implement fetch_rgw_credentials() to get user credentials from radosgw-admin
- Implement validate_rgw_bucket() to check bucket existence
- Handle bucket owner lookup when user_id not provided
- Add proper error handling and logging

This provides the foundation for RGW authentication in SMB shares,
similar to the NFS RGW export implementation.

Signed-off-by: Shweta Sodani <ssodani@redhat.com>
13 days agomgr/smb: Add RGWStorage resource class and update Share to support RGW
Shweta Sodani [Mon, 20 Apr 2026 09:03:15 +0000 (14:33 +0530)]
mgr/smb: Add RGWStorage resource class and update Share to support RGW

- Add RGWStorage component class for RGW bucket storage backend
- Include fields: bucket, user_id, access_key_id, secret_access_key
- Add password conversion support for credentials
- Update Share class to accept optional rgw field and added convert
  defination
- Update Share validation to support both cephfs and rgw backends
- Ensure exactly one storage backend (cephfs or rgw) is specified

This is the first step in implementing RGW storage support for SMB
shares, similar to the existing NFS RGW export functionality.

Signed-off-by: Shweta Sodani <ssodani@redhat.com>
13 days agoMerge pull request #57167 from mkogan1/wip-rgw-thread-pool-size
Adam Emerson [Thu, 25 Jun 2026 16:08:16 +0000 (12:08 -0400)]
Merge pull request #57167 from mkogan1/wip-rgw-thread-pool-size

rgw: reduce default thread pool size

Reviewed-by: Mark Nelson <mark.a.nelson@gmail.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
13 days agoMerge pull request #69314 from smanjara/wip-76725-test
Casey Bodley [Thu, 25 Jun 2026 14:51:28 +0000 (10:51 -0400)]
Merge pull request #69314 from smanjara/wip-76725-test

common/async: wake async_cond waiters on their associated executor

Reviewed-by: Mark Kogan <mkogan@redhat.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
13 days agonvmeof: Change the NVMEOF image version to 1.9 69736/head
Gil Bregman [Thu, 25 Jun 2026 14:33:21 +0000 (17:33 +0300)]
nvmeof: Change the NVMEOF image version to 1.9
Fixes: https://tracker.ceph.com/issues/77709
Signed-off-by: Gil Bregman <gbregman@il.ibm.com>
13 days agoMerge pull request #68675 from smanjara/wip-archive-bucket-timestamp
J. Eric Ivancich [Thu, 25 Jun 2026 14:27:29 +0000 (10:27 -0400)]
Merge pull request #68675 from smanjara/wip-archive-bucket-timestamp

rgw/multisite: record the bucket creation time at archive zone

Reviewed-by: Matt Benjamin <mbenjamin@redhat.com>
13 days agoMerge pull request #69084 from linuxbox2/wip-76790
J. Eric Ivancich [Thu, 25 Jun 2026 14:09:27 +0000 (10:09 -0400)]
Merge pull request #69084 from linuxbox2/wip-76790

rgwlc: fix a likely null dereference in LCObjsLister::get_obj()

Reviewed-by: Casey Bodley <cbodley@redhat.com>
2 weeks agoMerge pull request #69449 from sunyuechi/wip-protobuf-config-mode
Kefu Chai [Thu, 25 Jun 2026 11:05:47 +0000 (19:05 +0800)]
Merge pull request #69449 from sunyuechi/wip-protobuf-config-mode

cmake: find Protobuf via cmake config before module mode

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agoMerge pull request #68500 from abitdrag/wip-non-prim-demote-img-snap-removal
Ilya Dryomov [Thu, 25 Jun 2026 10:33:51 +0000 (12:33 +0200)]
Merge pull request #68500 from abitdrag/wip-non-prim-demote-img-snap-removal

rbd-mirror: Remove old non-primary demoted image snapshots on the local cluster

Reviewed-by: VinayBhaskar-V <vvarada@redhat.com>
Reviewed-by: Ramana Raja <rraja@redhat.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2 weeks agoMerge pull request #69658 from sunyuechi/test_encoding
Kefu Chai [Thu, 25 Jun 2026 08:46:19 +0000 (16:46 +0800)]
Merge pull request #69658 from sunyuechi/test_encoding

test/encoding: disable LeakSanitizer in readable.sh and check-generated.sh

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agoMerge pull request #69674 from sunyuechi/wip-bufferlist-asan
Kefu Chai [Thu, 25 Jun 2026 08:11:11 +0000 (16:11 +0800)]
Merge pull request #69674 from sunyuechi/wip-bufferlist-asan

test/bufferlist: fix BenchDeref overrun and shrink benchmarks under ASan

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agoMerge pull request #69279 from xxhdx1985126/wip-seastore-pessimistic-cc-mutation...
Xuehan Xu [Thu, 25 Jun 2026 07:31:28 +0000 (15:31 +0800)]
Merge pull request #69279 from xxhdx1985126/wip-seastore-pessimistic-cc-mutation-pending-crc-fix

crimson/os/seastore/cached_extent: renew mutation_pending extents' last_committed_crc when committing rewrite transactions

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
Reviewed-by: Matan Breizman <mbreizma@redhat.com>
2 weeks agoMerge pull request #69431 from xxhdx1985126/wip-seastore-fix-update_copied_lba_keys
Xuehan Xu [Thu, 25 Jun 2026 07:30:30 +0000 (15:30 +0800)]
Merge pull request #69431 from xxhdx1985126/wip-seastore-fix-update_copied_lba_keys

crimson/os/seastore/transaction: clear copied_lba_keys on reset

Reviewed-by: Ronen Friedman <rfriedma@redhat.com>
2 weeks agoMerge pull request #69447 from xxhdx1985126/wip-seastore-update-sync-fix
Xuehan Xu [Thu, 25 Jun 2026 07:29:57 +0000 (15:29 +0800)]
Merge pull request #69447 from xxhdx1985126/wip-seastore-update-sync-fix

crimson/os/seastore/lba: don't update the lba mapping if its child is an initial pending one.

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
Reviewed-by: Ronen Friedman <rfriedma@redhat.com>
2 weeks agoMerge pull request #69691 from guits/fix-staggered-upgrade
Guillaume Abrioux [Thu, 25 Jun 2026 06:37:46 +0000 (08:37 +0200)]
Merge pull request #69691 from guits/fix-staggered-upgrade

cephadm: fix staggered upgrade

2 weeks agoMerge pull request #69687 from tchaikov/wip-cpatch-esc-seq
Kefu Chai [Thu, 25 Jun 2026 06:37:33 +0000 (14:37 +0800)]
Merge pull request #69687 from tchaikov/wip-cpatch-esc-seq

script: fix invalid escape sequences

Reviewed-by: John Mulligan <jmulligan@redhat.com>
2 weeks agoMerge pull request #69451 from ronen-fr/wip-rf-getxa
Ronen Friedman [Thu, 25 Jun 2026 05:00:41 +0000 (08:00 +0300)]
Merge pull request #69451 from ronen-fr/wip-rf-getxa

crimson/osd: return ENOENT from EC getxattr for non-existent objects

Reviewed-by: Jose J Palacios-Perez <perezjos@uk.ibm.com>
2 weeks agorbd-mirror: Remove old non-primary demoted image snapshots on the local cluster 68500/head
Miki Patel [Tue, 21 Apr 2026 11:53:29 +0000 (17:23 +0530)]
rbd-mirror: Remove old non-primary demoted image snapshots on the local cluster

When an image is demoted on primary cluster and later promoted again,
a non-primary demoted image snapshot is created on the peer (secondary)
cluster. Each such promote/demote cycle on same cluster results in an
additional non-primary demoted snapshot being created on peer.
As a result, repeated promote/demote cycles on the same cluster can
lead to accumulation of stale non-primary demoted snapshots on the
secondary cluster. These snapshots are not removed immediately because
cleanup is only triggered when peer (secondary) is promoted and then
demoted.

The proposed changes ensures that such snapshots are proactively identified
and removed, preventing unbounded buildup. Also added test coverage to
verify cleanup behavior.

Fixes: https://tracker.ceph.com/issues/76155
Signed-off-by: Miki Patel <miki.patel132@gmail.com>
2 weeks agodoc/rados/bluestore: ExtBlkDev, FCM plugin 69598/head
Adam Kupczyk [Fri, 19 Jun 2026 13:02:16 +0000 (15:02 +0200)]
doc/rados/bluestore: ExtBlkDev, FCM plugin

Add new page about 2 topics:
- EXTBLKDEV
- FCM plugin

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
2 weeks agocrimson/osd: return ENOENT from EC getxattr for non-existent objects 69451/head
Ronen Friedman [Thu, 11 Jun 2026 12:32:34 +0000 (12:32 +0000)]
crimson/osd: return ENOENT from EC getxattr for non-existent objects

PGBackend::getxattr() for EC pools reads from the attr_cache and
returns ENODATA when an attr is not found, without distinguishing
between "object exists but attr not set" and "object doesn't exist".
This causes cls methods like cls_refcount_get() to proceed as if the
object exists, enter the EC RMW pipeline, and hang.

Add an os.exists check in the EC path so non-existent objects return
ENOENT, matching the behavior of the replicated path which goes to
the object store and gets ENOENT directly.

Fixes: https://tracker.ceph.com/issues/77335
Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
2 weeks agoMerge pull request #69462 from sunyuechi/wip-sy-run-make-sccache-stats
Zack Cerza [Wed, 24 Jun 2026 15:46:19 +0000 (09:46 -0600)]
Merge pull request #69462 from sunyuechi/wip-sy-run-make-sccache-stats

build/script: print sccache stats alongside ccache

2 weeks agoMerge pull request #69574 from rhcs-dashboard/dash-binding
Afreen Misbah [Wed, 24 Jun 2026 15:43:56 +0000 (21:13 +0530)]
Merge pull request #69574 from rhcs-dashboard/dash-binding

mgr/dashboard: fix bind address regression from CherryPy isolation

Reviewed-by: Nizamudeen A <nia@redhat.com>
2 weeks agoMerge pull request #69390 from rhcs-dashboard/fix-feedback-module
Afreen Misbah [Wed, 24 Jun 2026 15:34:45 +0000 (21:04 +0530)]
Merge pull request #69390 from rhcs-dashboard/fix-feedback-module

mgr/dashoard : Fix feedback module enablement

Reviewed-by: Naman Munet <nmunet@redhat.com>
2 weeks agoMerge pull request #69298 from rhcs-dashboard/fix-77129-main
Aashish Sharma [Wed, 24 Jun 2026 15:25:47 +0000 (20:55 +0530)]
Merge pull request #69298 from rhcs-dashboard/fix-77129-main

mgr/dashboard: Fix username validation for special characters by URL-encoding user lookup requests

Reviewed-by: Afreen Misbah <afreen@ibm.com>
2 weeks agoMerge pull request #69497 from kamoltat/wip-ksirivad-DFBUGS-7044
Kamoltat (Junior) Sirivadhna [Wed, 24 Jun 2026 15:02:15 +0000 (11:02 -0400)]
Merge pull request #69497 from kamoltat/wip-ksirivad-DFBUGS-7044

mon: fix ConnectionTracker::notify_rank_removed
Reviewed-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agoMerge pull request #65724 from adamemerson/wip-include-s3tests
Casey Bodley [Wed, 24 Jun 2026 14:12:54 +0000 (10:12 -0400)]
Merge pull request #65724 from adamemerson/wip-include-s3tests

Include s3-tests in ceph repo

Reviewed-by: Casey Bodley <cbodley@redhat.com>
2 weeks agoMerge pull request #69438 from kginonredhat/issue-77374-orchestrator_cli-test_mds_rm...
Redouane Kachach [Wed, 24 Jun 2026 13:43:58 +0000 (15:43 +0200)]
Merge pull request #69438 from kginonredhat/issue-77374-orchestrator_cli-test_mds_rm-fails-missingforce-_delete_data-kwarg

mgr/test_orchestrator: accept force_delete_data in remove_daemons

Reviewed-by: Redouane Kachach <rkachach@ibm.com>
2 weeks agoMerge pull request #69477 from guits/node-proxy-atollon
Guillaume Abrioux [Wed, 24 Jun 2026 12:58:59 +0000 (14:58 +0200)]
Merge pull request #69477 from guits/node-proxy-atollon

node-proxy: atollon hardware monitoring (FCM stats, temperatures, fan speed..)

2 weeks agotest/encoding: run readable.sh with a sliding window of jobs 69605/head
Sun Yuechi [Sun, 14 Jun 2026 12:43:50 +0000 (20:43 +0800)]
test/encoding: run readable.sh with a sliding window of jobs

The old scheduler spawned nproc jobs, then waited for the whole batch to
finish before starting the next, so cores that finished early sat idle
waiting on the slowest type in the batch. Keep a sliding window instead:
once the window is full, reap a single finished job before spawning the
next, which keeps the cores busy when per-type runtimes vary widely.

While here, pass vdir/arversion into test_object explicitly instead of
reading the loop globals, and give each job its own result file instead
of reusing slot-numbered files that the sliding window would otherwise
hand out to overlapping jobs.

Signed-off-by: Sun Yuechi <sunyuechi@iscas.ac.cn>
2 weeks agoMerge pull request #69569 from guits/fix-77486
Guillaume Abrioux [Wed, 24 Jun 2026 11:43:44 +0000 (13:43 +0200)]
Merge pull request #69569 from guits/fix-77486

ceph-volume: skip internal raid mirror LVs in inventory

2 weeks agorgw: reduce default thread pool size 57167/head
Mark Kogan [Tue, 30 Apr 2024 14:22:29 +0000 (17:22 +0300)]
rgw: reduce default thread pool size

Fixes: https://tracker.ceph.com/issues/65656
Signed-off-by: Mark Kogan <mkogan@redhat.com>
2 weeks agoMerge pull request #69526 from rzarzynski/wip-bug-77417
Radoslaw Zarzynski [Wed, 24 Jun 2026 07:41:29 +0000 (09:41 +0200)]
Merge pull request #69526 from rzarzynski/wip-bug-77417

tests/neorados: fix ceph_test_neorados_completions being not installed

Reviewed-by: Kamoltat Sirivadhna <ksirivad@redhat.com>
Reviewed-by: Adarsha Dinda <adarshadinda@Adarshas-MacBook-Pro.local>
Reviewed-by: Guillaume Abrioux <gabrioux@ibm.com>
2 weeks agomgr/dashboard : Fix feedback module enablement 69390/head
Abhishek Desai [Wed, 10 Jun 2026 10:43:16 +0000 (16:13 +0530)]
mgr/dashboard : Fix feedback module enablement
fixes : https://tracker.ceph.com/issues/75734
Signed-off-by: Abhishek Desai <abhishek.desai1@ibm.com>
2 weeks agoMerge pull request #69517 from sunyuechi/fix-ctest-resource-online-cpus
Kefu Chai [Wed, 24 Jun 2026 06:10:32 +0000 (14:10 +0800)]
Merge pull request #69517 from sunyuechi/fix-ctest-resource-online-cpus

run-make-check.sh: build ctest cpu resource pool from sched_getaffinity

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agoMerge pull request #69157 from sunyuechi/wip-mds-quiesce-test-evaluate-await-idle
Kefu Chai [Wed, 24 Jun 2026 06:01:41 +0000 (14:01 +0800)]
Merge pull request #69157 from sunyuechi/wip-mds-quiesce-test-evaluate-await-idle

test/mds: don't drop await_idle_v under NDEBUG

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agoMerge pull request #69162 from sunyuechi/wip-cephadm-tests-mock-find-program-lvcreate
Kefu Chai [Wed, 24 Jun 2026 06:01:00 +0000 (14:01 +0800)]
Merge pull request #69162 from sunyuechi/wip-cephadm-tests-mock-find-program-lvcreate

cephadm/tests: mock find_program in test_container_engine

Reviewed-by: John Mulligan <jmulligan@redhat.com>
2 weeks agocephadm: fix staggered upgrade 69691/head
Guillaume Abrioux [Tue, 23 Jun 2026 12:36:22 +0000 (14:36 +0200)]
cephadm: fix staggered upgrade

Do not mark an upgrade complete until daemons in the filtered scope
match the target image. Limited (--limit) upgrades still complete
when remaining_count reaches zero.

Fixes: https://tracker.ceph.com/issues/62959
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
2 weeks agotest/bufferlist: shrink benchmark iterations under ASan 69674/head
Sun Yuechi [Tue, 23 Jun 2026 06:16:38 +0000 (14:16 +0800)]
test/bufferlist: shrink benchmark iterations under ASan

The pure-timing *_bench/BenchAlloc loops repeat a stateless path millions of
times. Under ASan that adds no memory-error coverage but inflates the run from
minutes to hours, so cut the iteration counts when built with ASan.

Signed-off-by: Sun Yuechi <sunyuechi@iscas.ac.cn>
2 weeks agotest/bufferlist: avoid BenchDeref iterator overrun past end
Sun Yuechi [Tue, 23 Jun 2026 10:18:25 +0000 (18:18 +0800)]
test/bufferlist: avoid BenchDeref iterator overrun past end

Drive the deref loop by get_remaining() >= step instead of comparing to
end(), so a total length that is not a multiple of step no longer lets
`iter += step` run past the end and throw "End of buffer".

The original counts were always a multiple of step, so the overrun only
showed up once the following commit shrinks the rounds under ASan -- a
false alarm rather than a real regression, which is why it went unnoticed
until now.

Signed-off-by: Sun Yuechi <sunyuechi@iscas.ac.cn>
2 weeks agoMerge pull request #68827 from kotreshhr/mirror-metrics-new-mgr-interface
Kotresh HR [Wed, 24 Jun 2026 02:48:37 +0000 (08:18 +0530)]
Merge pull request #68827 from kotreshhr/mirror-metrics-new-mgr-interface

tools/cephfs_mirror: Mirror metrics via  new mgr interface

Reviewed-by: Venky Shankar <vshankar@redhat.com>
2 weeks agonode-proxy: expose FCM stats 69477/head
Guillaume Abrioux [Thu, 18 Jun 2026 14:54:38 +0000 (16:54 +0200)]
node-proxy: expose FCM stats

Collect FCM stats locally from NVMe drives (vendor log page 0xCA)
and expose them via node-proxy, the cephadm agent, and
`ceph orch hardware status --category fcm`.

Introduce a node backend that aggregates Redfish data with
node-local collectors, since FCM metrics are not available
from the BMC.

Fixes: https://tracker.ceph.com/issues/77521
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
2 weeks agonode-proxy: rename firmwares to firmware with legacy aliases
Guillaume Abrioux [Mon, 15 Jun 2026 13:18:48 +0000 (15:18 +0200)]
node-proxy: rename firmwares to firmware with legacy aliases

Let's use 'firmware' as the standard name in node-proxy, cephadm,
and orch hardware status.

We still accept 'firmwares' as a deprecated alias and read legacy
cache payloads transparently for backward compatibility.

Fixes: https://tracker.ceph.com/issues/77410
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
2 weeks agonode-proxy: override with atollon specific
Guillaume Abrioux [Wed, 10 Jun 2026 10:51:47 +0000 (12:51 +0200)]
node-proxy: override with atollon specific

This adds AtollonSystem for AMI/Atollon BMCs:
- memory Id mapping,
- storage description fixes,
- StorageControllers based drive enrichment

It also wires vendor selection through cephadm (hw_monitoring_vendor)
and show slot/firmware in hardware status storage output.

Fixes: https://tracker.ceph.com/issues/77408
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
2 weeks agonode-proxy: add temperatures and fan speed
Guillaume Abrioux [Wed, 10 Jun 2026 10:51:14 +0000 (12:51 +0200)]
node-proxy: add temperatures and fan speed

This adds the temperatures category and fan speed information.

Fixes: https://tracker.ceph.com/issues/77408
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
2 weeks agoMerge pull request #69664 from tchaikov/wip-asan-options
Kefu Chai [Wed, 24 Jun 2026 00:53:07 +0000 (08:53 +0800)]
Merge pull request #69664 from tchaikov/wip-asan-options

cmake,ceph,qa: update and populate ASan options to ceph cli

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
2 weeks agoscript: fix invalid escape sequences 69687/head
Kefu Chai [Tue, 23 Jun 2026 23:11:24 +0000 (07:11 +0800)]
script: fix invalid escape sequences

Python 3.12 warns on invalid escape sequences in non-raw strings:
```
  ceph-release-notes:45: SyntaxWarning: invalid escape sequence '\d'
  cpatch.py:465: SyntaxWarning: invalid escape sequence '\;'
```

In `cpatch.py`, use raw strings for the two Dockerfile RUN lines so
their find -exec ... \; keeps the literal backslash-semicolon.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agocmake/boost: build libboost_context with BOOST_USE_ASAN 69660/head
Kefu Chai [Tue, 23 Jun 2026 07:46:05 +0000 (15:46 +0800)]
cmake/boost: build libboost_context with BOOST_USE_ASAN

The ceph-api job failed under ASan: radosgw-admin aborted at startup with a
heap-buffer-overflow in boost.context's fiber resume().

  ==1155842==ERROR: AddressSanitizer: heap-buffer-overflow ... READ of size 8
    #0 boost::context::detail::fiber_activation_record::resume() fiber_ucontext.hpp:153
    #10 RGWSI_Notify::do_start(optional_yield, DoutPrefixProvider const*) svc_notify.cc:261
  0x... is located 8 bytes after 1048-byte region allocated by
    boost::context::detail::fiber_activation_record_initializer()

fiber_activation_record carries three extra members (fake_stack, stack_bottom,
stack_size) only when BOOST_USE_ASAN is defined.  Under WITH_ASAN we build
boost.context with context-impl=ucontext and give consumers BOOST_USE_ASAN and
BOOST_USE_UCONTEXT through Boost::context's INTERFACE_COMPILE_DEFINITIONS, but
we never pass BOOST_USE_ASAN to b2.  So libboost_context, which compiles
fiber_activation_record_initializer() and allocates the record, uses the
smaller no-ASan layout, while consumers that include the header (here rgw's
RGWSI_Notify::do_start via boost::asio::spawn) compile resume() with the larger
layout and read stack_bottom/stack_size past the allocation.

Pass define=BOOST_USE_ASAN to b2 so the library and its consumers agree on the
struct layout.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agoMerge pull request #69416 from NitzanMordhai/wip-nitzan-test-osd-recovery-prio-race
Laura Flores [Tue, 23 Jun 2026 21:27:28 +0000 (16:27 -0500)]
Merge pull request #69416 from NitzanMordhai/wip-nitzan-test-osd-recovery-prio-race

osd-recovery-prio: race condition fix in TEST_recovery_pool_priority

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Reviewed-by: Kamoltat Sirivadhna <ksirivad@redhat.com>
2 weeks agomgr/dashboard: fix bind address regression from CherryPy isolation 69574/head
Afreen Misbah [Tue, 23 Jun 2026 13:30:22 +0000 (19:00 +0530)]
mgr/dashboard: fix bind address regression from CherryPy isolation

The CherryPy isolation refactor (PR #67227) accidentally changed the
dashboard bind address from wildcard (*:8443) to mon_ip:8443. The
get_mgr_ip() replacement was originally only for URI generation, but
the refactor passed the mutated address to CherryPyMgr.mount() as the
actual socket bind address.

This breaks the management gateway when its VIP is not on the same
interface as mon_ip, as the dashboard becomes unreachable on other
interfaces.

Preserve the original wildcard address for binding and only use
get_mgr_ip() for the advertised URI. Add regression test to prevent
future confusion between bind_addr and server_addr.

Fixes: https://tracker.ceph.com/issues/77491
Signed-off-by: Afreen Misbah <afreen@ibm.com>
2 weeks agoMerge pull request #69361 from eameh-LF/wip-doc-77183
eameh-LF [Tue, 23 Jun 2026 16:25:57 +0000 (17:25 +0100)]
Merge pull request #69361 from eameh-LF/wip-doc-77183

doc/rados/configuration: Fix FileStore contradiction in journal-ref.rst

2 weeks agoMerge pull request #69362 from eameh-LF/wip-doc-77184
eameh-LF [Tue, 23 Jun 2026 16:25:34 +0000 (17:25 +0100)]
Merge pull request #69362 from eameh-LF/wip-doc-77184

doc/rados/operations: Strengthen cache-tiering deprecation notice

2 weeks agoMerge pull request #69669 from eameh-LF/wip-doc-77188
eameh-LF [Tue, 23 Jun 2026 16:13:32 +0000 (17:13 +0100)]
Merge pull request #69669 from eameh-LF/wip-doc-77188

doc/cephfs: clarify deprecated commands and remove obsolete upgrade path

2 weeks agoMerge pull request #69676 from tchaikov/wip-revert-asan
Ilya Dryomov [Tue, 23 Jun 2026 16:04:56 +0000 (18:04 +0200)]
Merge pull request #69676 from tchaikov/wip-revert-asan

Revert "script/run-make: enable ASan"

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2 weeks agoMerge pull request #69359 from eameh-LF/wip-doc-77192
eameh-LF [Tue, 23 Jun 2026 16:01:20 +0000 (17:01 +0100)]
Merge pull request #69359 from eameh-LF/wip-doc-77192

doc/install: Update EOL version floor references in index.rst

2 weeks agoMerge pull request #69336 from mheler/wip-rgw-sse-gcm-mpu-fix
mheler [Tue, 23 Jun 2026 15:52:28 +0000 (10:52 -0500)]
Merge pull request #69336 from mheler/wip-rgw-sse-gcm-mpu-fix

rgw: fix AES-256-GCM key/IV reuse on multipart part re-upload

2 weeks agoqa/lsan.supp: suppress CPython 3.12/3.13 interpreter leaks 69664/head
Kefu Chai [Tue, 23 Jun 2026 08:14:19 +0000 (16:14 +0800)]
qa/lsan.supp: suppress CPython 3.12/3.13 interpreter leaks

The python binaries on some CI images and dev boxes ship stripped, so the
allocator frames in an interpreter-shutdown leak come through unsymbolised
(/usr/bin/python3.13+0x...) and the function-name matches above cannot apply.
leak:python3.10 already handled this for 3.10, and a stale comment claimed 3.12
does not leak.

Add leak:python3.12 and leak:python3.13, mirroring the 3.10 entry, so the
interpreter globals are suppressed whatever CPython the build uses.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agoceph.in: load asan/lsan suppressions on WITH_ASAN builds
Kefu Chai [Tue, 23 Jun 2026 08:14:19 +0000 (16:14 +0800)]
ceph.in: load asan/lsan suppressions on WITH_ASAN builds

bin/ceph from a WITH_ASAN build aborts at exit, with LeakSanitizer reporting
CPython and Cython module-init allocations as leaks:

  ==2577940==ERROR: LeakSanitizer: detected memory leaks
  Direct leak ... in PyObject_Malloc (/usr/bin/python3.12+...)
    #4 __pyx_pymod_exec_rados rados_processed.c
  SUMMARY: AddressSanitizer: 32113 byte(s) leaked in 30 allocation(s).

These are interpreter globals that live for the process lifetime.  qa/lsan.supp
already suppresses them, but bin/ceph never loaded it: vstart.sh sets
LSAN_OPTIONS for the daemons it spawns, while a bin/ceph invoked separately
(ceph-api runs ./bin/ceph fsid once vstart.sh returns) inherits none and exits
non-zero.  It stayed hidden until radosgw-admin stopped crashing in vstart and
the run reached that call.

ceph.in already re-execs with the ASan runtime preloaded under WITH_ASAN.  Set
ASAN_OPTIONS and LSAN_OPTIONS first, from the CEPH_ASAN_OPTIONS and
CEPH_LSAN_OPTIONS that CMake also feeds add_ceph_test(), so the re-exec'd
interpreter starts with the suppressions loaded.  Use setdefault so a value
from the caller still wins.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agocmake: factor the ASan/LSan test options into cache variables
Kefu Chai [Tue, 23 Jun 2026 08:14:19 +0000 (16:14 +0800)]
cmake: factor the ASan/LSan test options into cache variables

add_ceph_test() spelled out the suppression-file paths and sanitizer flags
inline.  bin/ceph needs the same options, so lift them into CEPH_ASAN_OPTIONS
and CEPH_LSAN_OPTIONS and have add_ceph_test() consume those.  The environment
the tests run with is unchanged.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agoMerge pull request #69681 from djgalloway/fix-backport-workflow
David Galloway [Tue, 23 Jun 2026 14:33:48 +0000 (10:33 -0400)]
Merge pull request #69681 from djgalloway/fix-backport-workflow

.github/workflows/releng-audit.yaml: Check main for upstream commit

2 weeks ago.github/workflows/releng-audit.yaml: Check main for upstream commit 69681/head
David Galloway [Tue, 23 Jun 2026 14:11:34 +0000 (10:11 -0400)]
.github/workflows/releng-audit.yaml: Check main for upstream commit

This check was failing to correctly identify whether backported commits
had actually been cherry-picked because it was checking the target branch
instead of the main branch.  This change checks out the main branch
to look for the upstream cherry-picked commit.

Signed-off-by: David Galloway <david.galloway@ibm.com>
2 weeks agoMerge pull request #69632 from gbregman/main
Gil Bregman [Tue, 23 Jun 2026 13:24:36 +0000 (16:24 +0300)]
Merge pull request #69632 from gbregman/main

mgr/cephadm: Add degraded namespace flag to NVMEoF spec file

2 weeks agoMerge pull request #69175 from cbodley/wip-qa-rgw-multisite-gcm
mheler [Tue, 23 Jun 2026 13:17:59 +0000 (08:17 -0500)]
Merge pull request #69175 from cbodley/wip-qa-rgw-multisite-gcm

2 weeks agoMerge pull request #68482 from chrisphoffman/wip-73347
Venky Shankar [Tue, 23 Jun 2026 13:04:39 +0000 (18:34 +0530)]
Merge pull request #68482 from chrisphoffman/wip-73347

qa: Add direct_io test for fscrypt

Reviewed-by: Venky Shankar <vshankar@redhat.com>
2 weeks agoqa: Add mgr snapshot mirror status tests 68827/head
Kotresh HR [Tue, 23 Jun 2026 15:13:18 +0000 (20:43 +0530)]
qa: Add mgr snapshot mirror status tests

Add teuthology coverage for `ceph fs snapshot mirror status`:
parity with asok peer_status, default idle metrics, stale omap
handling, error paths, filter scopes, daemon restart, and cache TTL.

Reuse existing peer_dir_status and metrics assertion helpers.
Adjust stale test wait for InstanceWatcher timeout and set a
short cache TTL in the cache test. Pass peer_uuid via --peer_uuid=
in the test helper for peer-only scope queries.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agodoc/cephfs: Document fs snapshot mirror status mgr command
Kotresh HR [Sun, 21 Jun 2026 17:59:43 +0000 (23:29 +0530)]
doc/cephfs: Document fs snapshot mirror status mgr command

Describe the mirroring module command that reads persisted omap
metrics, including syntax, output layout, stale detection, caching,
and comparison with the admin socket peer status interface.

Document --peer_uuid as a named argument for peer-only and
directory/peer filtering.

Also update PendingReleaseNotes

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agomgr/mirroring: make snapshot mirror metrics cache optional
Kotresh HR [Sun, 21 Jun 2026 17:52:29 +0000 (23:22 +0530)]
mgr/mirroring: make snapshot mirror metrics cache optional

Add snapshot_mirror_metrics_cache_enabled (default true). When disabled,
metrics_status reads omap directly and skips complete and partial caches.
When enabled, behavior is unchanged.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agomgr/mirroring: make snapshot mirror metrics cache TTL configurable
Kotresh HR [Sun, 21 Jun 2026 17:50:28 +0000 (23:20 +0530)]
mgr/mirroring: make snapshot mirror metrics cache TTL configurable

Add snapshot_mirror_metrics_cache_ttl as a runtime mgr/mirroring module
option (default 15 seconds) instead of a hard-coded CACHE_TTL_SECS.
Both complete and partial lru_cache_timeout wrappers read the value
when caching omap metrics so operators can tune cache freshness without
code changes.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agomgr/mirroring: handle missing cephfs_mirror object in metrics status
Kotresh HR [Sun, 21 Jun 2026 17:48:15 +0000 (23:18 +0530)]
mgr/mirroring: handle missing cephfs_mirror object in metrics status

When snapshot mirroring is not enabled for a filesystem, the
cephfs_mirror RADOS object does not exist and "ceph fs snapshot mirror
status" fails reading sync stat omap. Map rados ENOENT to a clear
MirrorException so the CLI reports that snapshot mirroring must be
enabled instead of a generic omap read failure or an uncaught exception.

Also catch unexpected errors in metrics_status like other mirror CLI
handlers, so the mgr module does not crash on failure. Return
-errno.EINVAL from the generic error path instead of the exception
message as exit code.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agomgr/mirroring: Show default stats on newly added dir_root
Kotresh HR [Sun, 21 Jun 2026 17:35:30 +0000 (23:05 +0530)]
mgr/mirroring: Show default stats on newly added dir_root

When the directory is added for mirroring and the snapshot
is not taken yet, the peer_status show the following default
metrics.

{
  'state': 'idle',
  'snaps_synced': 0,
  'snaps_deleted': 0,
  'snaps_renamed': 0,
}

The mgr interface should also match that.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agomgr/mirroring: detect stale snapshot mirror sync metrics in omap
Kotresh HR [Sun, 21 Jun 2026 17:28:38 +0000 (22:58 +0530)]
mgr/mirroring: detect stale snapshot mirror sync metrics in omap

Persisted metrics in the cephfs_mirror omap can outlive the writing
daemon when cephfs-mirror stops or a directory is reshuffled to another
instance; mgr would keep reporting stale progress until the owning
daemon writes again.

Extend format_and_order_sync_stat_for_display() to compare persisted
_instance_id against InstanceWatcher live instances (via
FSPolicy.get_live_instance_ids()) and the directory's tracked instance
(via Policy.get_tracked_instance_id()). Mark metrics stale when the
persisted writer is no longer live (any state), or when it does not
match the tracked instance while persisted state is not "idle". Show
state "stale" with current_syncing_snap omitted.

Pass policy and live instance ids through load_sync_stat_metrics() and
fetch_sync_stat_metrics(), and into sync_stat_complete_cache and
sync_stat_partial_cache loaders. Cache hits serve already-formatted
(stale-marked) entries until TTL expiry without re-checking instance
liveness.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agomgr/mirroring: cache fs snapshot mirror status omap metrics
Kotresh HR [Tue, 16 Jun 2026 10:42:41 +0000 (16:12 +0530)]
mgr/mirroring: cache fs snapshot mirror status omap metrics

Add a short-lived in-memory cache for metrics returned by
"ceph fs snapshot mirror status", which reads persisted sync stats
from the cephfs_mirror object omap. Omap walks are relatively
expensive; caching reduces repeated reads when the CLI or multiple
clients poll at short intervals.

Two TTL-bucketed LRU caches (CACHE_TTL_SECS) are used instead of one
unified cache. The complete cache always holds every mirrored
directory and peer for a filesystem; the partial cache holds one
directory. A single directory-granularity cache cannot prove it has
all directories, so full-scan queries rely on the complete cache
contract.

Cache implementation (lru_cache_timeout decorator backed by
_TimedLRUCache, not functools.lru_cache):

- lru_cache has no TTL and no peek-on-hit API. Single-directory
  queries must read the complete cache without loading on miss;
  lru_cache.cache is also unavailable on Python 3.14+.

- complete (sync_stat_complete_cache): full omap prefix scan via
  load_sync_stat_metrics. Cache key: (time_token, filesystem).
  COMPLETE_CACHE_MAX limits filesystem entries per TTL window.

- partial (sync_stat_partial_cache): per-directory omap key load via
  fetch_sync_stat_metrics. Cache key: (time_token, filesystem,
  dir_path, peer_ids). PARTIAL_CACHE_MAX limits directory entries.

Bind cache_peek/cache_info/cache_clear via a CachedMethod descriptor
so TTL lookups receive (self, ...); otherwise single-dir status fails
with 'str' object has no attribute 'mgr'.

Serve logic (under the existing lock):

- status <fs> [--peer_uuid=<uuid>]: load complete cache on miss;
  filter by peer when requested.

- status <fs> <dir>: peek complete cache (no load on miss); if the
  entry contains the directory and peers, serve from complete.
  Otherwise load partial cache (omap on miss).

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agomgr/mirroring: Reorder and format metrics output
Kotresh HR [Mon, 1 Jun 2026 09:29:31 +0000 (14:59 +0530)]
mgr/mirroring: Reorder and format metrics output

Reorder and format status output to match the output of asok
interface peer_status command. Return metrics under
metrics/<dir>/peer/<uuid> to match the asok peer_status layout,
including {"metrics": {}} when no peers are configured.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agomgr/mirroring: Add new interface to expose mirroring metrics
Kotresh HR [Wed, 29 Apr 2026 09:19:15 +0000 (14:49 +0530)]
mgr/mirroring: Add new interface to expose mirroring metrics

Add the following new interface to expose mirroring metrics

ceph fs snapshot mirror status <fsname> [<mirrored_dir_path>] [--peer_uuid=<peer_uuid>]

The cmd loads the persisted directory sync metrics from the
cephfs_mirror object's omap. Metrics are grouped by mirrored
directory and peer.

When --peer_uuid is specified, only metrics for that peer are
returned. peer_uuid is a named CLI argument (_end_positional_) so
peer-only filtering does not require a mirrored directory path.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agotools/cephfs_mirror: Remove persisted dir stats
Kotresh HR [Sat, 20 Jun 2026 07:58:56 +0000 (13:28 +0530)]
tools/cephfs_mirror: Remove persisted dir stats

When a directory is removed from mirroring, the persisted directory
stats need to be removed.  This patch handles the cleanup.

Omap keys must not be removed when mirrored directories are reshuffled
across cephfs-mirror daemons.  The mgr release notify now carries a
purging flag (set only during permanent removal, not reshuffle), and
the daemon removes persisted stats only when purging is true.  On
reshuffle with an in-progress sync, clear live current_syncing_snap
state and persist idle metrics so the acquiring daemon does not inherit
stale syncing omap entries.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agotools/cephfs_mirror: Load persisted mirror metrics from omap
Kotresh HR [Sat, 20 Jun 2026 06:21:42 +0000 (11:51 +0530)]
tools/cephfs_mirror: Load persisted mirror metrics from omap

Load last_synced_snap metadata from the cephfs_mirror object omap on
PeerReplayer initialization and when a mirrored directory is added.
Live current_syncing_snap metrics are not restored; they are rebuilt
when synchronization starts.

When the daemon restarts after a snapshot was synced on the remote but
metrics were not yet written to omap, loaded metadata may belong to an
older snapshot.  Add reconcile_last_synced_snap() to compare against
the remote snap map, clear stale last-sync fields, and update
last_synced_snap id/name in memory.

Treat snaps_synced, snaps_deleted, and snaps_renamed as per-session
counters.  Do not load them from omap; they start at zero for each
daemon session and are still reported via the admin socket.  Persist
omap metrics unconditionally after reconcile so the mgr picks up the
new instance id and cleared session counters on restart.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agotools/cephfs_mirror: Persist metrics to omap
Kotresh HR [Sat, 20 Jun 2026 05:33:49 +0000 (11:03 +0530)]
tools/cephfs_mirror: Persist metrics to omap

Persist snapshot mirroring metrics to the cephfs_mirror object omap
for the mgr/mirroring module to support status command.

The tick thread only keeps omap up to date for in-progress syncs on
registered directories. Persist explicitly when stats change so omap
is updated before a directory unregisters:

 - snap delete/rename propagation (inc_deleted_snap / inc_renamed_snap)
 - after each successful snap sync (following set_last_synced_stat)
 - after sync_snaps failure (following _inc_failed_count)
 - after sync_perms failure (following _inc_failed_count)

Without the explicit call sites, omap can keep stale live or idle state
after sync completes or fails because directories leave m_registered
before the next tick.

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>
2 weeks agotools/cephfs_mirror: Adds capability to persist metrics
Kotresh HR [Sun, 17 May 2026 21:01:58 +0000 (02:31 +0530)]
tools/cephfs_mirror: Adds capability to persist metrics

Adds the capability to persist mirroring metrics.
The metrics are persisted in the omap of the cephfs-mirror
object. Metrics are persisted asynchronously.

Each mirrored directory path stores the corresponding
metrics as the value of a unique omap key representing
the mirrored directory. The omap key is as below.

sync_stat/<fsname>/<peer_uuid>/<mirrored_dir_path>

Fixes: https://tracker.ceph.com/issues/76686
Signed-off-by: Kotresh HR <khiremat@redhat.com>