Clang relies on the system's libstdc++ headers for standard C++
features. On Ubuntu Jammy, gcc-11 is the default and it's libstdc++ is
missing some of the newer features supported by C++20.
This causes build failures as certain standard headers are incomplete.
To fix this, we install gcc-12 explicitly so that Clang can pick up the
newer libstdc++ headers.
Kefu Chai [Mon, 30 Jun 2025 07:54:14 +0000 (15:54 +0800)]
cmake: remove osdc/error_code.cc from osdc to fix ODR violation
Fix AddressSanitizer ODR (One Definition Rule) violation caused by
osdc/error_code.cc being compiled into both the osdc library and
ceph-common library.
The violation occurred because osdc_error_category was defined in
both the rbd binary (via osdc) and libceph-common.so, creating
duplicate symbols at runtime.
Since all targets that link against osdc also link against
ceph-common, removing osdc/error_code.cc from osdc doesn't break the
build while eliminating the duplicate definition.
ASan error sample:
```
==857433==ERROR: AddressSanitizer: odr-violation (0x5612ad665760):
[1] size=22 'typeinfo name for osdc_error_category' /home/jenkins-build/build/workspace/ceph-pull-requests/src/osdc/error_code.cc in /home/jenkins-build/build/workspace/ceph-pull-requests/build/bin/rbd
[2] size=22 'typeinfo name for osdc_error_category' /home/jenkins-build/build/workspace/ceph-pull-requests/src/osdc/error_code.cc in /home/jenkins-build/build/workspace/ceph-pull-requests/build/lib/libceph-common.so.2
These globals were registered at these points:
[1]:
#0 0x5612acd62c88 in __asan_register_globals (/home/jenkins-build/build/workspace/ceph-pull-requests/build/bin/rbd+0x815c88) (BuildId: 62a02cbbf3426e5470e16372e3b53a18cb18ce0f)
#1 0x5612acd63d59 in __asan_register_elf_globals (/home/jenkins-build/build/workspace/ceph-pull-requests/build/bin/rbd+0x816d59) (BuildId: 62a02cbbf3426e5470e16372e3b53a18cb18ce0f)
#2 0x7f28d3b02eba in call_init csu/../csu/libc-start.c:145:3
#3 0x7f28d3b02eba in __libc_start_main csu/../csu/libc-start.c:379:5
```
- clipboard icon not displaying breaking several places
- cliboard icon on click gets filed primary green color losing the visibilty of icon. The icon now remain visible on click
- clipboard button for path and copy in tables on mouseover does not give `hand` but `cursor`. which was not ideal from a usability standpoint. This behavior has been updated to use the hand cursor making the interaction semantically correct and more intuitive for users.
Naman Munet [Mon, 7 Jul 2025 09:26:49 +0000 (14:56 +0530)]
mgr/dashboard: differentiate account users from rgw users in bucket form
fixes: https://tracker.ceph.com/issues/71523
commit includes:
1) Added checkbox to select account user and another dropdown to show account users
2) Also fixed bucket replication as it was throwing error for 'invalidBucketARN'
Alex Ainscow [Wed, 11 Jun 2025 15:24:12 +0000 (16:24 +0100)]
osd: Remove all references to hinfo from optimized EC
Legacy EC used hinfo to store two things:
1. Shard size
2. CRCs of the shards
However:
* Optimized EC stores different object sizes on each shard
* Optimized EC scrub calculates the correct sizes of shards and checks them, so shard size checks are not needed in hinfo.
* Bluestore checks the CRC.
* Seastore checks the CRC.
As such, the hinfo object is redundant. As such we remove it in
optimized EC:
1. Remove all references/upgrades to hinfo.
2. Delete hinfo attribute if found on recovery/backfill.
3. Redirect all scrub references for hinfo to legacy EC.
Kefu Chai [Fri, 27 Jun 2025 13:56:23 +0000 (21:56 +0800)]
erasure-code/jerasure: fix memory leak in Galois field operations
Fix a memory leak where Galois field acceleration functions created by
ErasureCodeJerasure::prepare() were never freed. ASan detected this as
a one-time leak when the plugin was unloaded.
Add jerasure_finish() destructor function in jerasure_init.cc to free
the allocated Galois field operations. Since jerasure_init.cc and
galois.c are built into the same object library, jerasure_finish() can
access and clean up the global static acceleration functions defined
in galois.c.
The destructor function is automatically called when the shared library
(plugin) is unloaded, ensuring proper cleanup without requiring explicit
calls from client code.
qa/standalone/scrub: fix "scrubbed in 0ms" in osd-scrub-test.sh
The specific test looks for a 'last scrub duration' higher than
0 as a sign that the scrub actually ran. Previous code fixes
guaranteed that even a scrub duration as low as 1ms would be
reported as "1" (1s). However, none of the 15 objects created
in this test were designated for the tested PG, which remained
empty. As a result, the scrub duration was reported as "0".
The fix is to create a large enough number of objects so that
at least one of them is mapped to the tested PG.
Warning: Encountered an error when evaluating display name ${{ format('python3 ceph/src/script/redmine-upkeep.py --github-action --git-dir=./ceph/ {0} {1}
', github.event_name == 'workflow_dispatch' && (inputs.debug && '--debug' || '') || '', github.event_name == 'workflow_dispatch' && format('--limit={}', inputs.limit) || '') }}. The template is not valid. .github/workflows/redmine-upkeep.yml (Line: 54, Col: 14): The following format string is invalid: --limit={}
Error: The template is not valid. .github/workflows/redmine-upkeep.yml (Line: 54, Col: 14): The following format string is invalid: --limit={}
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
This script's functionality has been incoporated into the redmine-upkeep.py script:
* A backport which is merged is moved to the Resolved state by
_transform_backport_resolved
* A non-backport issue with all backports resolved/rejected will transition
from 'Pending Backport' to 'Resolved'.
The only thing not done is changing the "Target Version" which is not
particularly useful anymore as hotfixes frequently invalidate it. Rely on
"Released In" instead.
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
Patrick Donnelly [Thu, 26 Jun 2025 02:03:13 +0000 (22:03 -0400)]
script: add redmine-upkeep script
This script intends to do all Redmine upkeep related tasks.
It's organized so that a series of transformations are run on any issue under
examination. These include things like updating the "Merge Commit" and "Fixed
In" fields when the associated PR is merged. The "Released In" field is also
set when the associated merge commit is part of some non-RC release.
Transformations can be run in one of three ways:
* An explicit --issue switch specifies a comma separated list of issues to
operate on.
* An explicit --revision-range switch specifies a Git revision range to lookup
first-parent merge commits. For each of those merge commits, try to find
the associated issue with "Merge Commit" equal to that merge commit. If found,
operate on that issue. This is intended to allow updating the "Released In"
field whenever a tag is pushd to ceph.git.
Future work:
* Incorporate backport-create-issue into this script.
* Also update "Target version" if straightforward. This is protected by redmine
whenever a version is locked/closed.
* Anything else we desire to automate!
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
This upgrade is supported by our migration to clang-19 (0e5a51b6) and
libstdc++ from GCC-11, which provide sufficient C++23 feature coverage
for our needs.
Merge pull request #62713 from soumyakoduri/wip-skoduri-restore-glacier
rgw/cloud-restore [PART2] : Add Restore support from Glacier/Tape cloud endpoints
Reviewed-by: Adam Emerson <aemerson@redhat.com> Reviewed-by: Jiffin Tony Thottan <thottanjiffin@gmail.com> Reviewed-by: Matt Benjamin <mbenjamin@redhat.com> Reviewed-by: Daniel Gryniewicz <dang@redhat.com>
This should fix the chmod 777 /var/log/ceph failures.
We were missing the install task which resulted in no /var/log/ceph:
```
2025-07-07T08:55:44.586 INFO:teuthology.run_tasks:Running task ceph...
2025-07-07T08:55:44.679 INFO:tasks.ceph:Making ceph log dir writeable by
non-root...
2025-07-07T08:55:44.679 DEBUG:teuthology.orchestra.run.smithi144:> sudo
chmod 777 /var/log/ceph
2025-07-07T08:55:44.711
INFO:teuthology.orchestra.run.smithi144.stderr:chmod: cannot access
'/var/log/ceph': No such file or directory
```
Shachar Sharon [Thu, 26 Jun 2025 06:43:01 +0000 (09:43 +0300)]
mgr/smb: Enable per-share profile counters
Samba's commit 9f8d272 ("vfs_ceph_new: use per-share profile macros")
enables per-share profile counters for VFS ceph bridge. Enable those by
default for each smb-ceph share.
Matan Breizman [Sun, 8 Jun 2025 10:20:25 +0000 (10:20 +0000)]
crimson/CMakeLists: simplify crimson-common deps
instead of appending conditional dependencies to crimson-common with
crimson_common_deps and crimson_common_public_deps, use
target_link_libraries directly.
Connor Fawcett [Tue, 24 Jun 2025 11:45:06 +0000 (12:45 +0100)]
Adds a new command-line utility which can check the consistency of objects within an erasure coded pool.
A new test-only inject tells the EC backend to return both data and parity shards to the client so that they can
be checked for consistency by the new tool.