Commit Graph

1716 Commits

Author SHA1 Message Date
J. Eric Ivancich
c3c4a139ad
Merge pull request #70505 from ivancich/wip-fix-ceph-spec-in
rgw: update rpm and debian builds

Reviewed-by: Thomas Serlin <tserlin@redhat.com>
2026-07-28 16:16:58 -04:00
Kefu Chai
757d192b43
Merge pull request #69726 from tchaikov/wip-drop-bluestore-pmem
blk,build: drop BlueStore PMEM support

Reviewed-by: Igor Fedotov <igor.fedotov@croit.io>
2026-07-28 13:27:17 +08:00
J. Eric Ivancich
855a5edf70 rgw: update build config to streamline builds
Some binaries and man pages were not included in rpm builds or debian
builds.  This adds those artifacts to ceph.spec.in
debian/ceph-common.install and debian/radosgw.install.

Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
2026-07-27 13:09:48 -04:00
Adam Emerson
f4a2c0e7f3
Merge pull request #67732 from adamemerson/wip-policy-ux
rgw: Policy evalaution logging

Reviewed-by: Matthew N. Heler <matthew.heler@hotmail.com>
Reviewed-by: Oguzhan Ozmen <oozmen@bloomberg.net>
2026-07-24 12:42:31 -04:00
Daniel Gryniewicz
77f6a3b47e
Merge pull request #68291 from dang/wip-dang-standalone
RGW Standalone build
2026-07-23 13:07:04 -04:00
ShreeJejurikar
efe54523a4 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:

    git submodule update --init src/librdkafka

Fixes: https://tracker.ceph.com/issues/77336

Signed-off-by: ShreeJejurikar <shreemj8@gmail.com>
Co-authored-by: Yuval Lifshitz <ylifshit@ibm.com>
2026-07-22 10:29:04 +00:00
Adam C. Emerson
5a176d3f83
rgw/policy: Add rgw-policy-test command line tool
Annotated evaluation of a policy.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2026-07-21 17:55:08 -04:00
Daniel Gryniewicz
5f01d5c058 RGW - Standalone - Add a standalone build target and RPM
Add a build target that builds standalone RGW in addition to normal RGW,
and add an RPM for it that only installs the necessary bits.

Signed-off-by: Daniel Gryniewicz <dang@fprintf.net>
2026-07-06 11:19:42 -04:00
Sun Yuechi
4598137a81 ceph.spec.in: add support for openRuyi
Signed-off-by: Sun Yuechi <sunyuechi@iscas.ac.cn>
2026-07-06 01:22:53 +08:00
Sun Yuechi
274fa2e27c ceph.spec.in: switch more build deps to pkgconfig() and python3dist()
Signed-off-by: Sun Yuechi <sunyuechi@iscas.ac.cn>
2026-07-06 01:22:53 +08:00
Kefu Chai
80b9067286 blk,build: drop BlueStore PMEM support
BlueStore's PMEMDevice backend targets byte-addressable persistent
memory exposed as a DAX device, in practice Intel Optane DC persistent
memory. Intel Optane has been discontinued since 2021 and there is no
mainstream replacement, so the backend has effectively no hardware left
to run on. It was always experimental and has seen no functional change
since the DML/DSA offload landed in 2022; every commit to it since has
been a formatting sweep.

Keeping it builds in a chain of dependencies that nothing else needs:
libpmem, libndctl and libdaxctl, plus dml for the DSA offload that only
works on a Sapphire Rapids CPU. Remove the backend and everything tied
to it.

RBD persistent write-back cache (WITH_RBD_RWL) still uses PMDK's
libpmemobj, so the pmdk submodule, WITH_SYSTEM_PMDK, Buildpmdk and
Findpmdk stay. WITH_SYSTEM_PMDK now depends on WITH_RBD_RWL alone, and
Buildpmdk no longer builds ndctl support.

- remove the WITH_BLUESTORE_PMEM option, HAVE_BLUESTORE_PMEM and
  HAVE_LIBDML
