]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/log
ceph.git
3 weeks agomgr: Add per-module performance counters to mgr
Nitzan Mordechai [Sun, 8 Dec 2024 18:08:39 +0000 (18:08 +0000)]
mgr: Add per-module performance counters to mgr

This commit introduces performance counters for individual Ceph mgr modules.
These counters allow monitoring module behavior, debugging latency issues,
and identifying performance bottlenecks, all without modifying the modules themselves.

The following counters are now exposed under:
  > ceph daemon mgr.<id> perf dump

Example structure:
"mgr_module_<module_name>": {
    "notify_avg_usec": {     <- Average time spent handling notify events
        "avgcount": 0,
        "sum": 0
    },
    "cmd_avg_usec": {        <- Average time spent processing CLI/admin commands
        "avgcount": 0,
        "sum": 0
    },
    "serve_avg_usec": {      <- Average time spent in module serve loop (if applicable)
        "avgcount": 0,
        "sum": 0
    },
    "alive": 1               <- Module is alive (1 = running, 0 = exited)
    "cpu_usage": 0,          <- CPU usage in percent
    "mem_rss_change": 0,     <- Memory RSS change in bytes
    "mem_rss_current": 490737664 <- Memory RSS current in bytes

}

Signed-off-by: Nitzan Mordechai <nmordech@ibm.com>
Conflicts:
  src/mgr/ActivePyModules.cc - finisher.queue changed by 63859, adding py_module to the parameter list
  src/mgr/PyModuleRegistry.cc - check_all_modules_started added by 63859

3 weeks agoisa-l: enable on RISC-V 68098/head
Sun Yuechi [Mon, 25 May 2026 07:07:36 +0000 (15:07 +0800)]
isa-l: enable on RISC-V

ISA-L v2.32.0 added RISC-V support. Enable the ISA-L erasure code
plugin and the zlib compressor on RISC-V when RVV is available.

RVV is detected via the existing ceph_arch_riscv_probe() path added
in 01dc12ad565, so the same Linux 6.5+ requirement applies; on older
kernels the RVV path stays disabled.

Signed-off-by: Sun Yuechi <sunyuechi@iscas.ac.cn>
3 weeks agocompressor/zlib: fix bogus ISA-L warning on aarch64
Sun Yuechi [Mon, 25 May 2026 07:07:04 +0000 (15:07 +0800)]
compressor/zlib: fix bogus ISA-L warning on aarch64

The guard

    #if !(__x86_64__ && defined(HAVE_NASM_X64_AVX2)) || defined(__aarch64__)

binds the negation only to the x86 half, so aarch64 (where ISA-L
is supported) always hit the warning branch.

Signed-off-by: Sun Yuechi <sunyuechi@iscas.ac.cn>
3 weeks agoUse GANESHA_REPO_BASEURL for NFS-Ganesha on all distros 69073/head
Shweta Bhosale [Thu, 14 May 2026 13:49:56 +0000 (19:19 +0530)]
Use GANESHA_REPO_BASEURL for NFS-Ganesha on all distros

Fixes: https://tracker.ceph.com/issues/76603
Signed-off-by: Shweta Bhosale <Shweta.Bhosale1@ibm.com>
3 weeks agonvmeofgw:fix forcing unavailable gw exit by sending 68650/head
Leonid Chernin [Fri, 10 Apr 2026 08:15:20 +0000 (11:15 +0300)]
nvmeofgw:fix forcing unavailable gw exit by sending
         empty map to it

Signed-off-by: Leonid Chernin <leonidc@il.ibm.com>
3 weeks agoceph-volume: OSD mapper lifecycle (LVM + raw) for activate 68894/head
Guillaume Abrioux [Wed, 13 May 2026 12:57:03 +0000 (14:57 +0200)]
ceph-volume: OSD mapper lifecycle (LVM + raw) for activate

This adds small helpers so activate can consistently bring the OSD device
stack online (LVM lvchange, optional mapper open) and tear it down again,
with refresh in between. Same idea for the raw path. Crypto is handled
inside that flow when the OSD is encrypted.

Fixes: https://tracker.ceph.com/issues/76591
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
3 weeks agoMerge pull request #68771 from jrse/rgw-kafka-mtls-rebased
Yuval Lifshitz [Sun, 24 May 2026 19:29:38 +0000 (22:29 +0300)]
Merge pull request #68771 from jrse/rgw-kafka-mtls-rebased

