John Mulligan [Mon, 12 May 2025 20:09:05 +0000 (16:09 -0400)]
cephadm: add --dry-run option to cephadm {enter,logs,unit} commands
Add a --dry-run option to the cephadm enter, cephadm logs, and
cephadm unit commands. Like cephadm shell --dry-run, this causes cephadm
to print the command it would have run rather than running said command.
This allows the user to copy and edit or otherwise hack on the output
to make variations on these comands without having to teach cephadm all
the possible options and switches those commands make take.
For instance I can follow recent mgr logging like so:
```
$(/tmp/cephadm logs -i mgr --dry-run | sed 's/ / --since=-1s -f /')
```
Signed-off-by: John Mulligan <jmulligan@redhat.com>
John Mulligan [Tue, 8 Apr 2025 23:06:45 +0000 (19:06 -0400)]
cephadm: support --infer-name option for lazy devs
Add an --infer-name/-i option to the cephadm enter command. This new
option is a spin on --name/-n but allows the value to be partial.
The first part of the value must be a service type (like `mgr`, `mds`,
`nfs`, etc). That can then be followed optionally by a dot (.) and
a part (or whole) of an id. For example:
Enter the one and only mgr container running on this host:
```
cephadm enter -i mgr
```
Enter a (primary) smb container running on this host belonging to
the virtual cluster "cluster1", without specifying random chars or
rank values:
```
cephadm enter -i smb.cluster1
```
If the partial name does not match any services on the host or it
matches more than 1 service on the host it will return an error.
In the case of >1 service you can then supply more characters in
the partial id to narrow down the match. For example:
```
cephadm enter -i osd
Inferring fsid bf7116b2-2b9d-11f0-bb35-525400220000
ERROR: too many daemons match 'osd' (osd.2, osd.5)
Zac Dover [Tue, 10 Jun 2025 10:38:54 +0000 (20:38 +1000)]
doc/rbd: add mirroring troubleshooting info
Add a note to doc/rbd/rbd-mirroring.rst that directs the reader to set
both "site-a" and "site-b" to have the same pool names in the event that
rbd throws the error message "failed to import peer bootstrap token".
This information was reported to the Ceph upstream by Petr Tlapa in June
of 2025, and credit for its development goes to Petr.
Kefu Chai [Mon, 9 Jun 2025 10:26:21 +0000 (18:26 +0800)]
rgw/rgw_lua_utils: fix memory leak in luaL_error() formatting
Previously, error messages passed to luaL_error() were formatted using
std::string concatenation. Since luaL_error() never returns (it throws
a Lua exception via longjmp), the allocated std::string memory was
leaked, as detected by AddressSanitizer:
This change replaces std::string formatting with stack-allocated buffer
and std::to_chars() to eliminate the memory leak.
Note: We cannot format int64_t directly through luaL_error() because
lua_pushfstring() does not support long long or int64_t format specifiers,
even in Lua 5.4 (see https://www.lua.org/manual/5.4/manual.html#lua_pushfstring).
Since libstdc++ uses int64_t for std::chrono::milliseconds::rep, we use
std::to_chars() for safe, efficient conversion without heap allocation.
The maximum runtime limit was a configuration introduced by 3e3cb156.
Kefu Chai [Wed, 4 Jun 2025 03:05:38 +0000 (11:05 +0800)]
cmake: enable out-of-source build of breakpad
Previously, Breakpad was built in its source tree instead of the
user-specified build directory, inconsistent with other external
projects and potentially causing source tree pollution.
Include path fix:
- Add ${INSTALL_DIR}/include/breakpad to include directories to fix
FTBFS on Jammy builders
Build system improvements:
- Replace dedicated LSS submodule symlink target with PATCH_COMMAND to
simplify the build process
- Use user-specified make command instead of hardcoded "make"
- Skip building unused process library and tools
- Link against breakpad with PRIVATE visibility unless required
Compiler flag cleanups:
- Remove -Wno-array-bounds from CFLAGS (Breakpad uses C++/CXXFLAGS)
- Remove compile-time flags incorrectly placed in LDFLAGS
- Remove '-fPIC' from CFLAGS, as it is already included by breakpad
when building on linux hosts.
- Replace the individual -Wno-* flags with -Wno-error to cancel
-Werror option specified by breakpad. This is more future-proof.
CMake target modernization:
- Rename libbreakpad_client to Breakpad::client following modern conventions
- Add Breakpad::breakpad header-only target to minimize dependencies
- Install library to enable proper include path prefixes
(breakpad/client/... vs client/...)
Header dependency optimization:
- Remove Breakpad includes from popular headers, use forward declarations
- Include Breakpad headers before internal headers for better readability
Ronen Friedman [Wed, 4 Jun 2025 17:44:16 +0000 (12:44 -0500)]
osd/scrub: make m_session_started_at at Session state ctor
ScrubMachine::get_time_scrubbing() must access the Session object
to compute the scrub duration. But the State data is not externally
accessible before its ctor has completed.
As we always happen to try to access that data inside the ctor,
this always results in a warning log message.
Here we move m_session_started_at into the outer state, simplifying
the logic required to access it.
Zac Dover [Wed, 4 Jun 2025 23:39:33 +0000 (09:39 +1000)]
doc/glossary: s/OMAP/omap/
Change "OMAP" to "omap" to match the capitalization established by
Eleanor Cawthon in her 2012 omap paper, here:
https://ceph.io/assets/pdfs/CawthonKeyValueStore.pdf.
Samuel Just [Wed, 4 Jun 2025 20:55:21 +0000 (20:55 +0000)]
.gitmodules: remove shallow=true config from nvmeof/gateway
https://github.com/ceph/ceph/pull/61264 reintroduced
https://tracker.ceph.com/issues/67640 fixed by 383091e89.
Setting shallow=true for the nvmeof/gateway submodule
is problematic because the ceph.git submodule sha1
is only very rarely the head sha1 of the default
branch.
Fixes: https://tracker.ceph.com/issues/71568 Signed-off-by: Samuel Just <sjust@redhat.com>
mgr/dashboard: fix KeyError exception in HardwareService.get_summary()
Typical error:
```
[dashboard ERROR exception] Internal Server Error
Traceback (most recent call last):
File "/usr/share/ceph/mgr/dashboard/services/exception.py", line 48, in dashboard_exception_handler
return handler(*args, **kwargs)
File "/lib/python3.9/site-packages/cherrypy/_cpdispatch.py", line 54, in __call__
return self.callable(*self.args, **self.kwargs)
File "/usr/share/ceph/mgr/dashboard/controllers/_base_controller.py", line 263, in inner
ret = func(*args, **kwargs)
File "/usr/share/ceph/mgr/dashboard/controllers/_rest_controller.py", line 193, in wrapper
return func(*vpath, **params)
File "/usr/share/ceph/mgr/dashboard/controllers/hardware.py", line 21, in summary
return HardwareService.get_summary(categories, hostname)
File "/usr/share/ceph/mgr/dashboard/services/hardware.py", line 33, in get_summary
'ok': sum(item['status']['health'] == 'OK' for items in data.values()
File "/usr/share/ceph/mgr/dashboard/services/hardware.py", line 33, in <genexpr>
'ok': sum(item['status']['health'] == 'OK' for items in data.values()
KeyError: 'status'
```
The recent change from commit `fbcdf571ca1` introduced this regression.
* refs/pull/62865/head:
test/libcephfs: copy DT_NEEDED entries from input libraries
test/fs: only add libcephfs as library dependency
test/client: do not depend on libcephfs
Anoop C S [Wed, 4 Jun 2025 08:02:01 +0000 (13:32 +0530)]
libcephfs: Bump API major version
We recently had ABI changes[1] with respect to APIs from chown() family
which calls for a change in major version. Native users of the library
may not have to change their code but expected sizes differ when data
type for parameters are changed. However go-ceph, Go bindings for ceph,
couldn't build[2] unless the ABI change is made visible to the consumers
of the API. Following the Semantic Versioning guidelines[3] we reset
minor and patch (extra) versions to 0.
Yingxin Cheng [Wed, 4 Jun 2025 01:56:23 +0000 (09:56 +0800)]
Merge pull request #63218 from xxhdx1985126/wip-seastore-fix-retire-absent
crimson/os/seastore/transaction_manager: Cache::retire_absent_extent_addr should be called immediately after TransactionManager::get_extent_if_linked if necessary
debian: radosgw: add media-types packages as alternative for mime-support
Back in 2020 the '/etc/mime.types' file was split out into it's own
leaner 'media-types' Debian package [0], the previous 'mime-support'
was kept as transitional package to handle upgrades, but it did its
job and isn't included in Debian Trixie repos anymore.
So accept both, the new 'media-types' package or the legacy
'mime-support' one as valid dependency for radosgw, this ensures one
can install radosgw on newer Debian based releases while keeping it
also working for older ones.
Change the wording of a sentence in doc/radosgw/metrics.rst so that its
articles read as though they were written by a native speaker of the
English language.
This commit is being raised as part of a diagnostic process aimed at
discovering why the ReadtheDocs check is failing on PR
https://github.com/ceph/ceph/pull/62877.