- delete src/blk/pmem/PMEMDevice.{cc,h} and the pmem block_device_t
- drop the pmem value from the bdev_type option
- remove the --bluestore-pmem vstart flag
- drop the libpmem, libndctl and libdaxctl build deps from debian and
  rpm, keeping libpmemobj for RWL
- delete the Finddml, Findndctl and Finddaxctl cmake modules
- remove the DSA/DML and ndctl documentation

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-07-05 08:37:21 +08:00
Kefu Chai
8a336b6718 ceph.spec.in: drop the python3_pkgversion macro
python3_pkgversion picked the native python3 package name on RHEL7, where
python3 was python34/python36 before 7.6 (cea9d18c). RHEL7 and RHEL8 are
gone, so on every supported distro (el9, el10, fedora, suse, openEuler) it
is always 3.

Replace python%{python3_pkgversion} with python3 and drop the fallback
default. No supported distro overrides it to build against a non-default
python flavor, so that capability goes too.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-07-02 09:42:23 +08:00
Kefu Chai
e125c47466 ceph.spec.in: use python3dist() for Python BuildRequires
Many Python deps were split across %if suse / %if rhel branches only
because openSUSE spells them CamelCase (PrettyTable, PyYAML, Sphinx,
CherryPy, Routes, Jinja2) and fedora/rhel/openEuler lowercase. The
python3dist() provides resolve the same on el9, el10, openEuler and
openSUSE, so those splits collapse to single lines.

Spell the deps python%{python3_pkgversion}dist(), matching the spec's
existing python%{python3_pkgversion}-Foo convention. Version constraints
and feature guards are preserved.

The dist name is the PyPI project name, not always the rpm name minus
python3-: python3-dateutil provides python3dist(python-dateutil), and
python3-saml provides python3dist(python3-saml).

Left as package names: the bare interpreter; python3-devel and numpy-devel,
which have no python3dist() provide; the build toolchain (setuptools,
Cython, pip, wheel); and the ceph-internal python3-* subpackages, which are
versioned = release deps.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-07-02 09:42:23 +08:00
Kefu Chai
8664e52d4b ceph.spec.in: use pkgconfig() for library BuildRequires
Library BuildRequires used per-distro -devel package names, some split
across %if suse / %if rhel branches only because the names differ. The
pkgconfig() virtual provides resolve identically on every rpm distro; the
spec already relies on them for fuse3, systemd and udev.

Switch every library dependency that ships a .pc to pkgconfig(), preserving
version constraints and feature guards. This collapses the suse-vs-rhel
naming splits (nss, keyutils, openssl, ldap, ibverbs, rdmacm, lz4, thrift,
libcryptopp) and the dedicated split blocks (nlohmann_json, lttng-ust,
babeltrace, expat) into single lines, and folds the duplicated xmlsec1 devel
packages together.

Left as package names: libaio and xfsprogs ship no reliable .pc; gperftools
carries version and tcmalloc-variant logic; numa is unconditional on rhel
but crimson-only on suse; and the xmlsec1 runtime backend plugins are
runtime test deps, not build-time pkgconfig() deps.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-07-02 09:42:23 +08:00
Kefu Chai
eb595fbad5 ceph.spec.in: drop RHEL <= 8 support
RHEL 8 and CentOS 8 left the supported test matrix in 2023 (449db416,
7a1dce1e). RHEL 8 has also been unbuildable since CMakeLists.txt began
requiring Python >= 3.9: it ships python 3.6 by default, so cmake refuses
to configure. The spec still carried the el8 conditionals, so assume
rhel >= 9 and drop them:

- remove branches reachable only on rhel <= 8: the gperftools 2.6.1
  BuildRequires, the tracker-36508 tcmalloc-libs requirement, and the
  dataclasses backport, which also targeted that dead python 3.6
- collapse "rhel >= 8" and "rhel >= 9" to plain "rhel"; with the floor at
  9 this is a no-op for rhel 9/10, fedora, suse and openEuler