rgw/kafka: add mTLS support (extends #61572)

3 weeks agorgw: bump Apache Arrow submodule from 17.0.0 to 19.0.1 69068/head
Kefu Chai [Sun, 24 May 2026 08:25:46 +0000 (16:25 +0800)]
rgw: bump Apache Arrow submodule from 17.0.0 to 19.0.1

When WITH_SYSTEM_ARROW is false, Ceph builds Arrow from the bundled
src/apache submodule. Our CI uses ubuntu:jammy as the base image, which
does not package libarrow-dev, so the bundled path is always taken there.

Arrow 17.0.0 vendors a copy of Thrift whose download URLs are no longer
reachable, breaking CI builds that try to fetch them at configure time.

Bump arrow submodule to 19.0.1, the latest Arrow release that:
- builds successfully on ubuntu:jammy, and
- requires only CMake 3.22 (the version shipped by ubuntu:jammy)

See also

CMake version shipped by ubuntu:jammy
- https://packages.ubuntu.com/jammy/cmake

arrow releases' CMake support
- maint-19.0.1: https://github.com/apache/arrow/blob/272715f6df2a042d69881ffa03d5078c58e4b345/cpp/CMakeLists.txt#L18
- maint-20.0.0: https://github.com/apache/arrow/blob/3ad0370a04ccdae638755b94c3c31c8760a11193/cpp/CMakeLists.txt#L18

arrow enabled minmalloc by default
-
https://github.com/apache/arrow/commit/b907c5dadb516b525c8fafbf34b0116d44044733

Because arrow uses the bundled mialloc library be default, we need
to disable it in the same commit bumping up the submodule.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agoMerge pull request #66150 from MaodiMa/AVX512_crc32c
Kefu Chai [Sun, 24 May 2026 09:55:45 +0000 (17:55 +0800)]
Merge pull request #66150 from MaodiMa/AVX512_crc32c

common: enable AVX512+VPCLMULQDQ for crc32c performance on x86

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agocrimson/os/seastore/lba: fix wrong asserts and "if" conditions 69067/head
Xuehan Xu [Sat, 23 May 2026 09:23:02 +0000 (17:23 +0800)]
crimson/os/seastore/lba: fix wrong asserts and "if" conditions

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/OMapManager: only store the relative block offset to omap root...
Zhang Song [Fri, 30 May 2025 09:45:39 +0000 (17:45 +0800)]
crimson/os/seastore/OMapManager: only store the relative block offset to omap root in OMapInnerNode

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agotest/crimson/seastore/test_btree_lba_manager: add test cases for conflict policy
Zhang Song [Tue, 27 May 2025 07:31:13 +0000 (15:31 +0800)]
test/crimson/seastore/test_btree_lba_manager: add test cases for conflict policy

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/lba_manager: implement conflict policy
Zhang Song [Tue, 26 Aug 2025 03:38:49 +0000 (11:38 +0800)]
crimson/os/seastore/lba_manager: implement conflict policy

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: reserve region in LBABtree when touching onode
Zhang Song [Wed, 11 Jun 2025 04:04:25 +0000 (12:04 +0800)]
crimson/os/seastore: reserve region in LBABtree when touching onode

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/OnodeManager: adapt laddr_hint_t approach
Zhang Song [Wed, 11 Jun 2025 04:04:03 +0000 (12:04 +0800)]
crimson/os/seastore/OnodeManager: adapt laddr_hint_t approach

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/OMapManager: adapt laddr_hint_t approach
Zhang Song [Mon, 26 May 2025 07:23:25 +0000 (15:23 +0800)]
crimson/os/seastore/OMapManager: adapt laddr_hint_t approach

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: use laddr_hint_t to allocate the laddr
Zhang Song [Tue, 26 Aug 2025 03:36:07 +0000 (11:36 +0800)]
crimson/os/seastore: use laddr_hint_t to allocate the laddr

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/Onode: get sibling's object id when creating new onode
Zhang Song [Wed, 11 Jun 2025 03:50:12 +0000 (11:50 +0800)]
crimson/os/seastore/Onode: get sibling's object id when creating new onode

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/Onode: adapt new get hint approach
Zhang Song [Tue, 26 Aug 2025 03:34:37 +0000 (11:34 +0800)]
crimson/os/seastore/Onode: adapt new get hint approach

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/Onode: support get object/clone prefix
Zhang Song [Thu, 22 May 2025 08:58:14 +0000 (16:58 +0800)]
crimson/os/seastore/Onode: support get object/clone prefix

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/Onode: remove default metadata offset/range
Zhang Song [Tue, 26 Aug 2025 03:31:03 +0000 (11:31 +0800)]
crimson/os/seastore/Onode: remove default metadata offset/range

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: introduce laddr_hint_t and associated factory methods
Zhang Song [Wed, 14 May 2025 08:34:00 +0000 (16:34 +0800)]
crimson/os/seastore: introduce laddr_hint_t and associated factory methods

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: make pladdr_t only store the local clone id instead of full...
Zhang Song [Tue, 26 Aug 2025 02:35:55 +0000 (10:35 +0800)]
crimson/os/seastore: make pladdr_t only store the local clone id instead of full laddr_t

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: introduce static layout of laddr_t
Zhang Song [Wed, 14 May 2025 08:26:26 +0000 (16:26 +0800)]
crimson/os/seastore: introduce static layout of laddr_t

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: extend the size of laddr_t from 64 bits to 128 bits
Zhang Song [Wed, 14 May 2025 07:22:15 +0000 (15:22 +0800)]
crimson/os/seastore: extend the size of laddr_t from 64 bits to 128 bits

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agoMerge pull request #69045 from xxhdx1985126/wip-seastore-drop-retired-placeholder
Kefu Chai [Sat, 23 May 2026 13:56:32 +0000 (21:56 +0800)]
Merge pull request #69045 from xxhdx1985126/wip-seastore-drop-retired-placeholder

crimson/os/seastore: remove RetiredExtentPlaceholder

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agoMerge pull request #68823 from tchaikov/wip-crimson-remove-from
Kefu Chai [Sat, 23 May 2026 13:33:14 +0000 (21:33 +0800)]
Merge pull request #68823 from tchaikov/wip-crimson-remove-from

crimson/osd: make PGAdvanceMap idempotent

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
3 weeks agocrimson/scrub: fix assert in PGScrubber::release_range() on interval change 69064/head
Kefu Chai [Fri, 22 May 2026 11:01:17 +0000 (19:01 +0800)]
crimson/scrub: fix assert in PGScrubber::release_range() on interval change

when an interval change occurs while ScrubReserveRange is still
waiting to acquire background_process_lock, ChunkState::exit()
calls release_range() but blocked is not yet set. this triggers
ceph_assert(blocked) in release_range().

fix by checking if blocked is set before asserting. if blocked is
not set, the range was never reserved, so release_range() is a
no-op. ScrubReserveRange's finally block handles lock cleanup in
this case.

Fixes: https://tracker.ceph.com/issues/76752
Signed-off-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agoMerge pull request #68684 from ronen-fr/wip-rf-statfx
Ronen Friedman [Sat, 23 May 2026 08:04:45 +0000 (11:04 +0300)]
Merge pull request #68684 from ronen-fr/wip-rf-statfx

osd/scrub: auto-correct accounting-only stat mismatches

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
3 weeks agoMerge pull request #68292 from Kushal-deb/fix-nvme-gw-crash
Redouane Kachach [Sat, 23 May 2026 08:04:37 +0000 (10:04 +0200)]
Merge pull request #68292 from Kushal-deb/fix-nvme-gw-crash

mgr/cephadm: fix nvmeof reconfig loop by preserving daemon deps

Reviewed-by: Redouane Kachach <rkachach@ibm.com>
3 weeks agoMerge pull request #67308 from rkachach/fix_issue_ssl_cert_deps
Redouane Kachach [Sat, 23 May 2026 08:04:03 +0000 (10:04 +0200)]
Merge pull request #67308 from rkachach/fix_issue_ssl_cert_deps

mgr/cephadm: track TLS spec changes in deps and cleanup stale certmgr entries on cert source transitions

Reviewed-by: Shweta Bhosale <Shweta.Bhosale1@ibm.com>
3 weeks agoMerge pull request #68737 from ronen-fr/wip-rf-stqlength
Ronen Friedman [Sat, 23 May 2026 07:50:42 +0000 (10:50 +0300)]
Merge pull request #68737 from ronen-fr/wip-rf-stqlength

crimson+classic/osd/scrub: limit scrubbing under snap-trimming overload

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
3 weeks agofeat(rgw/kafka): add mTLS client certificate authentication for Kafka notifications 68771/head
Jan Radon [Fri, 15 May 2026 13:42:08 +0000 (15:42 +0200)]
feat(rgw/kafka): add mTLS client certificate authentication for Kafka notifications
Add support for mutual TLS (mTLS) client certificate authentication
when publishing bucket notifications to Kafka brokers. RGW can now
present a client certificate and private key to authenticate with
brokers that require ssl.client.auth=required.
Changes:
- Add ssl-certificate-location, ssl-key-location, and ssl-key-password
  topic attributes for configuring client certificates
- Validate that ssl_certificate and ssl_key are provided together
- Include ssl_key_password in connection identity (hash/equality)
- Add kafka-security.sh script for generating broker and client TLS certs
- Add mTLS test (test_notification_kafka_security_ssl_mtls) using
  use_mtls=True flag on the existing SSL security path
- Update RGW notifications documentation with mTLS parameters

Fixes: http://tracker.ceph.com/issues/67427
Signed-off-by: Jan Radon <jan.fabian.radon@sap.com>
3 weeks agoMerge pull request #67315 from timqn22/misreporting_count_osd_services
Redouane Kachach [Fri, 22 May 2026 19:28:33 +0000 (21:28 +0200)]
Merge pull request #67315 from timqn22/misreporting_count_osd_services

mgr/cephadm: verify spec service_id before applying

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
Reviewed-by: Shweta Bhosale <Shweta.Bhosale1@ibm.com>
Reviewed-by: Adam King <adking@redhat.com>
3 weeks agoMerge pull request #66477 from xelexin/fix_cephadm_agent_volume_gatherer
Redouane Kachach [Fri, 22 May 2026 19:27:37 +0000 (21:27 +0200)]
Merge pull request #66477 from xelexin/fix_cephadm_agent_volume_gatherer

orch/cephadm: Fixes an unlimited env append in cephadm agent

Reviewed-by: Adam King <adking@redhat.com>
3 weeks agoMerge pull request #68902 from timqn22/logrotate-list
Redouane Kachach [Fri, 22 May 2026 19:26:44 +0000 (21:26 +0200)]
Merge pull request #68902 from timqn22/logrotate-list

src/cephadm: added ceph-exporter to post-rotate signal list

Reviewed-by: Redouane Kachach <rkachach@ibm.com>
Reviewed-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agoMerge pull request #68915 from kginonredhat/issue-76564-mgr-daemon-ports-list-grows...
Redouane Kachach [Fri, 22 May 2026 19:25:50 +0000 (21:25 +0200)]
Merge pull request #68915 from kginonredhat/issue-76564-mgr-daemon-ports-list-grows-unbounded-across-redeploys

mgr daemon ports list grows unbounded across redeploys

Reviewed-by: Redouane Kachach <rkachach@ibm.com>
3 weeks agoMerge pull request #68976 from kginonredhat/issue-76295-nfs-sample-enable-udp-false
Redouane Kachach [Fri, 22 May 2026 19:24:54 +0000 (21:24 +0200)]
Merge pull request #68976 from kginonredhat/issue-76295-nfs-sample-enable-udp-false

cephadm: disable UDP in samples/nfs.json for test_cephadm Ganesha

Reviewed-by: Redouane Kachach <rkachach@ibm.com>
Reviewed-by: Shweta Bhosale <Shweta.Bhosale1@ibm.com>
3 weeks agomgr/cephadm: adding UT for the new functionality 67308/head
Redouane Kachach [Mon, 9 Mar 2026 15:11:50 +0000 (16:11 +0100)]
mgr/cephadm: adding UT for the new functionality

Fixes: https://tracker.ceph.com/issues/75009
Signed-off-by: Redouane Kachach <rkachach@ibm.com>
3 weeks agomgr/cephadm: moving certificates reconciliation code to a new method
Redouane Kachach [Mon, 23 Feb 2026 15:15:12 +0000 (16:15 +0100)]
mgr/cephadm: moving certificates reconciliation code to a new method

This way we ensure it's called everytime there's a switch in the
certificate

Signed-off-by: Redouane Kachach <rkachach@ibm.com>
3 weeks agoqa/suites/upgrade: ignore osd in unknown state 69055/head
Patrick Donnelly [Fri, 22 May 2026 13:38:26 +0000 (09:38 -0400)]
qa/suites/upgrade: ignore osd in unknown state

The thrashosds task is occasionally restarting OSDs and mon/mgr log
warnings are wrongly flagging this as a problem.

Fixes: https://tracker.ceph.com/issues/76747
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
3 weeks agotest/bluefs: introduce FileWriter UT 66439/head
Igor Fedotov [Thu, 4 Dec 2025 02:27:44 +0000 (05:27 +0300)]
test/bluefs: introduce FileWriter UT

Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit 92ea6a0122127325b549119c45ad8ca5a63b8498)
Contributed in: https://github.com/ceph/ceph/pull/66503

