Extend a stronger vocabulary of C++ Concepts and helpful functions
via an internal collection of some Concepts not currently in the
C++ Standard along with useful predicates for compile-time capability
queries and runtime feature invocation.
The mini-library provides general capabilities meant for writing clean
algorithms, doing metaprogramming, or offering better support for
general operations involving sequences, and so on:
Concepts for common container categories (like contiguous sequence,
ordered associative, etc.);
Capability queries for container operations such as append, prepend,
range insertion, etc.;
Aggregate capability checks such as “can_append”, “can_append_range”,
“can_erase_if”, etc.;
Utility helpers that select appropriate operations for containers, like “push_back”,
"insert_front", etc.;
The tests cover standard STL containers, custom minimal test containers for
fallback behavior, negative concept edge cases, and an example container-generic
algorithm that composes several helpers.
Assisted-by: Codex:GPT-5 Signed-off-by: Jesse F. Williamson <jfw@ibm.com>
src/crimson/osd: statically link the ISA plugin in crimson-osd
Problem:
Before this change, when the ISA plugin (classic build, dlopen'd),
would try to log, it'd segfault due to null g_ceph_context.
We need a way to make logging work for EC plugins in crimson.
Solution:
By building the ISA plugin WITH_CRIMSON, its logging is
routed to seastar's logger, solving the issue.
It is not build separately and dlopen'd like in classic because
doing so would require the plugin to have its own seastar logger
copy, an undesirable outcome.
It is a statically built library in the crimson-osd binary, and thus
it shares the single seastar logger. The library is linked with
--whole-archive so the self-registration constructor is not dropped.
src/erasure-code: support statically-linked (built-in) plugins
This commit adds the functionality in EC plugin registry to support
built in (statically linked) plugins. This is done by 2 main changes:
1. introducing a new map, builtin_plugins, where plugins can register
a factory for itself at startup.
2. load() now first checks if the plugin is builtin and instantiates it,
otherwise it falls back to dynamically linking the plugin.
qa/tests: drop parens from all health-code ignorelist entries
Monitor.cc logs a "Health check cleared: <CODE> (was: ...)" line
for any health check clearing mid-test, with the code bare (no
parens) -- while the "Health check failed"/"Health check failed
(unmute)" lines wrap the code in parens. Every \(CODE\) entry in
this file therefore only matches the raise/failed form and misses
the corresponding cleared form, the same gap just fixed for
POOL_FULL.
Drop the escaped parens from the remaining entries so each matches
both log forms, consistent with the bare entries already present
(OSD_ROOT_DOWN, MDS_INSUFFICIENT_STANDBY, POOL_FULL).
mgr/dashboard: fix stale metrics in hardware dashboards
Switch all stat panels in the hardware and hardware compression
dashboards from lastNotNull to last reduceFunction. When a host is
unreachable or node-proxy stops, metric silence is ambiguous — it
could mean host down, agent crash, or scrape failure. lastNotNull
freezes the last known value (e.g. 4 NVMe drives), causing
inconsistency with the global Overview which reflects live count
reductions.
Use last so panels show N/A when no current data arrives.
Kobi Ginon [Tue, 30 Jun 2026 16:07:25 +0000 (19:07 +0300)]
mgr/cephadm: wait for active MDS during fail_fs upgrade
When fail_fs is enabled with max_mds > 1, _prepare_for_mds_upgrade()
issued fs fail and then continued unconditionally, skipping the
up:active wait. _complete_mds_upgrade() also set joinable=true without
waiting for in-rank MDS to recover.
Wait for all in-rank MDS to reach up:active before proceeding with the
upgrade and after re-joining the filesystem. Add fs.ready to the
mds_upgrade_sequence verify task so ceph-fuse teardown does not race
with MDS still in up:rejoin.
qa/tasks/dnsmasq: set no-resolv on the systemd-resolved path
On the systemd-resolved (debian) path, dnsmasq has only address= records
and no upstream, so queries it can't answer locally are forwarded via
/etc/resolv.conf which points back at systemd-resolved, which routes
the cname domains back to dnsmasq. The resulting loop burns a 5s
resolver retry per round trip which manifests itself in rgw s3tests
on Ubuntu running too slow hitting the job timeout.
Set no_resolv on that path so dnsmasq answers authoritatively and never
forwards. The rpm/NetworkManager path is unchanged, as dnsmasq there is
the system resolver and must forward upstream.
mgr/dashboard : Access denied issue for cephfs-mgr role
fixes : https://tracker.ceph.com/issues/78414 Signed-off-by: Abhishek Desai <abhishek.desai1@ibm.com>
Conflicts:
src/pybind/mgr/dashboard/tests/test_access_control.py
- conflict due to other access denied PRs
Merge pull request #69824 from mohit84/backfill_stuck
crimson/osd: fix backfill deadlock in BackfillState::Waiting
BackfillState::Enqueuing unconditionally posts RequestWaiting{}
when budget available return false. Waiting can exit only via
ObjectPushed which requires an in-flight push. If the budget
is exhausted with no pushes in flight no objectPush will ever
arrive and the PG stalls permanently.
Solution: Introduce a dedicated BudgetBlocked state. When
budget_available() is false and tracked_objects_completed()==true
post RequestBudgetBlocked{} instead of RequestWaiting{}.
BudgetBlocked calls get_backfill_throttle() to suspend until a slots
free up, then fires BudgetAvailable{} which transitions directly back
to Enqueuing to dispatch the next batch of pushes.
mgr/dashboard: fix notification re-navigation when already on page
When a notification is clicked in the panel while the user is already
on the notifications page, the selected notification now updates
correctly by bypassing the preselect guard for query param changes.
ShreeJejurikar [Sat, 20 Jun 2026 10:58:49 +0000 (16:28 +0530)]
rgw: support kafka 4.x brokers
librdkafka submodule
Vendors librdkafka v2.12.1 as a submodule (default) and teaches the
notification teuthology task to set up Kafka 4.x KRaft brokers. The
distro-shipped librdkafka 1.6.1 cannot SCRAM-auth against Kafka 4.x
brokers (#75900); the bundled version fixes that. Build with
WITH_SYSTEM_RDKAFKA=ON to opt back into the distro library (floor 2.6.1).
follwinf changes needed with teh submodule:
* build kafka_stub only in case of system librdkafka
* use the same header location in submodule and system
* supress compilation warning to avoid -WError issues
2.12.1 matches Fedora(44)'s current librdkafka-devel, so the vendored copy
tracks a version that distro packagers have already vetted rather than
whichever release happens to be latest upstream.
The teuthology version matrix picks one of {3.9.2, 4.1, 4.2, 4.3} per run.
3.9.2 covers the last Zookeeper-based release for the migration cohort.
4.1/4.2/4.3 track Apache's current three supported minor lines and are
resolved to the latest patch at test time via dlcdn.apache.org/kafka/, so
new patches within a supported minor need no PR update. A new minor line
(4.4) requires renaming one YAML.
* new java version (17) is needed for kafka 4.2 and up (we wil use it on
all version)
* kerberos task need to run before the kafka install task
After pulling this branch, fetch the new submodule:
pujaoshahu [Mon, 11 May 2026 13:07:53 +0000 (18:37 +0530)]
mgr/dashboard: [Dashboard] Incorrect action button label "Edit User" instead of "Save" in Edit User page
Fixes: https://tracker.ceph.com/issues/76507 Signed-off-by: pujaoshahu <pshahu@redhat.com>
Summary: Updated submit button labels in edit forms to display "Save" instead of "Edit User", "Edit Pool", or "Edit Host" for better UX consistency, while keeping form titles unchanged.
Modified Files
role-form.component.ts: Added submitAction property to control submit button label by mode; edit mode uses Save changes, create mode uses Create Role.
role-form.component.html: Submit button now binds to submitAction instead of action/resource text.
role-form.component.spec.ts: Added tests for submitAction behavior in create and edit modes.
user-form.component.ts: Uses submitAction property; edit mode label updated to Save changes.
Naman Munet [Fri, 17 Jul 2026 09:52:49 +0000 (15:22 +0530)]
mgr/dashboard: Edit should support setting one or more rgw service configuration individually, when multiple rgw service exist
fixes: https://tracker.ceph.com/issues/78332
Before
===
The configuration form had a TypeScript compilation error and could not properly support editing client-specific configurations. The form lacked the ability to:
- Configure different values for specific client entities (e.g., client.rgw.*, client.admin, client.radosgw-gateway)
- No way to Add/remove multiple client entity entries dynamically
- No way to provide autocomplete suggestions for existing client entities
After
===
Users can now edit configuration options individually for any client entity, with a clean UI that supports:
- Generic client entity support: Configure any client.* entity (RGW daemons, admin users, CephFS clients, etc.)
- Autocomplete with custom values: Select from existing client entities or enter custom ones (e.g., client.rgw.my-daemon, client.admin)
- Dynamic entry management: Add/remove multiple client configuration entries
Nizamudeen A [Wed, 22 Jul 2026 06:29:36 +0000 (11:59 +0530)]
mgr/dashboard: replace gherkin-lint with prettier
I checked a couple of gherkin linters as an alternative but all of them
are not really well maintained. There are couple of new projeects but
even they are simply maintained by a single guy so i don't think it'll
get enough contributions later on. So instead, I am moving it to
prettier. Although we miss some functional validation, it'll take care
of some basic formatting.
Fixes: https://tracker.ceph.com/issues/78528 Signed-off-by: Nizamudeen A <nia@redhat.com>
crimson/seastore: keep on-page checksum in sync after merge_content_to
When a rewrite transaction publishes via no-conflict handoff, merge_content_to
can update an already CRC-stamped initial-pending fixedkv page (copy-dest of a
concurrent split). It refreshed last_committed_crc but not the in-extent phy
checksum, so the page could be written with new content and a stale stamp.
Debug asserts only compare last_committed_crc to calc_crc32c(), so the mismatch
survived until a later cold read aborted with "fixedkv extent checksum
inconsistent".
Recalculate the CRC and call update_in_extent_chksum_field together in both
LBALeafNode and FixedKVInternalNode merge_content_to, matching
apply_delta_and_adjust_crc / update_lba_mappings.