- keep the rhel 9-vs-10 checks (== 9, < 10, >= 10)

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-07-02 09:42:23 +08:00
Rishabh Dave
bf5080c08c client: add client code to allow snap metadata mutations
Fixes: https://tracker.ceph.com/issues/66293
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2026-06-18 11:57:39 +05:30
Shweta Bhosale
8da5a001d6
Merge pull request #66864 from ShwetaBhosale1/fix_issue_74045_ssh_hardning_feature
mgr/cephadm: Cephadm hardening (SSH channel)
2026-06-15 11:03:35 +05:30
Kefu Chai
84ac1de643
Merge pull request #69421 from ShwetaBhosale1/fix_issue_77340_remove_-P_from_shebang_flags
ceph.spec.in: disable -P in python shebang for cephadm binary

Reviewed-by: Redouane Kachach <rkachach@redhat.com>
Reviewed-by: John Mulligan <jmulligan@redhat.com>
Reviewed-by: Kefu Chai <k.chai@proxmox.com>
2026-06-13 09:13:48 +08:00
Redouane Kachach
33df2a3965
Merge pull request #67466 from rkachach/fix_new_secrets_mgr_module_v0
Adding new secrets mgr module support

Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
2026-06-12 12:48:32 +02:00
Shweta Bhosale
fbfe653454 ceph.spec.in: disable -P in python shebang for cephadm binary
Fixes: https://tracker.ceph.com/issues/77340
Signed-off-by: Shweta Bhosale <Shweta.Bhosale1@ibm.com>
2026-06-12 10:42:48 +05:30
David Galloway
b6f8147510
Merge pull request #69408 from tchaikov/wip-spec-update-alternatives
ceph.spec.in: add update-alternatives as runtime dep and correct macro call
2026-06-11 14:01:05 -04:00
Redouane Kachach
8a28a1578e
mgr: adding ceph_secrets_xxx.py files to the build/packaging
Fixes: https://tracker.ceph.com/issues/74562
Assisted-by: Claude <claude.ai>
Assisted-by: ChatGPT <chatgpt.com>
Signed-off-by: Redouane Kachach <rkachach@ibm.com>
2026-06-11 10:58:06 +02:00
Kefu Chai
7fc3a9e12f ceph.spec.in: require update-alternatives for the osd scriptlets
ceph-osd-crimson and ceph-osd-classic call update-alternatives in their
%posttrans and %preun scriptlets but don't depend on it. declare it as a
scriptlet dependency so the binary is there when they run.

Fixes: https://tracker.ceph.com/issues/77323
Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-06-11 13:32:25 +08:00
Kefu Chai
b571051663 ceph.spec.in: use %{_sbindir} instead of ${_sbindir} in osd %preun
a37b5b5bde added %preun scriptlets that use ${_sbindir}, which is
shell syntax rather than an rpm macro, so it expands to empty at run
time and the scriptlet runs "/update-alternatives", failing on
uninstall/upgrade with:

  /var/tmp/rpm-tmp.K1fvm3: line 2: /update-alternatives: No such file or directory
  error: %preun(ceph-osd-crimson-2:20.3.0-5054.g33c1d671.el9.x86_64) scriptlet failed, exit status 127
  Error in PREUN scriptlet in rpm package ceph-osd-crimson.

use %{_sbindir}, like the %posttrans --install lines already do, so it
expands to /usr/sbin/update-alternatives at build time.

Fixes: https://tracker.ceph.com/issues/77323
Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-06-11 13:32:14 +08:00
Shweta Bhosale
3635d77507 cephadm: Add cephadm_invoker.py in cephadm rpm at /usr/libexec/cephadm_invoker.py
Fixes:https://tracker.ceph.com/issues/74045
Signed-off-by: Shweta Bhosale <Shweta.Bhosale1@ibm.com>
2026-06-11 10:40:33 +05:30
David Galloway
9deb154db1
Merge pull request #68368 from kginonredhat/issue-75389-yaml-and-jinja2-deps-on-centos-distro
ceph.spec: declare PyYAML and Jinja2 Requires for cephadm RPM
2026-06-10 10:32:33 -04:00
John Mulligan
3700e6abaf
Merge pull request #68825 from phlogistonjohn/jjm-smb-ctl-tool-fe
smb: add a smb remote control client tool frontend