Modified:
1) Removed FileWriter special constructor for UT
2) Adapted naming of calls in UT

3 weeks agoos/bluestore/BlueFS: Simplify flush functions
Adam Kupczyk [Thu, 21 May 2026 12:27:39 +0000 (12:27 +0000)]
os/bluestore/BlueFS: Simplify flush functions

Removed 'offset'~'length' parameters from flush-related functions;
now single 'end' marks limit of requested flush.
It simplifies logic as we cannot flush random file ranges anyway.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
3 weeks agoos/bluestore/bluefs: Simplify flush procedure
Adam Kupczyk [Thu, 27 Nov 2025 07:56:02 +0000 (07:56 +0000)]
os/bluestore/bluefs: Simplify flush procedure

Refactor FileWriter:
1) add get_flush_offset(), has_unflushed_data()
2) renamed flush_buffer()->get_flush_buffer()
3) refactored logic of flush:
   - removed bufferlist tail
   - use buffer to store data that has to be reused

Simplify logic of flushing data to disk.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
3 weeks agocls: remove unused variable 69054/head
Kefu Chai [Sat, 9 May 2026 05:01:04 +0000 (13:01 +0800)]
cls: remove unused variable

to silence following warning:

```
/home/kefu/dev/ceph/src/cls/rgw/cls_rgw_types.cc: In static member function ‘static std::__cxx11::list<rgw_bucket_dir> rgw_bucket_dir::generate_test_instances()’:
/home/kefu/dev/ceph/src/cls/rgw/cls_rgw_types.cc:736:11: warning: variable ‘i’ set but not used [-Wunused-but-set-variable=]
  736 |   uint8_t i = 0;
      |           ^
```

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agocrimson/os/seastore: drop RetiredExtentPlaceholder 69045/head
Xuehan Xu [Thu, 21 May 2026 07:10:59 +0000 (15:10 +0800)]
crimson/os/seastore: drop RetiredExtentPlaceholder

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/cache: remove retire_extent_addr
Xuehan Xu [Thu, 21 May 2026 06:50:42 +0000 (14:50 +0800)]
crimson/os/seastore/cache: remove retire_extent_addr

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/cache: re-implement Cache::retire_absent_extent_addr
Xuehan Xu [Wed, 20 May 2026 08:31:29 +0000 (16:31 +0800)]
crimson/os/seastore/cache: re-implement Cache::retire_absent_extent_addr

