Kefu Chai [Mon, 20 Oct 2025 02:55:52 +0000 (10:55 +0800)]
Dockerfile.build: change WITH_CRIMSON default from true to false
The WITH_CRIMSON=true default was causing all builds to attempt building
crimson, including distributions that don't meet the GCC 13+ requirement
(e.g., Ubuntu Jammy with GCC 11.4.0).
The Jenkins CI pipeline correctly excludes crimson flavors from non-centos9
distributions via matrix excludes, and explicitly sets WITH_CRIMSON=true
via .env only for crimson-* flavors. However, the Dockerfile ARG default
was overriding this logic for non-crimson builds where WITH_CRIMSON was
not explicitly set.
By changing the default to false, crimson builds now only occur when
explicitly requested via the WITH_CRIMSON environment variable, which
aligns with the CI pipeline's intended behavior.
Kefu Chai [Sat, 18 Oct 2025 14:23:56 +0000 (22:23 +0800)]
debian/rules: enable WITH_CRIMSON when pkg.ceph.crimson profile is set
Since commit 9b1d524839 ("debian: mark "crimson" specific deps with
"pkg.ceph.crimson""), crimson-specific build dependencies have been
gated by the Build-Profiles: <pkg.ceph.crimson> tag. However,
debian/rules was never updated to pass -DWITH_CRIMSON=ON when this
build profile is active.
This causes builds with the crimson profile enabled to fail during
dh_install, as the crimson-osd binary is never built but the install
file tries to package it:
Failed to copy 'usr/bin/crimson-osd': No such file or directory
dh_install: error: debian/ceph-crimson-osd.install returned exit code 127
Fix this by checking for pkg.ceph.crimson in DEB_BUILD_PROFILES and
enabling the CMake option accordingly, following the same pattern used
for pkg.ceph.arrow.
Kefu Chai [Fri, 17 Oct 2025 14:09:26 +0000 (22:09 +0800)]
qa: install ceph-osd-classic and ceph-osd-crimson
- qa/packages/packages.yaml: add ceph-osd and ceph-osd-classic to
packages/packages.yaml, so that the "install" task can install
ceph-osd-classic by default, this preserves the existing behavior.
- qa/suites/crimson-rados: install ceph-osd-crimson instead of
ceph-osd-classic. adding them to exclude_packages and extra_packages
to task.install allows us to customize the packages to be installed
when performing the "install"
task.
- qa/suites/crimson-rados-experimental: likewise.
debian,ceph.spec: split ceph-osd into shared base and implementation packages
Previously, ceph-osd packaging had two mutually exclusive flavors that
could only be built one at a time: one with classic OSD and another
with crimson OSD. Both provided /usr/bin/ceph-osd, making them
impossible to coexist and confusing from a user perspective.
This commit restructures the packaging to enable both implementations
to coexist on the same system:
- ceph-osd: Contains shared components (systemd units, sysctl configs,
common executables like ceph-erasure-code-tool) and depends on exactly
one OSD implementation
- ceph-osd-classic: Contains the classic OSD implementation binary and
classic-specific tools
- ceph-osd-crimson: Contains the crimson OSD implementation binary and
crimson-specific tools
The two implementation packages install different sets of file, so they
don't conflict with each other anymore, and both depend on ceph-osd for
shared resources.
Changes:
Debian packaging:
- Revert e5f00d2f
- Add ceph-osd-crimson package
- Add Recommends: ceph-osd-classic to prefer classic on upgrades
- Add Replaces/Breaks for smooth upgrades from old monolithic package
- Create separate .install files for crimson and classic osd packages
Enforce exact version matching using ${binary:Version}
RPM packaging:
- Use rich dependencies for OR requirement (classic or crimson)
- Add Recommends: ceph-osd-classic for upgrade preference
Upgrade behavior:
Users upgrading from older versions will automatically get
ceph-osd-classic due to the Recommends directive, maintaining
backward compatibility. Users can explicitly choose crimson by
installing ceph-osd-crimson, which will coexist with classic.
Switching between implementations is supported via standard package
operations, with the alternatives system ensuring /usr/bin/ceph-osd
always points to the active implementation.
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.
prik73 [Fri, 16 May 2025 17:05:10 +0000 (22:35 +0530)]
mgr/dashboard: fix misaligned text links on login page
Fixes a UI regression introduced after the Carbon update where
the help-related links (Help, Security, Trademarks) on the login
page were misaligned. The links are now left-aligned under the
Ceph logo for visual consistency.
Afreen Misbah [Tue, 21 Oct 2025 18:20:19 +0000 (23:50 +0530)]
mgr/dashboard: Fix timestamps in APIs
- remove 'Z' from rbd APIs which are returning now `aware` timestamp
- `datetime.utcfromtimestamp` is deprectated so using `datetime.fromtimestamp(timestamp, tz=tz=timezone.utc)` thereby returning only `aware` timestamp and removing 'Z'.
- similarly `datetime.utcnow()` is deprecated , migrated to `datetime.now(timezone.utc)`
Tom Sollers [Tue, 21 Oct 2025 15:52:07 +0000 (16:52 +0100)]
qa: Add a new test to test-erasure-code-plugins.sh to test for new health warn
This commit adds a new test to test-erasure-code-plugins.sh that
tests for the health warning caused by having a erasure-code-profile
with the blaum-roth technique and a w+1 value that is not prime.
Fixes: http://tracker.ceph.com/issues/64419 Signed-off-by: Tom Sollers <tom.sollers@ibm.com>
Tom Sollers [Thu, 2 Oct 2025 13:36:16 +0000 (14:36 +0100)]
mon: Add a new health warning for blaum-roth erasure code profiles with a w+1 that is not prime
This commit adds a new health warning for when a user has an erasure code
profile using the blaum-roth technique which has a w+1 value that is not
prime.
Fixes: http://tracker.ceph.com/issues/64419 Signed-off-by: Tom Sollers <tom.sollers@ibm.com>
Casey Bodley [Thu, 5 Jun 2025 19:53:31 +0000 (15:53 -0400)]
rgw/lc: replace WorkPool with ceph::async::spawn_throttle
use spawn_throttle to spawn the work functions as coroutines instead of
passing WorkItems to separate WorkQ threads for processing. the
spawn_throttle concurrency limit uses the same rgw_lc_max_wp_worker
value that previously controlled the number of WorkQ threads
Edwin Rodriguez [Thu, 2 Oct 2025 14:46:51 +0000 (10:46 -0400)]
cmake: add cmake 4 support
This change improves the CMAKE variable detection logic in do_cmake.sh
to allow users to override the CMAKE binary used for building.
Changes:
- Add conditional check to only set CMAKE if not already set
- Add detection for cmake version 4.x and later (prioritized)
- Maintain backward compatibility with cmake3 fallback
- Allow users to specify custom CMAKE path via environment variable
- Pass CMAKE_POLICY_VERSION_MINIMUM if set to submodule build steps for
older modules
This enables users to use a specific cmake binary by setting the CMAKE
environment variable before running the script:
CMAKE=/custom/path/to/cmake ./do_cmake.sh
Additionally, the script now automatically detects and uses cmake 4.x+
when available, falling back to cmake3 or cmake as needed. This supports
building Ceph with newer cmake versions while maintaining compatibility
with existing build environments.
John Mulligan [Mon, 20 Oct 2025 19:04:49 +0000 (15:04 -0400)]
script/build-with-container: optionally source WITH_CRIMSON from env file
Add support for optionally sourcing WITH_CRIMSON from the env file that
can be passed to BWC on the command line. When auto-detecting the
crimson variant we previously only looked at the BWC processes
environment. After speaking with Zack we determined that the Jenkinsfile
only writes the WITH_CRIMSON param into the env file, so we add support
to "peek" in the env file for the WITH_CRIMSON variable.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
John Mulligan [Sat, 18 Oct 2025 00:05:09 +0000 (20:05 -0400)]
script/build-with-container: add more detailed variants
Create two new variants 'packages.minimal' or 'packages.crimson'.
The first disables test deps (make check) and crimson deps.
The second only disables test deps and explicitly enables crimson deps.
The existing 'packages' variant now tries to determine if it should
switch to 'packages.minimal' or 'packages.crimson' by checking for
the same env vars install-deps.sh was (WITH_CRIMSON).
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Ville Ojamo [Mon, 20 Oct 2025 06:31:21 +0000 (13:31 +0700)]
doc/rados: Fix and improve formatting in operations/monitoring.rst
Remove bash "$" prompts from a block that should be command output by
changing from promptified block to simple preformatted block.
Use privileged bash prompt consistently for commands requiring
privileges.
Use :ref: instead of link definitions + external relative links to other
docs content.
Add labels for those links in configuration/ceph-conf.rst
operations/monitoring-osd-pg.rst.
Use semantically correct preformatted block types (json and not
javascript / none and not bash).
Remove spaces at end of lines. Change tabs to spaces (retaining columns
but some seem to be jumbled).
Add space between numbers and units.
Change few double spaces after full stop to single space.
Indent more clearly complex multi-line CLI commands.
Use title case consistently for section titles.
Use admonition instead of spelling out "Note:".
Signed-off-by: Ville Ojamo <14869000+bluikko@users.noreply.github.com>
Dan Mick [Sun, 19 Oct 2025 00:45:31 +0000 (17:45 -0700)]
install-deps.sh: install proper compiler version on Debian/Ubuntu
This code used to run in a pbuilder hook (because it needed to run
inside the build environment chroot). When building in a container,
you also want the right compiler installed.
This is necessary at least to build reef on ubuntu focal.
Fixes: https://tracker.ceph.com/issues/73585 Signed-off-by: Dan Mick <dan.mick@redhat.com>
qa: implement qa tests for admin account REST APIs
This commit implements tests related to setting account quotas at the account and bucket levels for qa and Teuthology
tracker: https://tracker.ceph.com/issues/72527 Signed-off-by: Nicholas Liu <nliu204@bloomberg.net>
doc/radosgw/adminops.rst: add account documentation
This commit adds documentation on how to create, get, modify, and delete accounts using Admin APIs. It also explains how to set quota for an account and how to create a user under an account
Signed-off-by: Nicholas Liu <nliu204@bloomberg.net>
rgw: implement set account quota for admin REST APIs
This commit implements the functionality of setting bucket- and account-level quotas with PUT /admin/account
tracker: https://tracker.ceph.com/issues/72527 Signed-off-by: Nicholas Liu <nliu204@bloomberg.net>