Reviewed-by: Avan Thakkar <athakkar@redhat.com>
Reviewed-by: Anoop C S <anoopcs@cryptolab.net>
2026-06-09 14:21:32 -04:00
Kefu Chai
ad2da1cbc8
Merge pull request #69295 from tchaikov/wip-c-ares
ceph.spec.in: only require c-ares >= 1.28 on el10+

Reviewed-by: Kautilya Tripathi <kautilya.tripathi@ibm.com>
2026-06-05 18:45:08 +08:00
Kefu Chai
0ac9881841
Merge pull request #68989 from tchaikov/wip-slim-mgr-module
debian,rpm: split ceph-mgr-modules-core into per-module packages

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: John Mulligan <jmulligan@redhat.com>
2026-06-05 12:53:45 +08:00
Kefu Chai
9070653768 ceph.spec.in: only require c-ares >= 1.28 on el10+
87e233bb26 added an unconditional
"Requires: c-ares >= 1.28.0" to ceph-osd-crimson: seastar links
ares_query_dnsrec, which c-ares only grew in 1.28, and the libcares.so.2
SONAME doesn't carry the version so rpm can't infer the floor itself.

But the floor only earns its place where the build links the symbol
against a newer c-ares than the runtime has, and that's an EL thing.
el10's minors cross 1.28 under one $releasever (10.1 ships 1.25, 10.2
ships 1.34), so a builder rolls to 1.34 while a frozen 10.1 node stays on
1.25; without the floor the rpm installs there and the osd then crashes
on the missing symbol. el9 builds the legacy ares_query path and doesn't
need it at all.

Fedora and SUSE don't have the skew: one c-ares per release, built and
run against the same one, so the auto libcares.so.2 dep covers them. So
pin it only on el10+, arch-qualified with %{?_isa}.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-06-05 10:07:37 +08:00
John Mulligan
880d4b4a9c ceph.spec.in: enable new python-common packaging mode on el10
Enable the new packaging mode for python-common by default on el10-style
distributions.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2026-06-04 09:57:09 -04:00
Kautilya Tripathi
87e233bb26 ceph.spec.in: require c-ares >= 1.28 for ceph-osd-crimson
Seastar's DNS stack uses ares_query_dnsrec when built against c-ares
>= 1.28 (ARES_VERSION >= 0x011c00). Only ceph-osd-crimson links that
path; classic-osd does not, so add the version floor on the crimson
subpackage only.

Rocky Linux 10 shaman builds use docker.io/rockylinux/rockylinux:10
(os-release 10.1), but dnf builddeps resolve against the live Rocky 10
BaseOS/AppStream repos, which track the newest minor and install
c-ares-devel/c-ares 1.34.6. CMake links ceph-osd-crimson against that
library. Teuthology nodes are provisioned as Rocky 10.1 and install only
the requested Ceph packages without a full distro upgrade, so their
baseline c-ares stays at 1.25.0 (< 1.28, no ares_query_dnsrec). Install
succeeds but OSD startup fails with "undefined symbol: ares_query_dnsrec".

Require c-ares >= 1.28 on ceph-osd-crimson so dnf upgrades to a suitable
libcares (1.34.6 is already in Rocky 10.1 baseos) or fails cleanly at
install. Ubuntu crimson CI does not show this mismatch: the same LTS is
used for building and testing, and maintainers do not bump upstream
package versions across an LTS lifecycle (only cherry-picked fixes), so
build-time and runtime libc-ares stay aligned.

Signed-off-by: Kautilya Tripathi <kautilya.tripathi@ibm.com>
2026-06-04 13:01:50 +05:30
Kobi Ginon
33c1d671de ceph.spec: declare PyYAML and Jinja2 Requires for cephadm RPM
cephadm's zipapp imports yaml and jinja2. When the package is built
with cephadm_bundling and RPM-sourced deps (--without cephadm_pip_deps),
only BuildRequires were listed for jinja2 and no runtime Requires were
declared for PyYAML or Jinja2, so minimal "dnf install cephadm" could
fail with ModuleNotFoundError. The unbundled cephadm case also lacked
PyYAML.