The new implementation retire an absent extent by constructing a real
empty extent and add it to the transaction's retired_set, instead of
creating a retired placeholder

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agoMerge pull request #68358 from ronen-fr/wip-rf-notazns main_base_5.22.26
Ronen Friedman [Fri, 22 May 2026 05:49:42 +0000 (08:49 +0300)]
Merge pull request #68358 from ronen-fr/wip-rf-notazns

crimson/os/seastore: do not treat non-ZNS devices as errors

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
Reviewed-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agoMerge pull request #68948 from ronen-fr/wip-rf-fix-trimsnap
Ronen Friedman [Thu, 21 May 2026 19:36:06 +0000 (22:36 +0300)]
Merge pull request #68948 from ronen-fr/wip-rf-fix-trimsnap

crimson/osd: decouple snap trim initiation from scrub completion

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
3 weeks agoosd/scrub: limit scrubbing under snap-trimming overload 68737/head
Ronen Friedman [Wed, 29 Apr 2026 04:55:02 +0000 (04:55 +0000)]
osd/scrub: limit scrubbing under snap-trimming overload

When the snap-trim queues are long, scrubbing is likely to
make things worse. This change adds a new scrubbing restriction
for that case, and prevents periodic scrubs from starting when
the total snap-trim queue length across all PGs exceeds a
configurable threshold.

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
3 weeks agocrimson/osd: collect total snap-trim queueus length
Ronen Friedman [Wed, 29 Apr 2026 04:14:23 +0000 (04:14 +0000)]
crimson/osd: collect total snap-trim queueus length

Periodically collect the total snap-trim
queue length across all PGs. Expose it through
OSDService::get_snap_trim_queue_total().

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
3 weeks agoosd: collect total snap-trim queueus length
Ronen Friedman [Wed, 29 Apr 2026 03:45:34 +0000 (03:45 +0000)]
osd: collect total snap-trim queueus length

Periodically collect the total snap-trim
queue length across all PGs. Expose it through
OSDService::get_snap_trim_queue_total().

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
3 weeks agodoc: deprecate EC plugins and techniques
Jamie Pryde [Wed, 20 May 2026 14:53:42 +0000 (15:53 +0100)]
doc: deprecate EC plugins and techniques

We want to reduce the number of EC plugins and techniques we support
in order to focus dev and test effort on the ones that are most
useful.

We are deprecating the following plugins and techniques in Umbrella,
and dropping support for them in the V release:
* shec
* clay
* all non-reed_sol_van jerasure techniques

This commit updates the documentation to reflect these changes.

Signed-off-by: Jamie Pryde <jamiepry@uk.ibm.com>
3 weeks agoMerge pull request #68873 from cbodley/wip-73475
Casey Bodley [Thu, 21 May 2026 14:41:52 +0000 (10:41 -0400)]
Merge pull request #68873 from cbodley/wip-73475

librados/asio: clear cancellation slot in associated executor

Reviewed-by: Adam Emerson <aemerson@redhat.com>
Reviewed-by: Shilpa Jagannath <smanjara@redhat.com>
3 weeks agoqa/rgw: ignore 'keytool: command for found' errors
Casey Bodley [Thu, 21 May 2026 13:54:16 +0000 (09:54 -0400)]
qa/rgw: ignore 'keytool: command for found' errors

this 'keytool' invocation was moved from qa/tasks/s3tests_java.py to
qa/tasks/rgw.py so that it would also cover the java checksum tests

but that means it runs for any rgw job with https enabled, even if it
doesn't install or use any java stuff. the 'keytool' command itself
comes from jdk packages which aren't installed by default

ignore errors from this command so that subsuites can use https without
installing java

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agorgw/notification: fix zero eventTime in bucket notifications on concurrent PUT race 69033/head
Krunal Chheda [Wed, 20 May 2026 18:14:22 +0000 (14:14 -0400)]
rgw/notification: fix zero eventTime in bucket notifications on concurrent PUT race

