In ProtocolV2::send_server_ident(), the global_seq was being fetched
from messenger->get_global_seq() and used in the ServerIdentFrame,
however, it is stored in a local var and not the private class var
ProtocolV2::global_seq. This causes problems like
where the receiving peer sees a peer_global_seq that
appears older than expected, triggering a false-positive reconnect logic:
```
2025-07-15T11:40:50.927+0000 mon.c handle_existing_connection client has clearly restarted
(peer_global_seq < ex_peer_global_seq && cookie changed), dropping existing connection=0x563ffe9a9000 in favor of new one
```
In this case, mon.c received a peer_global_seq=75, which was already logged by mon.d as gs=79 in
its send_server_ident()—but ProtocolV2::global_seq was never updated, resulting in inconsistent state and premature connection teardown.
This commit fixes the issue by assigning the freshly incremented messenger->get_global_seq() value to the local global_seq field in ProtocolV2 as well,
ensuring consistency in the protocol.
Abhishek Desai [Thu, 9 Oct 2025 07:49:34 +0000 (13:19 +0530)]
mgr/dashboard : Fixed usage bar for secondary site in rbd mirroing
fixes : https://tracker.ceph.com/issues/73447 Signed-off-by: Abhishek Desai <abhishek.desai1@ibm.com>
Ronen Friedman [Thu, 9 Oct 2025 07:31:30 +0000 (02:31 -0500)]
osd/scrub: do not reduce min chunk on preemption
Existing logic handling scrub preemptions is halving both the
'max' and the 'min' values.
This isn't optimal: the 'min' values (used mainly to guarantee a minimal
number of objects to fetch from the backend in one operation) can and
should also be used to limit the effect of preemptions on the execution
of the scrub.
Ronen Friedman [Wed, 8 Oct 2025 16:54:40 +0000 (11:54 -0500)]
osd/scrub: new/modified perf counters for scrub preemption
A new 'scrub_[replicated/ec]_io_intersects' counter is added, to count
the times a client write op intersects the active scrub chunk range.
A new 'scrub_[replicated/ec]_io_blocked' counter counts the times
the write op did not preempt the scrub, and instead blocked for the
scrub to release the chunk.
The existing labeled counter <label>_write_blocked is still there,
but will be removed in 'Umbrella'. Its meaning was modified,
to mimic the new 'scrub_[replicated/ec]_io_blocked' counter.
John Mulligan [Wed, 8 Oct 2025 20:41:36 +0000 (16:41 -0400)]
script/build-with-container: improve error handling for invalid distros
Instead of throwing a long obnoxious traceback at the user if the value
supplied to -d/--distro is invalid do something nicer. For example:
```
$ ./src/script/build-with-container.py -d trixy -e build
usage: build-with-container.py [-h] [--help-build-steps]
build-with-container.py: error: argument --distro/-d: unknown distro: 'trixy' not in centos10, centos10stream, centos8, centos9, centos9stream, rocky9, rockylinux9, rocky10, rockylinux10, fedora41, fc41, fedora42, fc42, fedora43, fc43, ubuntu20.04, ubuntu-focal, focal, ubuntu22.04, ubuntu-jammy, jammy, ubuntu24.04, ubuntu-noble, noble, debian12, debian-bookworm, bookworm, debian13, debian-trixie, trixie
```
Signed-off-by: John Mulligan <jmulligan@redhat.com>
John Mulligan [Wed, 8 Oct 2025 14:23:25 +0000 (10:23 -0400)]
script/build-with-container: be consistent with naming in distro kinds
Update the DistroKind enum and related items so that the naming is
applied consistently. That is: the canonical (no pun indented) form
of the name is "<name><version>" and codenames, such as "jammy" or
"bookworm" are aliases. This matches the previously existing code.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Adam King [Wed, 8 Oct 2025 13:19:27 +0000 (09:19 -0400)]
Merge pull request #65644 from ShwetaBhosale1/fix_issue_73035_nfs_ganesha_tls_support
mgr/cephadm: Cephadm support for NFS-Ganesha TLS configuration
Reviewed-by: Adam King <adking@redhat.com> Reviewed-by: Anthony D'Atri <anthonyeleven@users.noreply.github.com> Reviewed-by: Redouane Kachach <rkachach@ibm.com>
Naman Munet [Mon, 29 Sep 2025 04:51:06 +0000 (10:21 +0530)]
mgr/dashboard: Rename side-nav panel items
Fixes: https://tracker.ceph.com/issues/73252
Commit includes changes:
1) Renaming Topic to Notification destination
2) Renaming Tiering to Storage class
3) Renaming Users to User Management
4) fix storage class table refresh after delete
5) Also made changes to internal routing for topic and storage class
src/mon/HealthMonitor: Add mon_netsplit_grace_period to suppress transient MON_NETSPLIT warnings
When a monitor is elected leader and begins evaluating connectivity,
it may detect temporary disconnections between monitors that have not
yet fully reconnected to each other—particularly after events like
monitor restarts, SIGSTOP/SIGCONT (as used in mon_thrash), or brief network blips.
This can result in false-positive MON_NETSPLIT health warnings that
quickly disappear within seconds as the cluster topology stabilizes.
This commit introduces a configurable option:
- mon_netsplit_grace_period (default: 9 seconds)
When the leader observes a netsplit between two monitors or locations,
it will wait for the grace period before raising a health warning.
If the split resolves within this window, no warning is emitted.
This reduces test flakiness and alert fatigue while preserving the
accuracy of persistent MON_NETSPLIT detection.
src/msg/async: Improve logging and prefixes for global_seq
global_seq needs more visibility on how it gets updated,
decided to add more loggings in AsyncMessenger::get_global_seq
and also added the prefixes for global_seq in both
ProtocolV1 and ProtocolV2.
qa/suites/rados: increase debug && msgr-failures/none && white list
bump mon debug level to 30 in RADOS
and bump debug_ms from mon in
rados/monthrash && rados/multimon.
Add msgr-failures/none scenario to multimon and monthrash suite
this is a control scenario, where MON_NETSPLIT can only be organically
generated due to actually monitor network partition.
Whitelist the MON_NETSPLIT health warning in msgr-failures cases (excluding none)
for both multimon and monthrash suites. This is because all other
msgr-failures that is not `none` will have ms_inject_socket_failures
which is not an organic case of MON_NETSPLIT.
msg/async/ProtocolV2: Speed up connection logic when peer restarts
When a client is restarted, it loses its state including global_seq and
gets a new client_cookie. This creates an issue during reconnection
because the server has an existing connection with a higher
global_seq value, causing it to reject the new connection as "stale"
with the error:
"this is a stale connection, peer_global_seq="
This commit adds detection logic in
ProtocolV2::handle_existing_connection() to identify client restarts
by checking:
- exproto->peer_global_seq > peer_global_seq
(global_seq should only increase during a session; a decrease
strongly suggests a restart)
- client_cookie has changed (client generated a new cookie)
- existing connection state is not Ready or Standby
When all three conditions are met, the server drops the existing connection
and accepts the new one. This leads to faster reconnection, especially
in cases like Monitor restarts, helping clients rejoin the quorum
without delay and avoiding spurious MON_NETSPLIT warnings.
It also prevents reliance on server-side reconnect attempts or waiting
for the client's global_seq to catch up.
Note: without this patch, it'll take longer
for the reconnection to happen, eventually the server will
also act as a client and send_reconnect since it has server_cookie.
However, this could be 15 seconds later, since, the server probably
was hit with a _fault max_back_off when it was trying to connect
to the client when the client was still down and has not yet
restart. This patch basically does not wait for the reconnection
to happen and intelligently make decisions in dropping existing
connection or not based on 3 conditions.
Dan Mick [Tue, 7 Oct 2025 11:06:37 +0000 (04:06 -0700)]
src/test/fs: add more --copy-dt-needed-entries
See comment in src/test/libcephfs/CMakeLists.txt. I don't
know why bookworm tweaks this issue so that it occurs on two
more test binaries, but this fix works around the link error
in the previously-discovered way
Dan Mick [Tue, 7 Oct 2025 03:50:17 +0000 (20:50 -0700)]
make-debs.sh: use ID instead of NAME for workdir
NAME is "for the user", and as such, Debian's is "Debian GNU/Linux",
which isn't friendly for making a pathname. ID is more like what
we want (lowercase, no spaces, limited special characters),
in the two cases we care most about, 'ubuntu' and 'debian'.
Ville Ojamo [Tue, 29 Jul 2025 06:23:07 +0000 (13:23 +0700)]
doc: Fix a Sphinx warning&error and use labels for links in 4 files
Fix Sphinx warning about missing empty line after a label in
cephfs/ceph-dokan.rst.
Fix Sphinx error about invalid indentation in releases/squid.rst.
Fix Sphinx warning about invalid bash prompt block in
dev/crimson/crimson.rst.
Also fix warnings about too short section title text underline and fix
an incorrect link name (and use "above" instead of "below").
Fix Sphinx warning about missing strong emphasis closure, put the
problematic star inside inline preformatted/code in dev/blkin.rst.
Fix Sphinx warning about explicit markup, add the required empty line in
cephfs/mds-config-ref.rst.
Fix Sphinx error about invalid table in radosgw/s3/bucketops.rst.
Use the label at the beginning of the document in cephfs/ceph-dokan.rst
for hyperlinking with :ref: instead of using "external links" feature
from cephfs/createfs.rst cephfs/mount-prerequisites.rst
install/windows-install.rst.
Also use existing label in cephfs/mount-using-kernel-driver.rst
similarly from cephfs/createfs.rst cephfs/mount-prerequisites.rst.
Also use existing label in man/8/cephfs-shell.rst similarly from
cephfs/index.rst.
Add a label in cephfs/mount-using-fuse.rst and use it from
cephfs/createfs.rst cephfs/mount-prerequisites.rst.
Remove space at the end of line in cephfs/createfs.rst
cephfs/mount-prerequisites.rst cephfs/mount-using-fuse.rst
cephfs/cephfs-fuse.rst cephfs/index.rst.
Signed-off-by: Ville Ojamo <14869000+bluikko@users.noreply.github.com>
Ville Ojamo [Tue, 29 Jul 2025 15:56:38 +0000 (22:56 +0700)]
doc/cephadm/services: Improve formatting and small fixes in index.rst
Indent block formatting to the left margin of the current paragraph.
And indent with a consistent amount of spaces.
Fix some text paragraphs indented too much.
Remove spaces at the end of lines.
Remove a stray space preceding a comma and in the middle of a hostname.
Add some full stops and colons where suitable.
Use title case in section titles consistently.
Fix some capitalization errors in text: YAML, CPU, some words starting
with capital case in the middle of a sentence.
Always use "service specification" (capitalized normally) instead of
also sometimes "Service Specification" or "Services Specification".
Cephadm the concept was sometimes capitalized even in the middle of a
sentence, sometimes not capitalized even in the beginning of a sentence.
Only capitalize it at the beginning of a sentence.
Capitalize "MON" when it refers to daemon/service and not to a
configuration parameter, for consistency with other such services.
Use double backticks instead of single backtick or otherwise for data
like warning names, CLI commands, file names.
Don't direct to add a space after "regex:" for a pattern, which
contradicted the next sample.
Try to improve a sentence to also mention the host list after the count
in an example command.
Use privileged user prompt consistently for privileged example CLI
commands.
Signed-off-by: Ville Ojamo <14869000+bluikko@users.noreply.github.com>
Rishabh Dave [Wed, 20 Aug 2025 07:41:04 +0000 (13:11 +0530)]
src/include: move ceph_to_hostos_errno() to separate header file
Including src/include/types.h in src/pybind/cephfs/types.pxd leads to
compilation error: "fatal error: acconfig.h: No such file or directory".
types.h as well as int_types.h include acconfig.h header file.
Move the code to be included in types.pxd to a separate file where
acconfig.h won't be included, thus preventing this error.
Rishabh Dave [Sun, 31 Aug 2025 18:50:19 +0000 (00:20 +0530)]
qa: set -x for qa/workunits/libcephfs/test.sh
LibCephFS unit tests are compiled into different binary files and run
after another but without logging name of the binary being executed,
which can make it bit difficult to find out which binary/test group is
being run. Therefore "set -x" in the script so that binary name/test
group is printed before tests run.
Rishabh Dave [Fri, 3 Oct 2025 11:24:40 +0000 (16:54 +0530)]
Merge pull request #65104 from edwinzrodriguez/ceph-wip-72556
mds: Return ceph.dir.subvolume vxattr
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-ny: Christopher Hoffman <choffman@redhat.com> Reviewed-by: Rishabh Dave <ridave@redhat.com>