Add matching BuildRequires/Requires in the rpm-bundle branch and
Requires (plus SUSE naming for Jinja2/PyYAML) in the no-bundle branch.

Fixes: https://tracker.ceph.com/issues/75389
Signed-off-by: Kobi Ginon <kginon@redhat.com>
2026-06-04 03:06:06 +03:00
John Mulligan
2439f9a045 ceph.spec.in: add support for ceph-smb-ctl entrypoint script
This package is conditional on the new `pypkg` packaging mode.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2026-06-02 10:43:33 -04:00
Kefu Chai
f2e29ed8bf debian, rpm: add ceph-mgr-modules-standard meta-package
ceph-mgr-modules-core was split into per-module packages so that users
only need to install what they actually use. To ease migration for
existing deployments that want the full former set, add a meta-package
ceph-mgr-modules-standard that pulls in all modules which were
previously bundled in ceph-mgr-modules-core.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-06-01 16:00:26 +08:00
Kefu Chai
fab568213a debian, rpm: add ceph-mgr-cli-api package
cli_api is a new module in this release (not previously shipped in
ceph-mgr-modules-core), so it gets its own package without any
Breaks/Replaces or Obsoletes against the old monolithic package.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-06-01 16:00:26 +08:00
Kefu Chai
ff4e000057 rpm: split ceph-mgr-modules-core into per-module packages
ceph-mgr-modules-core has historically bundled always-on modules
together with optional ones, forcing users to install modules and their
dependencies even when they have no use for them. Split each optional
module into its own package so users and distributions can install only
what they need.

ceph-mgr-modules-core is trimmed to the 10 always-on modules defined
in src/mon/MgrMonitor.cc: balancer, crash, devicehealth, orchestrator,
pg_autoscaler, progress, rbd_support, status, telemetry, volumes.
Each optional module now follows the pattern of ceph-mgr-k8sevents and
ceph-mgr-rook.

New packages carry Obsoletes: ceph-mgr-modules-core < 21.0.0 for
proper upgrade path.

The split also exposes cross-module Python dependencies: modules
co-installed in ceph-mgr-modules-core could freely import each other,
but once separated into individual packages those imports require
explicit Requires entries. Now the inter-dependencies are expressed
properly in ceph.spec.in.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-06-01 16:00:26 +08:00
Kefu Chai
b3c5e7df9f rpm: deduplicate mgr module scriptlets with a macro
Define %ceph_mgr_module_scripts() to emit the identical %post/%postun
pair for each optional mgr module package, replacing the 5 existing
hand-written copies (dashboard, diskprediction-local, rook, k8sevents,
cephadm) with a single call site per package. Subsequent commits that
introduce new mgr module packages can use the macro from the start.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2026-06-01 16:00:26 +08:00
John Mulligan
92ead705db ceph.spec.in: add new --with pypkg to be passed on to cmake
Add a new --with pypkg option that passes WITH_PYPKG to cmake.
This allows building with the new (experimental) python packaging
support. If this proves useful a future change can consider enabling
by default in some conditions.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2026-05-06 09:33:31 -04:00
Kefu Chai
dacf8cbc90
Merge pull request #59650 from xsuchy/patch-2
rpm: Migrate license in ceph.spec to SPDX

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
2026-05-05 14:44:51 +08:00
Patrick Donnelly
16718094ee
Merge PR #64561 into main
* refs/pull/64561/head:
	ceph-exporter: fix systemd unit

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
Reviewed-by: Kefu Chai <k.chai@proxmox.com>
2026-05-04 08:16:33 -07:00
Patrick Donnelly
889a86cfb5
Merge PR #67978 into main
* refs/pull/67978/head:
	rgw/kafka: honor verify-ssl and separate cached connections

Reviewed-by: Yuval Lifshitz <ylifshit@redhat.com>
2026-05-02 16:21:55 -07:00
Alex Ainscow
5007efad27
Merge pull request #66258 from aainscow/read_only_execs
osd/rados/rgw/cephfs: Modernize cls interface with compile time safety