When concurrent PUTs target the same object key, RADOS may return
-ECANCELED to the losing writers. In that path *meta.mtime was never
populated from meta.set_mtime, leaving mtime at epoch (zero), which
propagated into bucket notification eventTime as
"1970-01-01T00:00:00.000Z".

Fix: set *meta.mtime from meta.set_mtime before returning 0 in the
ECANCELED/ENOENT/EEXIST early-return block, matching the behaviour of
the successful write path.

Also add a regression test that fires 20 concurrent threads writing
the same key and asserts no event in the persistent queue carries a
zero eventTime.

Fixes: https://tracker.ceph.com/issues/76729
Signed-off-by: Krunal Chheda <kchheda3@bloomberg.net>
3 weeks agoMerge pull request #68985 from djgalloway/nfs-ganesha-selinux
David Galloway [Thu, 21 May 2026 14:21:53 +0000 (10:21 -0400)]
Merge pull request #68985 from djgalloway/nfs-ganesha-selinux

Revert "Use GANESHA_REPO_BASEURL for NFS-Ganesha on all distros"

3 weeks agomgr/dashboard: add telemetry status to overview-health-card 67950/head
Pedro Gonzalez Gomez [Mon, 23 Mar 2026 11:02:29 +0000 (12:02 +0100)]
mgr/dashboard: add telemetry status to overview-health-card

Fixes: https://tracker.ceph.com/issues/75666
Signed-off-by: Pedro Gonzalez Gomez <pegonzal@ibm.com>
3 weeks agoos/bluestore/bluefs: Make FileWriter::pos private
Adam Kupczyk [Thu, 27 Nov 2025 07:45:35 +0000 (07:45 +0000)]
os/bluestore/bluefs: Make FileWriter::pos private

pos -> get_pos / set_pos

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
3 weeks agocommon: enable AVX512+VPCLMULQDQ for crc32c performance on x86 66150/head
Maodi Ma [Wed, 5 Nov 2025 02:35:46 +0000 (02:35 +0000)]
common: enable AVX512+VPCLMULQDQ for crc32c performance on x86

- Add crc32_iscsi_by16_10 in src/isa-l into candidates for ceph_crc32c
- Add hardware capability check for AVX512 instr before register
- Add NASM feature check to ensure compatibility and to enable
  AS_FEATURE_LEVEL in crc32_iscsi_by16_10.asm

Signed-off-by: Maodi Ma <mamaodi@hygon.cn>
3 weeks agoRevert "Merge pull request #67999 from Shubhaj1810/nfs-ganesha-servicemap-fix" 69042/head
Shubha Jain [Thu, 21 May 2026 08:51:08 +0000 (14:21 +0530)]
Revert "Merge pull request #67999 from Shubhaj1810/nfs-ganesha-servicemap-fix"

This reverts commit d44d4fd402a0c23ab98056368d12cb83afd7bb32, reversing
changes made to 0e05a6054c822e36dcdf7b25d8d031fc937ac278.

Signed-off-by: Shubha Jain <SHUBHA.JAIN1@ibm.com>
3 weeks agomds: prevent CDir omap commit with empty updates/removals/header 68793/head
Venky Shankar [Thu, 7 May 2026 09:47:38 +0000 (15:17 +0530)]
mds: prevent CDir omap commit with empty updates/removals/header

Empty `stales` and `to_remove` causes `size` to be initialized with
sizeof(fnode_t). If the encoded inode size (plus fnode_t size) exceeds
max_dir_commit_size, commit_one() is called as a non-header update
with empty `_set` and `_rm` sets causing the MDS to assert.

While this patch prevents the assert, it is unknown at this point as
to why the encoded inode size is so large. We have seen it before
once, but there is lack of debug information to dig into. This fix
will prevent the assert, however, the MDS would go read-only due to
the large rados operation size, but at least we will have a live
system to debug at that point.

Fixes: http://tracker.ceph.com/issues/76455
Signed-off-by: Venky Shankar <vshankar@redhat.com>
3 weeks agorgw/logging: use assumed-role ARN as Requester for STS requests
ShreeJejurikar [Wed, 13 May 2026 13:05:39 +0000 (18:35 +0530)]
rgw/logging: use assumed-role ARN as Requester for STS requests

When a request is made with STS temporary credentials, the bucket logging
Requester field was being set to the underlying user ID instead of the
assumed-role ARN. Per the AWS S3 server-access-log spec, the Requester
field should contain the assumed-role ARN (e.g.
arn:aws:sts::<account>:assumed-role/<role>/<session>) for STS-credentialed
requests.

Detect TYPE_ROLE identities via s->auth.identity->get_identity_type() and
use the ARN returned by Identity::get_caller_identity() (already
implemented by RoleApplier in the expected AWS format) instead of falling
straight through to s->user->get_id(). Existing behavior for account- and
user-scoped requests is unchanged.

Fixes: https://tracker.ceph.com/issues/71742
Signed-off-by: Shree Jejurikar <shree.jejurikar@gmail.com>
3 weeks agologrotate: send SIGHUP to ceph-exporter on log rotation 67371/head
an.groshev [Tue, 17 Feb 2026 08:26:46 +0000 (11:26 +0300)]
logrotate: send SIGHUP to ceph-exporter on log rotation

ceph-exporter registers a SIGHUP handler that reopens its log files,
but it was missing from the postrotate killall/pkill list.  Without the
signal, the daemon keeps an open fd to the already-rotated file and
continues writing there, causing /var/log/ceph to fill up.

Signed-off-by: an.groshev <an.groshev@tensor.ru>
3 weeks agoMerge pull request #69013 from bluikko/wip-doc-rados-ops-pool-fix-label
bluikko [Thu, 21 May 2026 02:46:54 +0000 (09:46 +0700)]
Merge pull request #69013 from bluikko/wip-doc-rados-ops-pool-fix-label

doc/rados: move label to right place in pools.rst

