debian: build with system jerasure and gf-complete
Add libjerasure-dev to Build-Depends and enable WITH_SYSTEM_JERASURE
so that the Debian package builds ec_jerasure and ec_shec plugins
against the distribution-provided libraries instead of the vendored
copies.
libjerasure-dev pulls in libgf-complete-dev, so both libraries are
covered by a single build dependency.
Add libjerasure2 to ceph-base's Depends for the runtime shared
libraries. libjerasure2 in turn depends on libgf-complete1t64.
The explicit dependency is needed because dh_shlibdeps excludes
erasure-code plugins from automatic dependency scanning (they are
loaded via dlopen at runtime).
The distro-packaged jerasure and gf-complete are from the same
upstream git snapshots (2017/04/10) as ceph's vendored copies.
gf-complete source is byte-identical. jerasure differs only in
additional null-pointer checks and error handling in jerasure.c,
plus an extra galois_uninit_field() function that ceph does not use.
All function signatures ceph depends on are present and compatible.
cmake: add WITH_SYSTEM_JERASURE option for system jerasure and gf-complete
Add a cmake option to build ceph's erasure code plugins (ec_jerasure
and ec_shec) against system-provided jerasure and gf-complete libraries
instead of the vendored copies.
This allows downstream distributions to build with their own packaged
versions of these libraries. For instance, Debian has shipped
libjerasure-dev and libgf-complete-dev as build dependencies for ceph
since 2021, but the build always used the vendored copies because there
was no cmake option to use the system ones.
Using system libraries also lets distributions benefit from any
optimizations or fixes applied to their packages without having to
carry patches against ceph's vendored copies. For example, the vendored
gf-complete requires a downstream -O1 workaround to avoid emitting
SSE 4.1 instructions that crash on older CPUs. But with system libraries,
that becomes the library package's responsibility.
The option is OFF by default, preserving the current behavior of
building from vendored sources.
A new FindJerasure.cmake module locates the system jerasure and
gf-complete headers and libraries, and creates the Jerasure::jerasure
imported target with the same target name that the vendored build now
provides (see previous commit).
cmake/erasure-code: provide vendored jerasure as Jerasure::jerasure target
Wrap the vendored jerasure and gf-complete object libraries into a
static library (jerasure_vendored) and expose it via a Jerasure::jerasure
alias target. This prepares for an upcoming WITH_SYSTEM_JERASURE option
that will provide the same target backed by system libraries.
Split jerasure_init.cc (ceph's own galois field initialization glue)
into a separate jerasure_init_objs target, since it is not part of the
jerasure library and must always be built from ceph's source.
Normalize shec's include paths to use bare #include "jerasure.h"
instead of #include "jerasure/include/jerasure.h", consistent with the
jerasure plugin and compatible with both vendored and system headers.
No functional change: ec_jerasure, ec_shec, and their legacy flavor
variants produce identical binaries.
Use prompts that cannot be selected in CLI examples. Remove warnings
about selectable prompts.
Use privileged prompt for ceph commands.
Use inline formatting consistently.
Improve capitalization.
Signed-off-by: Ville Ojamo <git2233+ceph@ojamo.eu>
Reviewed-by: Patrick Donnelly <pdonnell@ibm.com> Reviewed-by: Redouane Kachach <rkachach@redhat.com> Reviewed-by: Adam C. Emerson <aemerson@redhat.com>
test/crimson/seastore: add missing crimson::gtest to link libraries
unittest-transaction-manager, unittest-omap-manager,
unittest-btree-lba-manager, and unittest-seastore all include
gtest_seastar.cc but were not explicitly linking against crimson::gtest.
This worked previously because gtest symbols were pulled in transitively,
but with gcc-toolset-13 and LTO the transitive dependency is no longer
satisfied, producing undefined reference errors for testing::Message,
testing::Test, testing::AssertionSuccess, etc.
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.
Previously s3tests_java.py set JAVA_HOME using the `alternatives`
command. That had issues in that `alternatives` is not present on all
Ubuntu systems, and some installations of Java don't update
alternatives. So instead we look for a "java-8" jvm in /usr/lib/jvm/
and set JAVA_HOME to the first one we find.
Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
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.
Dror Guy [Mon, 23 Mar 2026 07:08:47 +0000 (09:08 +0200)]
osd: fix PrimaryLogPG op ordering during laggy state
When ops are kicked back from the waiting lists unreadable, degraded,
blocked etc during laggy state, they bypass newer ops in the
waiting_for_readable list. This fix places the kicked back waiting
list directly into the waiting_for_readable list with the right op order.
Fixes: https://tracker.ceph.com/issues/75403 Signed-off-by: Dror Guy <drorg@ionir.com>
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