Reviewed-by: Bill Scales <bill_scales@uk.ibm.com>
Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Adam Emerson <aemerson@ibm.com>
2026-04-28 13:56:07 +01:00
Patrick Donnelly
49753d2e6d
Merge PR #67032 into main
* refs/pull/67032/head:
	qa: add trivial cephfs-tool bench test
	doc/cephfs: add cephfs-tool documentation
	tools/cephfs: add new cephfs-tool

Reviewed-by: Venky Shankar <vshankar@redhat.com>
2026-04-15 09:11:34 -04:00
Patrick Donnelly
a6245eec07
tools/cephfs: add new cephfs-tool
This patch introduces `cephfs-tool`, a new standalone C++ utility
designed to interact directly with `libcephfs`.

While the tool is architected to support various subcommands in the
future, the initial implementation focuses on a `bench` command to
measure library performance. This allows developers and administrators
to benchmark the userspace library isolated from FUSE or Kernel client
overheads.

Key features include:
* Multi-threaded Read/Write throughput benchmarking.
* Configurable block sizes, file counts, and fsync intervals.
* Detailed statistical reporting (Mean, Std Dev, Min/Max) for throughput and IOPS.
* Support for specific CephFS user/group impersonation (UID/GID) via `ceph_mount_perms_set`.

As an example test on a "trial" sepia machine against the new LRC, I
used a command like:

    pdonnell@trial154:~$ env CEPH_ARGS="--log-to-stderr=false --log-to-file=false --log-file=/tmp/bench.log" ./cephfs-tool -c ~/ceph.conf -k ~/keyring -i scratch --filesystem scratch  bench --root-path=/pdonnell --files 256 --size=$(( 128 * 2 ** 20 )) --threads=8 --iterations 3
    Benchmark Configuration:
      Threads: 8 | Iterations: 3
      Files: 256 | Size: 134217728
      Filesystem: scratch
      Root: /pdonnell
      Subdirectory: bench_run_d942
      UID: -1
      GID: -1

    --- Iteration 1 of 3 ---
    Starting Write Phase...
      Write: 2761.97 MB/s, 21.5779 files/s (11.864s)
    Starting Read Phase...
      Read:  2684.36 MB/s, 20.9716 files/s (12.207s)

    --- Iteration 2 of 3 ---
    Starting Write Phase...
      Write: 2698.51 MB/s, 21.0821 files/s (12.143s)
    Starting Read Phase...
      Read:  2682.16 MB/s, 20.9544 files/s (12.217s)

    --- Iteration 3 of 3 ---
    Starting Write Phase...
      Write: 2720.69 MB/s, 21.2554 files/s (12.044s)
    Starting Read Phase...
      Read:  2695.18 MB/s, 21.0561 files/s (12.158s)

    *** Final Report ***

    Write Throughput Statistics (3 runs):
      Mean:    2727.06 MB/s
      Std Dev: 26.2954 MB/s
      Min:     2698.51 MB/s
      Max:     2761.97 MB/s

    Read Throughput Statistics (3 runs):
      Mean:    2687.24 MB/s
      Std Dev: 5.68904 MB/s
      Min:     2682.16 MB/s
      Max:     2695.18 MB/s

    File Creates Statistics (3 runs):
      Mean:    21.3051 files/s
      Std Dev: 0.205433 files/s
      Min:     21.0821 files/s
      Max:     21.5779 files/s

    File Reads (Opens) Statistics (3 runs):
      Mean:    20.994 files/s
      Std Dev: 0.0444456 files/s
      Min:     20.9544 files/s
      Max:     21.0561 files/s

    Cleaning up...