3 weeks agoMerge pull request #69014 from bluikko/wip-doc-man-cephadm-fix-markup
bluikko [Thu, 21 May 2026 02:46:43 +0000 (09:46 +0700)]
Merge pull request #69014 from bluikko/wip-doc-man-cephadm-fix-markup

doc/man: fix broken markup in cephadm.rst

3 weeks agoRevert "Use GANESHA_REPO_BASEURL for NFS-Ganesha on all distros" 68985/head
David Galloway [Wed, 20 May 2026 20:38:52 +0000 (16:38 -0400)]
Revert "Use GANESHA_REPO_BASEURL for NFS-Ganesha on all distros"

The ganesha spec file is calling in a system package that is in CentOS 10 Stream but not yet in Rocky/Alma/RHEL/whatever.

This reverts commit 1163bd6b01560bb435821d1ec14b69a5a4f3b0cc.

Fixes: https://tracker.ceph.com/issues/76681
Signed-off-by: David Galloway <david.galloway@ibm.com>
3 weeks agoMerge PR #68907 into main
Patrick Donnelly [Wed, 20 May 2026 20:16:20 +0000 (16:16 -0400)]
Merge PR #68907 into main

* refs/pull/68907/head:
qa: ignore pg stuck peering

Reviewed-by: Yuri Weinstein <yweins@redhat.com>
3 weeks agoMerge PR #68896 into main
Patrick Donnelly [Wed, 20 May 2026 19:41:40 +0000 (15:41 -0400)]
Merge PR #68896 into main

* refs/pull/68896/head:
qa: ignore cephadm failed daemon warnings during thrashing

Reviewed-by: Yuri Weinstein <yweins@redhat.com>
3 weeks agoMerge PR #68998 into main
Patrick Donnelly [Wed, 20 May 2026 19:40:56 +0000 (15:40 -0400)]
Merge PR #68998 into main

* refs/pull/68998/head:
.github/workflows/releng-audit: update python to 3.12
.github/workflows/releng-audit: update workflows

Reviewed-by: Yuri Weinstein <yweins@redhat.com>
3 weeks agoMerge PR #68893 into main
Patrick Donnelly [Wed, 20 May 2026 19:38:17 +0000 (15:38 -0400)]
Merge PR #68893 into main

* refs/pull/68893/head:
qa: ignore expected OSD_ROOT_DOWN
qa: ignore fs offline warning
qa: add MDS_INSUFFICIENT_STANDBY to ignorelist
qa/suites/upgrade: use common ignorelist

Reviewed-by: Laura Flores <lflores@redhat.com>
3 weeks agoMerge PR #68897 into main
Patrick Donnelly [Wed, 20 May 2026 19:37:29 +0000 (15:37 -0400)]
Merge PR #68897 into main

* refs/pull/68897/head:
qa/suites/upgrade: ignore undersized PG during stress splits

Reviewed-by: Laura Flores <lflores@redhat.com>
3 weeks agoMerge PR #69004 into main
Patrick Donnelly [Wed, 20 May 2026 19:33:33 +0000 (15:33 -0400)]
Merge PR #69004 into main

* refs/pull/69004/head:
script/ptl-tool: allow automatic links for commit sha

Reviewed-by: Yuri Weinstein <yweins@redhat.com>
3 weeks agorgw: simplify GCM key cache, IV layout, and endian encoding 67246/head
Matthew N. Heler [Wed, 8 Apr 2026 11:42:53 +0000 (06:42 -0500)]
rgw: simplify GCM key cache, IV layout, and endian encoding

Move the ISA-L GCM key cache to the heap with only a pointer in TLS.

Simplify the IV cursor to use hi=part_number, lo=chunk_index instead
of bit-packing both into a single field.

Replace manual byte-shifting in AAD encoding with boost::endian.

Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agorgw: write RGW_ATTR_CRYPT_PREFETCH_ALIGN for AEAD ciphers
Matthew N. Heler [Mon, 30 Mar 2026 23:44:36 +0000 (18:44 -0500)]
rgw: write RGW_ATTR_CRYPT_PREFETCH_ALIGN for AEAD ciphers

Store the plaintext and encrypted block sizes at upload time so
future cls prefetch ops can compute on-disk read ranges from
xattrs without instantiating a cipher.

Only written for size-expanding ciphers (GCM). CBC objects have
no attr — plaintext and ciphertext sizes are identical.

Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agorgw: add range projection helpers for encrypted and compressed objects
Matthew N. Heler [Sun, 29 Mar 2026 02:27:57 +0000 (21:27 -0500)]
rgw: add range projection helpers for encrypted and compressed objects

Add stateless helpers that project plaintext byte ranges to on-disk
byte ranges for compressed and encrypted objects. fixup_range()
delegates to these for range computation.

Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agorgw: use stored plaintext size for AEAD segment validation
Matthew N. Heler [Sun, 29 Mar 2026 18:48:01 +0000 (13:48 -0500)]
rgw: use stored plaintext size for AEAD segment validation

The SLO/DLO size check was converting encrypted size to plaintext
via rgw_get_aead_decrypted_size(), which overestimates for multipart
objects without CRYPT_PARTS. Use the stored CRYPT_ORIGINAL_SIZE
attr instead, it's exact and already in the attrs.

Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agorgw: add benchmark for GCM and CBC encrypt/decrypt throughput
Matthew N Heler [Fri, 27 Feb 2026 00:44:07 +0000 (18:44 -0600)]
rgw: add benchmark for GCM and CBC encrypt/decrypt throughput

Benchmark for measuring AES-256-CBC and AES-256-GCM throughput with
hardware acceleration. Supports multi-threaded runs across various
chunk sizes.

Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agorgw: replace GCM nonce with salt-based key derivation
Matthew N. Heler [Thu, 19 Mar 2026 01:46:26 +0000 (20:46 -0500)]
rgw: replace GCM nonce with salt-based key derivation

Move randomness from the GCM IV into key derivation. Each object
now gets a 32-byte random salt stored in RGW_ATTR_CRYPT_SALT, fed
into HMAC-SHA256 alongside bucket_id and object name to produce a
unique per-object key. The GCM IV is a deterministic counter from
the chunk position, which is safe because the key never repeats.

