RGW bucket deletion via cls_user_remove_bucket was failing on Crimson
because cls_cxx_map_remove_key() encoded a std::vector<string> while
PGBackend::omap_remove_key() expected and decoded a std::set<string>
using decode_str_set_to_bl(). This mismatch caused OMAP keys to not be
removed, leaving stale bucket entries that broke test_list_buckets_*.
Fix by encoding std::set<std::string> in cls_cxx_map_remove_key() to
match the backend's decode_str_set_to_bl() expectation, aligning with
classic OSD behavior.
This fixes: s3 test_list_buckets_* tests on Crimson
crimson/osd: fix cmp_xattr handling for RGW delete
Match classic ENODATA behavior by only treating missing xattr as empty
for EQ+STRING with an empty expected value, so RGW null-version
deletes succeed.
crimson/osd: allow CLS call after delete in op list
Avoid returning -ENOENT early for read-only CLS methods when a prior op
in the same compound request makes the object non-existent in memory.
This restores classic-like compound op semantics without
client-specific op reordering.
Crimson was rejecting OSD ops when hobject_t::key (locator) was non-empty,
returning -ENOTSUP (95). This broke RGW PutObject because RGW uses locators
for object names like "bucket/obj" to ensure objects land in the same PG.
The original code comment claimed locators were only used for multipart
upload clone_range, which is no longer supported. However, RGW still uses
locators for the fundamental object naming scheme, so this check was
incorrectly blocking basic RGW operations.
This fixes s3tests PutObject failing with HTTP 500 / internal error -95 Signed-off-by: Kautilya Tripathi <kautilya.tripathi@ibm.com>
This adds singleton tests of rgw to crimson. In classical OSD both
ubuntu and centos build are supported. However the crimson OSD only
provide centos build so cannot symlink all the files directly.
Instead of linking entire subdirectories the crimson suite uses
selective symlinks for the required yaml files.
crimson/osd: make load_obc(obc, md_ref) return void
load_obc() taking an already-resolved loaded_object_md_t::ref is
synchronous, because it just populates obc state, it does yield.
Returning an errorated future was unnecessary and caused a
-Wunused-result warning at its only call site:
ECRecoveryBackend::maybe_load_obc().
In this change, we change it to return void and deduplicate the OBC
population logic: the private async overload (taking future<md_ref>)
now validates ssc and returns object_corrupted on failure.
This silences the warning, and simpler this way. The async error
propagation is preserved.
Kyr Shatskyy [Tue, 27 Jan 2026 18:17:04 +0000 (19:17 +0100)]
qa/standalone/misc: make less noise for asok calculation
The $() notation not only calls the function, it also creates subshell,
which is a separate process. Additionally in debug mode all the content
of the function get_asok_path is printed out in the logs each time
whenever it is called, for example:
Instead of calling get_asok_path each time we need to define osd.0,
etc. asok file path, we just predefine corresponding variables.
It not only avoids extra resource usage, but also removes a lot of
noise from the logs.
When graph walks is complete, it will actually be possible link to
supported without repeating the links. The matrix implementation doesn't
support this.
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
* refs/pull/67961/head:
qa/distros: link random distro to supported
qa/distros: add .qa links
qa: remove special chars from supported-random-distro
qa: remove redundant single-container-host
qa/distros/container-hosts: remove centos8
qa: remove distros/podman
qa: switch from distros/podman to supported-container-hosts
Kefu Chai [Sun, 29 Mar 2026 11:41:48 +0000 (19:41 +0800)]
crimson/osd: remove unnecessary named string for --smp value
The local variable `smp` is used only in the two immediately following
statements. Inline the fmt::format() call into emplace_back() and pass
reactor_num directly to the logger.
Kefu Chai [Sun, 29 Mar 2026 11:39:40 +0000 (19:39 +0800)]
crimson/osd: make early_config_t::to_ptr_vector private
The helper is an implementation detail of get_early_args() and
get_ceph_args(). Making it private prevents callers from inadvertently
holding the returned const char* pointers past the lifetime of the
input vector. Also fix the truncated doc-comment ("must not outlive in").
Shraddha Agrawal [Thu, 19 Mar 2026 08:01:28 +0000 (13:31 +0530)]
crimson/osd/pg_recovery: call MOSDPGRecoveryDelete instead of MOSDPGBackfillRemove
This commit fixes the abort in Recovered::Recovered.
There is a race to acquire the OBC lock between backfill and
client delete for the same object.
When the lock is acquired first by the backfill, the object is
recovered first, and then deleted by the client delete request.
When recovering the object, the corresponding peer_missing entry
is cleared and we are able to transition to Recovered state
successfully.
When the lock is acquired first by client delete request, the
object is deleted. Then backfill tries to recover the object,
finds it deleted and exists early. The stale peer_missing
entry is not cleared. In Recovered::Recovered, needs_recovery()
sees this stale peer_missing entry and calls abort.
The issue is fixed by sending MOSDPGRecoveryDelete from the client
path to peers and waiting for MOSDPGRecoveryDeleteReply in
recover_object.
Ville Ojamo [Tue, 31 Mar 2026 06:51:15 +0000 (13:51 +0700)]
doc/ceph-volume: Fix spelling etc errors
Low-hanging spelling, punctuation, and capitalization errors.
Ignore style and other more complex issues.
Use angle brackets consistently for value placeholders.
Signed-off-by: Ville Ojamo <git2233+ceph@ojamo.eu>
Aliaksei Makarau [Tue, 31 Mar 2026 06:40:04 +0000 (08:40 +0200)]
This change introduces the shared memory communication (SMC-D) for the cluster network.
SMC-D is faster than ethernet in IBM Z LPARs and/or VMs (zVM or KVM).
bst2002git [Wed, 4 Mar 2026 15:48:20 +0000 (16:48 +0100)]
found duplicate series for the match group {fs_id="-1"}
when 1 MDS active and 2 MDS standby (on 3Node-Cluster)
found duplicate series for the match group {fs_id="-1"} on the right hand-side of the operation
many-to-many matching not allowed: matching labels must be unique on one side
Vallari Agrawal [Thu, 12 Mar 2026 13:50:00 +0000 (19:20 +0530)]
mgr/dashboard: Add 'network_mask' to nvmeof cli
This commit add the following to nvmeof cli:
0. Add new param `--network-mask` to 'subsystem add' cmd
It's a list parameter so we can pass multiple netmask by
`subsystem add --network-mask <subnet1> --network-mask <subnet2>`
1. Add new cli `subsystem add_network --network-mask <subnet>`
2. Add new cli `subsystem del_network --network-mask <subnet>`
3. Add column 'network_mask' to `subsystem list` output
4. Add column 'manual' to `listener list` output
Shraddha Agrawal [Mon, 30 Mar 2026 10:12:08 +0000 (15:42 +0530)]
qa/tasks/cephadm.py: only pass --objectstore when not bluestore
This commit ensure that we only pass --objectstore argument to
cephadm's add/apply OSD command only when the value is not the
default value, bluestore.
This is done to ensure older ceph releases, like Squid and Tentacle
do not fail, as --objectstore argument was only added in Umbrella.