For a 25Gb NIC, this is just about saturating the sticker bandwidth with
a single shared mount and 8 threads. For a per-thread mount:

    pdonnell@trial154:~$ env CEPH_ARGS="--log-to-stderr=false --log-to-file=false --log-file=/tmp/bench.log" ./cephfs-tool -c ~/ceph.conf -k ~/keyring -i scratch --filesystem scratch  bench --root-path=/pdonnell --files 256 --size=$(( 128 * 2 ** 20 )) --threads=8 --iterations 3 --per-thread-mount
    Benchmark Configuration:
      Threads: 8 | Iterations: 3
      Files: 256 | Size: 134217728
      Filesystem: scratch
      Root: /pdonnell
      Subdirectory: bench_run_9d1c
      UID: -1
      GID: -1

    --- Iteration 1 of 3 ---
    Starting Write Phase...
      Write: 2691.2 MB/s, 21.025 files/s (12.176s)
    Starting Read Phase...
      Read:  2486.76 MB/s, 19.4278 files/s (13.177s)

    --- Iteration 2 of 3 ---
    Starting Write Phase...
      Write: 2688.77 MB/s, 21.006 files/s (12.187s)
    Starting Read Phase...
      Read:  2496.42 MB/s, 19.5033 files/s (13.126s)

    --- Iteration 3 of 3 ---
    Starting Write Phase...
      Write: 2692.08 MB/s, 21.0319 files/s (12.172s)
    Starting Read Phase...
      Read:  2488.27 MB/s, 19.4396 files/s (13.169s)
    *** Final Report ***

    Write Throughput Statistics (3 runs):
      Mean:    2690.68 MB/s
      Std Dev: 1.40086 MB/s
      Min:     2688.77 MB/s
      Max:     2692.08 MB/s

    Read Throughput Statistics (3 runs):
      Mean:    2490.48 MB/s
      Std Dev: 4.24374 MB/s
      Min:     2486.76 MB/s
      Max:     2496.42 MB/s

    File Creates Statistics (3 runs):
      Mean:    21.0209 files/s
      Std Dev: 0.0109442 files/s
      Min:     21.006 files/s
      Max:     21.0319 files/s

    File Reads (Opens) Statistics (3 runs):
      Mean:    19.4569 files/s
      Std Dev: 0.0331542 files/s
      Min:     19.4278 files/s
      Max:     19.5033 files/s

    Cleaning up...

Or to measure file create performance:

    pdonnell@trial154:~$ env CEPH_ARGS="--log-to-stderr=false --log-to-file=false --log-file=/tmp/bench.log" ./cephfs-tool -c ~/ceph.conf -k ~/keyring -i scratch --filesystem scratch  bench --root-path=/pdonnell --files=$(( 2 ** 16 )) --size=$(( 0 * 2 ** 20 )) --threads=8 --iterations 3
    Benchmark Configuration:
      Threads: 8 | Iterations: 3
      Files: 65536 | Size: 0
      Filesystem: scratch
      Root: /pdonnell
      Subdirectory: bench_run_d435
      UID: -1
      GID: -1

    --- Iteration 1 of 3 ---
    Starting Write Phase...
      Write: 3974.77 files/s (16.488s)
    Starting Read Phase...
      Read:  14537.7 files/s (4.508s)
    Cleaning up for next iteration...

    --- Iteration 2 of 3 ---
    Starting Write Phase...
      Write: 4167.1 files/s (15.727s)
    Starting Read Phase...
      Read:  13636.3 files/s (4.806s)
    Cleaning up for next iteration...

    --- Iteration 3 of 3 ---
    Starting Write Phase...
      Write: 3863.7 files/s (16.962s)
    Starting Read Phase...
      Read:  14972.8 files/s (4.377s)

    *** Final Report ***

    File Creates Statistics (3 runs):
      Mean:    4001.86 files/s
      Std Dev: 125.337 files/s
      Min:     3863.7 files/s
      Max:     4167.1 files/s

    File Reads (Opens) Statistics (3 runs):
      Mean:    14382.3 files/s
      Std Dev: 556.594 files/s
      Min:     13636.3 files/s
      Max:     14972.8 files/s

    Cleaning up...