All GCM modes (SSE-C, SSE-KMS, SSE-S3, RGW-AUTO) now go through
derive_object_key() before any encrypt or decrypt operation.

Rename AES_GCM_NONCE_SIZE to AES_GCM_IV_SIZE across CryptoAccel
backends (isa-l, openssl, qat) to reflect what it actually is.

Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agorgw: use bucket_id instead of bucket name in GCM key derivation
Matthew N. Heler [Wed, 18 Mar 2026 23:51:49 +0000 (18:51 -0500)]
rgw: use bucket_id instead of bucket name in GCM key derivation

The bucket name isn't globally unique ie different tenants can
have the same bucket name. Using bucket_id (which is globally
unique and includes tenant context) prevent cross-tenant key
collisions in the HMAC-SHA256 derivation.

Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agorgw: optimize GCM encrypt/decrypt hot path
Matthew N. Heler [Sat, 21 Feb 2026 15:27:14 +0000 (09:27 -0600)]
rgw: optimize GCM encrypt/decrypt hot path

Reduce per-chunk overhead by hoisting accelerator resolution and
EVP context creation out of the chunk loop, replacing ct_memeq with
memcmp, linearizing input before the chunk loop, and eliminating
unnecessary tag copies in the ISA-L path. Also rewrites IV derivation
to use cached native arithmetic instead of a per-chunk byte-at-a-time
loop, and aligns the output buffer to 64 bytes for optimal SIMD stores.

Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agoqa/rgw: test GCM encryption in existing crypt and multisite suites
Matthew N. Heler [Wed, 4 Feb 2026 22:49:45 +0000 (16:49 -0600)]
qa/rgw: test GCM encryption in existing crypt and multisite suites

Add an aes facet to the rgw/crypt and rgw/multisite suites so
teuthology runs them with both the default cipher (CBC) and with
rgw_crypt_sse_algorithm set to aes-256-gcm.

Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agorgw: add GCM hardware acceleration support via CryptoAccel
Matthew N. Heler [Fri, 6 Feb 2026 13:51:28 +0000 (07:51 -0600)]
rgw: add GCM hardware acceleration support via CryptoAccel

Extend the CryptoAccel plugin system to support AES-256-GCM encryption,
following the same pattern established for CBC.

The CryptoAccel base class now includes GCM constants (12-byte nonce,
16-byte tag) and pure virtual methods for gcm_encrypt, gcm_decrypt,
and their batch variants. All derived classes must implement these
methods, maintaining consistency with how CBC is handled.

OpenSSL serves as the fallback when ISA-L is unavailable, using the
EVP API with proper AAD handling. QAT stubs return false since GCM
requires different session setup than CBC; a note has been added to
the QAT acceleration documentation clarifying this limitation.

The RGW integration follows the CBC pattern closely. The previous
gcm_encrypt_chunk and gcm_decrypt_chunk functions have been unified
into gcm_transform() with two overloads: one for EVP-only operation
and one that uses the accelerator exclusively when available, falling
back to EVP only when no accelerator can be loaded. Static assertions
ensure the nonce and tag sizes stay consistent between the acceleration
layer and RGW.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agorgw: add AES-256-GCM (AEAD) support for server-side encryption
Matthew N. Heler [Wed, 28 Jan 2026 04:06:17 +0000 (22:06 -0600)]
rgw: add AES-256-GCM (AEAD) support for server-side encryption

This adds GCM as an alternative to the existing CBC cipher for SSE-C,
SSE-KMS, SSE-S3, and RGW-AUTO. GCM provides authenticated encryption,
meaning it detects tampering during decryption rather than silently
returning corrupted data.

The new rgw_crypt_sse_algorithm config option controls which cipher is
used for new uploads. The default remains aes-256-cbc for backward
compatibility with older RGW versions in mixed clusters. Once all nodes
are upgraded, administrators can enable aes-256-gcm for new objects.
Existing CBC-encrypted objects continue to decrypt correctly regardless
of this setting.

GCM encrypts in 4KB chunks, each producing 4112 bytes of ciphertext
(4096 plaintext + 16-byte authentication tag). This means encrypted
objects are larger than their plaintext. To preserve correct behavior:
- RGW_ATTR_CRYPT_ORIGINAL_SIZE stores the plaintext size
- Content-Length and bucket listings report the plaintext size
- Range requests translate plaintext offsets to storage offsets

Each object gets a random 12-byte nonce stored in RGW_ATTR_CRYPT_NONCE.
This nonce serves two purposes: it's combined with chunk indices to
derive unique IVs for each encrypted block, and for SSE-C it's included
in the key derivation to bind ciphertext to object identity. Moving
encrypted data at the RADOS level causes decryption to fail rather than
silently producing garbage.

Multipart uploads derive per-part keys and use the S3 part number in
IV derivation to guarantee unique IVs across parts. The actual part
numbers are stored in RGW_ATTR_CRYPT_PART_NUMS during CompleteMultipart
to handle non-contiguous uploads (e.g., parts 1, 3, 5).

The implementation uses generic AEAD abstractions (is_aead_mode(),
aead_plaintext_to_encrypted_size(), etc.) so that adding other
authenticated ciphers like ChaCha20-Poly1305 in the future requires
only implementing the cipher itself—the size handling, range request
translation, and multipart machinery will work unchanged.

Originally-by: Kyle Bader <kbader@ibm.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Matthew N. Heler <matthew.heler@hotmail.com>
3 weeks agoMerge pull request #68962 from afreen23/remove-fa
Afreen Misbah [Wed, 20 May 2026 17:57:32 +0000 (23:27 +0530)]
Merge pull request #68962 from afreen23/remove-fa

mgr/dashboard: Remove font awesome icon package

Reviewed-by: Nizamudeen A <nia@redhat.com>
3 weeks agorgw/dedup: add Admin OPS REST API for dedup commands
benhanokh [Tue, 12 May 2026 12:44:48 +0000 (15:44 +0300)]
rgw/dedup: add Admin OPS REST API for dedup commands

