chungfengz [Thu, 6 Nov 2025 09:46:51 +0000 (09:46 +0000)]
bluestore/BlueFS: fix bytes_written_slow counter with aio_write
The bytes_written_slow performance counter was incorrectly reporting
0 when using async I/O.
When aio_write() is called with a bufferlist, it uses claim_append()
to transfer ownership of the buffer to the aio structure, leaving the
source bufferlist empty. Using t.length() after aio_write() returns 0
instead of the actual bytes written.
Fix by using the pre-calculated x_len value which contains the actual
write size and is not affected by the buffer ownership transfer.
The with_obc() function acquires a lock before invoking the
lambda it wraps. Earlier the lambda itself called send_to_osd()
which returns a future to with_obc. If a future is not resolved
immediately and a response could arrive and trigger
handle_pull_response() which attempts to acquire an exclusive lock.
Because a future is not returned yet to with_obc() so the original
lock is still holding by with_obc and handle_pull_response() throw
an assertion failure due to that osd is crashed.
Solution: Move send_to_osd() call outside with_obc lambda so that
the lock is released before handle_pull_response() is triggered.
Nizamudeen A [Fri, 31 Oct 2025 15:40:37 +0000 (21:10 +0530)]
mgr/dashboard: fix cephadm e2e failure
- fix add host failure because of cds-tag migration
- fix draining issue where start/stop toggle was not working properly
- supress an undefined class error in cypress which is raised in
different place from table component
While creating the service without providing the allowlist domain, the
UI fails with an error which is logged in the mgr log
```
Nov 05 04:11:56 ceph-node-00 ceph-mgr[1587]: [dashboard ERROR frontend.error] (https://192.168.100.100:8443/#/services/(modal:create)): Cannot read properties of null (reading 'split')
TypeError: Cannot read properties of null (reading 'split')
at ServiceFormComponent.onSubmit (https://192.168.100.100:8443/src_bootstrap_ts.js:31997:74)
at ServiceFormComponent_Template_cd_form_button_panel_submitActionEvent_60_listener (https://192.168.100.100:8443/src_bootstrap_ts.js:34168:83)
at executeListenerWithErrorHandling (https://192.168.100.100:8443/node_modules_angular_core_fesm2022_core_mjs.js:26276:12)
at Object.wrapListenerIn_markDirtyAndPreventDefault [as next] (https://192.168.100.100:8443/node_modules_angular_core_fesm2022_core_mjs.js:26308:18)
at SafeSubscriber.__tryOrUnsub (https://192.168.100.100:8443/default-node_modules_rxjs__esm2015_internal_AsyncSubject_js-node_modules_rxjs__esm2015_intern-7c6e1a.js:960:10)
at SafeSubscriber.next (https://192.168.100.100:8443/default-node_modules_rxjs__esm2015_internal_AsyncSubject_js-node_modules_rxjs__esm2015_intern-7c6e1a.js:900:14)
at Subscriber._next (https://192.168.100.100:8443/default-node_modules_rxjs__esm2015_internal_AsyncSubject_js-node_modules_rxjs__esm2015_intern-7c6e1a.js:847:22)
at Subscriber.next (https://192.168.100.100:8443/default-node_modules_rxjs__esm2015_internal_AsyncSubject_js-node_modules_rxjs__esm2015_intern-7c6e1a.js:824:12)
at EventEmitter_.next (https://192.168.100.100:8443/default-node_modules_rxjs__esm2015_internal_AsyncSubject_js-node_modules_rxjs__esm2015_intern-7c6e1a.js:604:17)
at EventEmitter_.emit (https://192.168.100.100:8443/node_modules_angular_core_fesm2022_core_mjs.js:7069:13)
```
Fixes: https://tracker.ceph.com/issues/73717 Signed-off-by: Nizamudeen A <nia@redhat.com>
Casey Bodley [Tue, 4 Nov 2025 16:27:22 +0000 (11:27 -0500)]
install-deps: warn about gcc older than 13 for el9 and later
function ensure_decent_gcc_on_rh() is supposed to log a warning when it
finds the default gcc version is older than the gcc toolset version
installed by ceph.spec.in
> Your GCC is too old. Please run following command to add DTS to your environment:
however, this function is only called if the dts_ver variable is
initialized, so set it to 13 for centos/rocky 9 and later to match
ceph.spec.in
benaryorg [Tue, 28 Oct 2025 03:24:53 +0000 (03:24 +0000)]
doc: detailed explanation of set_choose_tries
- specifically call the *crushtool* output a histogram
- include a surface explanation of how PG placement calculation works
- more info on `choose_total_tries`
- small but complete example for explanatory purposes
- that way people can follow along locally and test out things
Casey Bodley [Fri, 31 Oct 2025 15:26:20 +0000 (11:26 -0400)]
cmake: fix checks for WITH_SYSTEM_QATLIB
commit 30681236678c7ee006a699b658233388b0f884c8 introduced the cmake
option WITH_SYSTEM_QATLIB, but the checks were based on nonexistent
variable WITH_SYSTEM_QAT
VinayBhaskar-V [Tue, 14 Oct 2025 11:47:37 +0000 (17:17 +0530)]
rbd-mirror: allow incomplete demote snapshot to sync after rbd-mirror daemon restart
Currently when the rbd-mirror daemon on secondary was killed while a demote snapshot was newly created (0% copied)
or partially synced, the image's promotion state was set to **PROMOTION_STATE_ORPHAN** upon restart of rbd-mirror
daemon on secondary. This state prevents the demote snapshot sync after restart as bootstrap on secondary fails.
In this commit we fix this by assigning promotion state to **PROMOTION_STATE_NON_PRIMARY**
for an image with an **incomplete non-primary demote snapshot**.
The downside is that if the image is removed on the primary cluster, then after restart of
rbd-mirror daemon on secondary cluster, the corresponding image on the secondary also gets removed.
This is because deletion propagation is unconditionally enabled precisely for **PROMOTION_STATE_NON_PRIMARY**
images and this is okay since the user would have deleted the primary demoted image forcefully.
Ville Ojamo [Sat, 25 Oct 2025 08:18:09 +0000 (15:18 +0700)]
doc: Pin pip to <25.3 for RTD as a workaround for pybind
Readthedocs now uses pip 25.3 by default which requires PEP 517.
src/pybind/* does not provide pyproject.toml files for PEP 517.
For an immediate workaround to allow RTD builds to succeed, pin pip
version to earlier than 25.3.
Details for pybind in https://tracker.ceph.com/issues/73645
Signed-off-by: Ville Ojamo <14869000+bluikko@users.noreply.github.com>
Naman Munet [Fri, 24 Oct 2025 05:59:09 +0000 (11:29 +0530)]
mgr/dashboard: Edit user via UI throwing multiple server errors
Fixes: https://tracker.ceph.com/issues/73637
Commit includes:
Returning the default user ratelimit when the ratelimit for user is not set, hence eliminating the 500 error on UI
Dan Mick [Thu, 23 Oct 2025 21:58:12 +0000 (14:58 -0700)]
container/build.sh: add 'rocky-10' suffix if necessary
'fromtag' is already available as distillation of the
FROM_IMAGE environment variable: everything after last
slash, s/:/-/. Use it as a suffix if it's anything other than
"centos-9stream" so that multiple CI container tags can coexist.
prik73 [Tue, 27 May 2025 19:04:37 +0000 (00:34 +0530)]
mgr/dashboard: remove hardcoded strings in About component
Replaced inline values for user role, version prefix, and
localStorage keys with shared constants (`USER`, `VERSION_PREFIX`,
and `LocalStorage.DASHBOARD_USERNAME`). This keeps things DRY and
makes future updates easier.
Addresses part of the constant reuse cleanup in the dashboard.