Here is the current help text:

    Usage: cephfs-bench [general-options] <command> [command-options]

    Commands:
      bench      Run IO benchmark

    Allowed options:

    General Options:
      -h [ --help ]                   Produce help message
      -c [ --conf ] arg               Ceph config file path
      -i [ --id ] arg (=admin)        Client ID
      -k [ --keyring ] arg            Path to keyring file
      --filesystem arg                CephFS filesystem name to mount
      --uid arg (=-1)                 User ID to mount as
      --gid arg (=-1)                 Group ID to mount as

    Benchmark Options (used with 'bench' command):
      --threads arg (=1)              Number of threads
      --iterations arg (=1)           Number of iterations
      --files arg (=100)              Total number of files
      --size arg (=4MB)               File size (e.g. 4MB, 0 for creates only)
      --block-size arg (=4MB)         IO block size (e.g. 1MB)
      --fsync-every arg (=0)          Call fsync every N bytes
      --prefix arg (=benchmark_)      Filename prefix
      --dir-prefix arg (=bench_run_)  Directory prefix
      --root-path arg (=/)            Root path in CephFS
      --per-thread-mount              Use separate mount per thread
      --no-cleanup                    Disable cleanup of files

AI-Assisted: significant portions of this code were AI-generated through a dozens of iterative prompts.
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
2026-04-14 08:48:54 -04:00
Nizamudeen A
d9c5358206 ceph.spec.in: replace golang github prometheus with promtool binary path
i don't see golang-github-prometheus available for centos anymore and
other distro's as well. And different package provides the promtool in
different distro's so instead of identifying all the corresponding
packages and its name, replacing the package name with binary path so it
works across distros without distro specific conditions

Some build failures are captured in our internal runs recently
https://github.com/rhcs-dashboard/ceph-dev/actions/runs/24298848427/job/70949666821

Signed-off-by: Nizamudeen A <nia@redhat.com>
2026-04-13 18:12:47 +05:30
Alex Ainscow
43cf7eb858 cls: Remove legacy ACL/Crypto and key_value_store class methods.
The osd code was not present, the radosacl tool did nothing useful and the scratchtoolpp
was testing something that doesn't exist.

key_value_store is optionally compiled into the key store, but seems to serve no useful purpose.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2026-04-13 10:38:25 +01:00
Alex Ainscow
8a2793fa73 librados: enforce compile-time read/write semantics for class methods
Status Quo:
Librados currently uses string-based identifiers for RADOS class method calls
(exec) in both ObjectReadOperation and ObjectWriteOperation. The API does
not distinguish between methods that modify object state and those that
are read-only.

Problem:
This lack of semantic enforcement has become a critical safety gap with the
introduction of EC Direct Reads. Because the EC direct read path is optimized
for performance, it may process the same read-only operation multiple times
(e.g., across different shards or during retries).

Previously, while technically a violation of API semantics, a "read-that-writes"
would often function correctly because operations were processed in-order and
without retries on the read path. However, in the context of EC direct reads,
executing a non-idempotent write through the read path poses a silent and
critical risk to data integrity.

Solution:
Introduce a template-based trait system to encode method semantics into the
API. By tagging methods with traits (MethodRead or MethodWrite), the compiler
now prevents state-modifying methods from being added to ObjectReadOperation.
This ensures that only side-effect-free methods reach the EC direct read
path, eliminating the risk of accidental double-writes at the source.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2026-04-13 10:38:24 +01:00
邓伟键
595a753771 rgw/kafka: honor verify-ssl and separate cached connections
RGW's Kafka notification path accepts and propagates the verify-ssl
topic attribute, but rgw_kafka.cc never applied it to librdkafka.

This patch configures enable.ssl.certificate.verification from
verify-ssl and separates cached connections by verify-ssl setting.

Fixes: https://tracker.ceph.com/issues/55790
Signed-off-by: 邓伟键 <emmmvkdeng@gmail.com>
2026-03-27 10:31:04 +08:00
Henry Hirsch
dfe79180a7 ceph-exporter: fix systemd unit
change systemd unit into templated unit, that the %i which is used
inside the unit is working

Signed-off-by: Henry Hirsch <henry.hirsch@1und1.de>
2026-03-25 16:59:06 +08:00