Tracker: https://ibm-ceph.atlassian.net/browse/ISCE-4600

Expose the existing radosgw-admin dedup commands (stats, estimate, exec,
abort, pause, resume, throttle) as HTTP Admin OPS endpoints under
/{admin}/dedup, following the same pattern used by ratelimit, usage, and
other admin REST APIs.

New files:
- rgw_rest_dedup.h: RGWHandler_Dedup and RGWRESTMgr_Dedup
- rgw_rest_dedup.cc: REST op classes calling the same cluster:: backend
  functions as radosgw-admin

API summary:
- GET  /dedup?op=stats     - collect and display dedup statistics
- GET  /dedup?op=throttle  - display throttle settings
- POST /dedup?op=estimate  - start dedup estimate session
- POST /dedup?op=exec      - start full dedup (requires yes-i-really-mean-it)
- POST /dedup?op=abort     - abort active dedup session
- POST /dedup?op=pause     - pause active dedup session
- POST /dedup?op=resume    - resume paused dedup session
- POST /dedup?op=throttle  - set throttle limits

Documentation added to doc/radosgw/adminops.rst with cross-reference
from doc/radosgw/s3_objects_dedup.rst.

Signed-off-by: benhanokh <gbenhano@redhat.com>
3 weeks agoqa/openssl-keys: enable wildcard dns with subjectAltName
Casey Bodley [Mon, 27 Apr 2026 14:53:38 +0000 (10:53 -0400)]
qa/openssl-keys: enable wildcard dns with subjectAltName

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agoqa/rgw: RGWEndpoint.url() contains dns-name if configured
Casey Bodley [Mon, 27 Apr 2026 13:36:05 +0000 (09:36 -0400)]
qa/rgw: RGWEndpoint.url() contains dns-name if configured

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agoqa/rgw: add s3control subsuite
Casey Bodley [Thu, 30 Apr 2026 16:47:32 +0000 (12:47 -0400)]
qa/rgw: add s3control subsuite

i would prefer to run the s3control test coverage in rgw/verify, but it
depends on rgw_dns_name configuration and support for wildcard dns which
breaks most of the other rgw/verify test cases

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agoqa/rgw: s3tests task configures account ids
Casey Bodley [Fri, 29 Aug 2025 14:51:38 +0000 (10:51 -0400)]
qa/rgw: s3tests task configures account ids

s3tests for s3control and iam apis need to know the account id

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agorgw: add s3control apis for PublicAccessBlock
Casey Bodley [Tue, 1 Jul 2025 04:49:20 +0000 (00:49 -0400)]
rgw: add s3control apis for PublicAccessBlock

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agorgw/s3: apply vhost logic to s3 only
Casey Bodley [Thu, 3 Jul 2025 16:01:18 +0000 (12:01 -0400)]
rgw/s3: apply vhost logic to s3 only

the vhost-style transformations ran in RGWREST::preprocess() before we
even route the request, so applied to every REST API in radosgw

vhost-style requests are specific to the S3 API, so they should only
apply after being routed to RGWRESTMgr_S3

extract the vhost logic from RGWREST::proprocess() into
rgw_rest_transform_s3_vhost_style(), and call that only from
RGWRESTMgr_S3::get_resource_mgr_as_default()

url-decoding of request_uri into decoded_uri is now duplicated in
preprocess() to apply to all requests, then again after vhost-style
transforms the request_uri

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agorgw/rest: use ceph::split() for rgw_enable_apis
Casey Bodley [Thu, 3 Jul 2025 00:23:54 +0000 (20:23 -0400)]
rgw/rest: use ceph::split() for rgw_enable_apis

avoid allocating a list of strings to parse the comma-separated
rgw_enable_apis configuration

the range returned by ceph::split() has no size() function, so change
the calculation to not require it - `size() - distance(begin(), pos)`
is the same thing as `distance(pos, end())`

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agorgw/rest: add RGWRESTMgr_S3Website
Casey Bodley [Wed, 2 Jul 2025 21:01:15 +0000 (17:01 -0400)]
rgw/rest: add RGWRESTMgr_S3Website

move some s3website stuff out of RGWRESTMgr_S3::get_handler() into its
own nested RGWRESTMgr

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agorgw/main: clean up use of rgw_enable_apis
Casey Bodley [Wed, 2 Jul 2025 19:26:02 +0000 (15:26 -0400)]
rgw/main: clean up use of rgw_enable_apis

replace `get_str_vec()` with `ceph::split()`

replace `map<string, bool>` with `set<string>`

replace `count(key) > 0` with `contains(key)`

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agorgw/iam: add s3:Get/PutAccountPublicAccessBlock actions
Casey Bodley [Tue, 1 Jul 2025 03:50:37 +0000 (23:50 -0400)]
rgw/iam: add s3:Get/PutAccountPublicAccessBlock actions

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agorgw: enforce BlockPublicAcls on CreateBucket
Casey Bodley [Tue, 1 Jul 2025 13:45:56 +0000 (09:45 -0400)]
rgw: enforce BlockPublicAcls on CreateBucket

this check is unique to account-level PublicAccessBlock configuration

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agorgw: add helper for bucket + account PublicAccessBlock config
Casey Bodley [Mon, 30 Jun 2025 22:06:08 +0000 (18:06 -0400)]
rgw: add helper for bucket + account PublicAccessBlock config

get_public_access_conf() takes an optional account, and checks
RGW_ATTR_PUBLIC_ACCESS on that in addition to the bucket. if both attrs
are found, return the union of their configurations

Signed-off-by: Casey Bodley <cbodley@redhat.com>
3 weeks agorgw: req_state::public_access_block is not optional
Casey Bodley [Mon, 30 Jun 2025 21:53:38 +0000 (17:53 -0400)]
rgw: req_state::public_access_block is not optional

a default-constructed PublicAccessBlockConfiguration (with all bool
members set to false) makes for a perfectly good empty state

Signed-off-by: Casey Bodley <cbodley@redhat.com>