]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
3 days agomgr/dashboard: Rename Alerts tab to All Alerts 66478/head
Sagar Gopale [Tue, 2 Dec 2025 12:54:46 +0000 (18:24 +0530)]
mgr/dashboard: Rename Alerts tab to All Alerts

Fixes: https://tracker.ceph.com/issues/74051
Signed-off-by: Sagar Gopale <sagar.gopale@ibm.com>
4 days agoMerge pull request #65900 from nbalacha/wip-nbalacha-71365
Yuval Lifshitz [Tue, 2 Dec 2025 12:34:09 +0000 (14:34 +0200)]
Merge pull request #65900 from nbalacha/wip-nbalacha-71365

rgw/bucket-logging: support EC pools

4 days agoMerge pull request #66339 from rhcs-dashboard/cephfs-mirror-list-endpoint
Pedro Gonzalez Gomez [Tue, 2 Dec 2025 11:28:31 +0000 (12:28 +0100)]
Merge pull request #66339 from rhcs-dashboard/cephfs-mirror-list-endpoint

mgr/dashboard: add GET endpoints for CephFS mirror peers

Reviewed-by: Dnyaneshwari Talwekar <dtalweka@redhat.com>
4 days agoMerge pull request #66461 from imran-imtiaz/dashboard
Imran Imtiaz [Tue, 2 Dec 2025 09:59:59 +0000 (09:59 +0000)]
Merge pull request #66461 from imran-imtiaz/dashboard

mgr/dashboard: add API endpoint to delete images from consistency groups

4 days agoMerge pull request #66440 from tchaikov/wip-avoid-odr
Kefu Chai [Tue, 2 Dec 2025 04:46:55 +0000 (12:46 +0800)]
Merge pull request #66440 from tchaikov/wip-avoid-odr

osd: fix ODR violation in max_prio_map

Reviewed-by: Matan Breizman <mbreizma@ibm.com>
4 days agoMerge PR #66328 into main
Patrick Donnelly [Tue, 2 Dec 2025 02:13:41 +0000 (21:13 -0500)]
Merge PR #66328 into main

* refs/pull/66328/head:
mon/HealthMonitor: avoid MON_DOWN for freshly added Monitor
mon: add time_added to mon_info_t
common/options: add missing runtime flag
mon/MonMap: cleanup initialization

Reviewed-by: Bill Scales <bill_scales@uk.ibm.com>
5 days agoMerge pull request #66462 from cbodley/wip-cmake-breakpad-arch2
Casey Bodley [Mon, 1 Dec 2025 21:22:30 +0000 (16:22 -0500)]
Merge pull request #66462 from cbodley/wip-cmake-breakpad-arch2

cmake: fix for -DWITH_BREAKPAD=OFF

Reviewed-by: Joseph Mundackal <jmundackal@bloomberg.net>
5 days agoMerge pull request #66431 from cbodley/wip-doc-release-os-recommendations
Ilya Dryomov [Mon, 1 Dec 2025 19:05:43 +0000 (20:05 +0100)]
Merge pull request #66431 from cbodley/wip-doc-release-os-recommendations

doc: add Tentacle to os recommendations

Reviewed-by: Ville Ojamo <14869000+bluikko@users.noreply.github.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
5 days agodoc: remove redundant note about tested container hosts 66431/head
Casey Bodley [Mon, 1 Dec 2025 17:53:59 +0000 (12:53 -0500)]
doc: remove redundant note about tested container hosts

Signed-off-by: Casey Bodley <cbodley@redhat.com>
5 days agodoc: remove old distros from os recommendations
Casey Bodley [Mon, 1 Dec 2025 17:53:42 +0000 (12:53 -0500)]
doc: remove old distros from os recommendations

Signed-off-by: Casey Bodley <cbodley@redhat.com>
5 days agocmake: fix for -DWITH_BREAKPAD=OFF 66462/head
Casey Bodley [Mon, 1 Dec 2025 15:25:16 +0000 (10:25 -0500)]
cmake: fix for -DWITH_BREAKPAD=OFF

in 1ba55a20be1023c585ba96617dc6a9d2aa79a51b, i tried to avoid the NOT
condition by swapping the option's defaults. but when the condition is
false, the option is forced to ON even if the user manually set it OFF

fix this by inverting the condition and swapping the default values

Reported-by: Joseph Mundackal <joseph.j.mundackal@gmail.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
5 days agoMerge pull request #63794 from clwluvw/enc-copy
Casey Bodley [Mon, 1 Dec 2025 15:33:11 +0000 (10:33 -0500)]
Merge pull request #63794 from clwluvw/enc-copy

rgw: implement CopyObject for encrypted objects

Reviewed-by: Casey Bodley <cbodley@redhat.com>
5 days agomgr/dashboard: add API endpoint to delete images from consistency groups 66461/head
Imran Imtiaz [Mon, 1 Dec 2025 14:25:07 +0000 (14:25 +0000)]
mgr/dashboard: add API endpoint to delete images from consistency groups

Signed-off-by: Imran Imtiaz <imran.imtiaz@uk.ibm.com>
Fixes: https://tracker.ceph.com/issues/74033
Create a consistency group dashboard API endpoint that enables removal
of RBD images from the group.

5 days agoMerge pull request #66410 from aclamk/aclamk-encode-fix-debug-macro
Adam Kupczyk [Mon, 1 Dec 2025 14:09:05 +0000 (15:09 +0100)]
Merge pull request #66410 from aclamk/aclamk-encode-fix-debug-macro

encode: Fix bad use of DENC_DUMP_PRE

5 days agoosd: fix ODR violation in max_prio_map 66440/head
Kefu Chai [Thu, 27 Nov 2025 12:28:31 +0000 (20:28 +0800)]
osd: fix ODR violation in max_prio_map

The static std::map max_prio_map was defined in the osd_types.h header
file, causing every translation unit that included this header to get
its own copy of the variable. This led to One Definition Rule (ODR)
violations where multiple instances of the same variable existed at
runtime.

During program cleanup, destructors for these multiple instances would
attempt to free the same memory regions, resulting in segmentation
faults in tcmalloc/memory allocator as seen with ceph-dencoder.

This issue surfaced after a yet-merged-change which converts erasure_code
and json_spirit to OBJECT libraries. Before that change, these were
STATIC libraries that were linked via target_link_libraries. The
incorrect linkage meant their object files (and thus their copies of
max_prio_map) were kept separate and didn't conflict at runtime.

After converting to OBJECT libraries and properly incorporating them
into libceph-common.so (commit 8b0e3fb2c23), the multiple copies of
max_prio_map from different translation units all ended up in the same
shared library, exposing the ODR violation. During program exit, the
dynamic linker attempted to run destructors for all instances, leading
to double-free crashes.

Fix by moving the map into a static helper function in PeeringState.cc
(the only file that uses it). The map is now a function-local static
const variable, ensuring a single instance that is properly initialized
and destructed.

Backtrace before fix:
```
    #0  0x00007ffff7dbb1a0 in tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned int, int) () from /lib/x86_64-linux-gnu/libtcmalloc.so.4
    #1  0x00007ffff7dbb57f in tcmalloc::ThreadCache::Scavenge() () from /lib/x86_64-linux-gnu/libtcmalloc.so.4
    #2  0x00007ffff6bc8aa2 in std::__new_allocator<std::_Rb_tree_node<std::pair<int const, int> > >::deallocate (this=0x7ffff7d48f78 <max_prio_map>, __p=0x555555f43890, __n=1)
    #3  0x00007ffff6bc89f9 in std::allocator<std::_Rb_tree_node<std::pair<int const, int> > >::deallocate (this=0x7ffff7d48f78 <max_prio_map>, __p=0x555555f43890, __n=1)
    #4  std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<int const, int> > > >::deallocate (__a=..., __p=0x555555f43890, __n=1)
    #5  std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_put_node (this=0x7ffff7d48f78 <max_prio_map>, __p=0x555555f43890)
    #6  0x00007ffff6bc892e in std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_drop_node (this=0x7ffff7d48f78 <max_prio_map>, __p=0x555555f43890)
    #7  0x00007ffff6bc886e in std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_erase (this=0x7ffff7d48f78 <max_prio_map>, __x=0x555555f43890)
    #8  0x00007ffff6bc8854 in std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_erase (this=0x7ffff7d48f78 <max_prio_map>, __x=0x555555f43cb0)
    #9  0x00007ffff6bc8854 in std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_erase (this=0x7ffff7d48f78 <max_prio_map>, __x=0x555555f43ad0)
    #10 0x00007ffff6bc8805 in std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::~_Rb_tree (this=0x7ffff7d48f78 <max_prio_map>)
    #11 0x00007ffff6bc7345 in std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int> > >::~map (this=0x7ffff7d48f78 <max_prio_map>)
    #12 0x00007ffff484bd51 in __cxa_finalize (d=0x7ffff7d3f440) at ./stdlib/cxa_finalize.c:97
    #13 0x00007ffff6af9487 in __do_global_dtors_aux () from /home/kefu/dev/ceph/build/lib/libceph-common.so.2
    #14 0x00007ffff7fbfd20 in ?? ()
    #15 0x00007ffff7fc8fc2 in _dl_call_fini (closure_map=0x7fffffffd0f0, closure_map@entry=0x7ffff7fbfd20) at ./elf/dl-call_fini.c:43
    #16 0x00007ffff7fcbe72 in _dl_fini () at ./elf/dl-fini.c:120
    #17 0x00007ffff484c291 in __run_exit_handlers (status=0, listp=0x7ffff49f1680 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at ./stdlib/exit.c:118
    #18 0x00007ffff484c35a in __GI_exit (status=<optimized out>) at ./stdlib/exit.c:148
    #19 0x00007ffff4833caf in __libc_start_call_main (main=main@entry=0x55555556cd90 <main(int, char const**)>, argc=argc@entry=2, argv=argv@entry=0x7fffffffd488) at ../sysdeps/nptl/libc_start_call_main.h:74
    #20 0x00007ffff4833d65 in __libc_start_main_impl (main=0x55555556cd90 <main(int, char const**)>, argc=2, argv=0x7fffffffd488, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd478) at ../csu/libc-start.c:360
    #21 0x00005555555695e1 in _start ()
```

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
5 days agoMerge pull request #66407 from rhcs-dashboard/redirect-other-propery-name
Nizamudeen A [Mon, 1 Dec 2025 12:35:39 +0000 (18:05 +0530)]
Merge pull request #66407 from rhcs-dashboard/redirect-other-propery-name

mgr/dashboard: support custom prop for table item redirection

Reviewed-by: Afreen Misbah <afreen@ibm.com>
5 days agotest/rgw/logging: run teuthology on erasure coded pool 65900/head
Nithya Balachandran [Mon, 1 Dec 2025 12:35:06 +0000 (12:35 +0000)]
test/rgw/logging: run teuthology on erasure coded pool

Run the rgw bucket logging teuthology tests on an erasure coded pool.

Signed-off-by: Nithya Balachandran <nithya.balachandran@ibm.com>
5 days agorgw/bucket-logging: support for EC pools
Nithya Balachandran [Thu, 27 Nov 2025 12:03:36 +0000 (12:03 +0000)]
rgw/bucket-logging: support for EC pools

Log buckets can now be created within erasure-coded (EC) pools.
To support append operations, a temporary log record object is initially
created in the replicated default.rgw.log pool. This object is then copied
to the EC pool upon log record commitment.
All implicit log commit operations will execute asynchronously. A new
BucketLoggingManager class is responsible for processing these pending
commits at set intervals. Explicit commit operations, however, will
continue to be performed synchronously.

Fixes: https://tracker.ceph.com/issues/71365
Signed-off-by: Nithya Balachandran <nithya.balachandran@ibm.com>
5 days agoMerge pull request #66437 from rhcs-dashboard/fix-74008-main
afreen23 [Mon, 1 Dec 2025 11:56:07 +0000 (17:26 +0530)]
Merge pull request #66437 from rhcs-dashboard/fix-74008-main

mgr/dashboard: fix multi-cluster route reload logic

Reviewed-by: Afreen Misbah <afreen@ibm.com>
Reviewed-by: Nizamudeen A <nia@redhat.com>
5 days agoMerge pull request #66346 from rhcs-dashboard/fix-service-form
afreen23 [Mon, 1 Dec 2025 11:54:04 +0000 (17:24 +0530)]
Merge pull request #66346 from rhcs-dashboard/fix-service-form

mgr/dashboard: service creation fails if service name is same as sevice type

Reviewed-by: Afreen Misbah <afreen@ibm.com>
Reviewed-by: Nizamudeen A <nia@redhat.com>
5 days agoMerge pull request #66436 from rhcs-dashboard/add-sagar--to-mailmap-githubmap-organiz...
afreen23 [Mon, 1 Dec 2025 09:29:57 +0000 (14:59 +0530)]
Merge pull request #66436 from rhcs-dashboard/add-sagar--to-mailmap-githubmap-organizationmap

add Sagar Gopale to githubmap mailmap organizationmap

Reviewed-by: Afreen Misbah <afreen@ibm.com>
Reviewed-by: Abhishek Desai <abhishek.desai1@ibm.com>
5 days agoMerge pull request #65433 from mohit84/repeer_on_acting
SrinivasaBharathKanta [Mon, 1 Dec 2025 09:27:14 +0000 (14:57 +0530)]
Merge pull request #65433 from mohit84/repeer_on_acting

test: repeer_on_down_acting_member_coming_back is continuously failing

5 days agoMerge pull request #66417 from rhcs-dashboard/fix-server-sort
Nizamudeen A [Mon, 1 Dec 2025 08:27:19 +0000 (13:57 +0530)]
Merge pull request #66417 from rhcs-dashboard/fix-server-sort

mgr/dashboard: fix server side table sort

Reviewed-by: Afreen Misbah <afreen@ibm.com>
5 days agoMerge pull request #66375 from ronen-fr/wip-rf-eofread
Ronen Friedman [Mon, 1 Dec 2025 07:31:58 +0000 (09:31 +0200)]
Merge pull request #66375 from ronen-fr/wip-rf-eofread

osd/scrub: do not attempt to read past the end of an object

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Reviewed-by: Alex Ainscow <aainscow@uk.ibm.com>
5 days agomgr/dashboard: support custom prop for table item redirection 66407/head
Nizamudeen A [Tue, 25 Nov 2025 11:31:31 +0000 (17:01 +0530)]
mgr/dashboard: support custom prop for table item redirection

use an extra customTemplateConfig called `customRowProperty` where
you can provide the key of the property you wish to route, instead of
relying on the cell's prop itself

Fixes: https://tracker.ceph.com/issues/73989
Signed-off-by: Nizamudeen A <nia@redhat.com>
5 days agoMerge pull request #66330 from rhcs-dashboard/edit-realm
Nizamudeen A [Mon, 1 Dec 2025 07:27:16 +0000 (12:57 +0530)]
Merge pull request #66330 from rhcs-dashboard/edit-realm

mgr/dashboard: edit realm modal not working

Reviewed-by: Nizamudeen A <nia@redhat.com>
Reviewed-by: Afreen Misbah <afreen@ibm.com>
5 days agoMerge pull request #66321 from rhcs-dashboard/73832-navigation-e2e-failure
Nizamudeen A [Mon, 1 Dec 2025 06:44:44 +0000 (12:14 +0530)]
Merge pull request #66321 from rhcs-dashboard/73832-navigation-e2e-failure

mgr/dasboard : Fixes navigation e2e test

Reviewed-by: Nizamudeen A <nia@redhat.com>
6 days agoMerge pull request #66425 from baum/rbd_with_crc32c_nvmeof_service_spec
baum [Sun, 30 Nov 2025 09:22:54 +0000 (11:22 +0200)]
Merge pull request #66425 from baum/rbd_with_crc32c_nvmeof_service_spec

mgr/cephadm: add rbd_with_crc32c parameter to nvmeof service spec

6 days agoqa/standalone: osd-scrub-dump.sh: additional tests 66375/head
Ronen Friedman [Sat, 22 Nov 2025 14:48:46 +0000 (08:48 -0600)]
qa/standalone: osd-scrub-dump.sh: additional tests

Also - adding stride override parameter to the existing
large-object scrub test. And: improving the output format
of the test results.

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
6 days agoosd/scrub: extract the 'read object data' functionality
Ronen Friedman [Fri, 21 Nov 2025 13:39:29 +0000 (07:39 -0600)]
osd/scrub: extract the 'read object data' functionality

from be_deep_scrub() into a separate function,
ReplicatedBackend::be_deep_scrub_read().

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
6 days agoosd/scrub: do not attempt to read past the end of an object
Ronen Friedman [Thu, 20 Nov 2025 13:54:20 +0000 (07:54 -0600)]
osd/scrub: do not attempt to read past the end of an object

When performing deep scrubs, the scrubber reads object data
in strides. Existing code uses a short read to detect the end
of the object (and if the object size is a multiple of the
stride - an extra read is performed, which returns 0 bytes).

The proposed change is to avoid such extra read attempts,
by using our knowledge of the object size.

Also - some minor code cleanups in the relevant function.

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
6 days agoosd: provide fmtlib formatter for ScrubMapBuilder
Ronen Friedman [Sat, 22 Nov 2025 14:55:58 +0000 (08:55 -0600)]
osd: provide fmtlib formatter for ScrubMapBuilder

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
6 days agoMerge pull request #66230 from ronen-fr/wip-rf-larger-stride
Ronen Friedman [Sun, 30 Nov 2025 06:59:25 +0000 (08:59 +0200)]
Merge pull request #66230 from ronen-fr/wip-rf-larger-stride

osd/scrub: increasing the default data-read stride

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
Reviewed-by: Alex Ainscow <aainscow@uk.ibm.com>
Reviewed-by: Jon Bailey <jonathan.bailey1@ibm.com>
7 days agomgr/cephadm: add rbd_with_crc32c parameter to nvmeof service spec 66425/head
Alexander Indenbaum [Wed, 26 Nov 2025 12:28:51 +0000 (14:28 +0200)]
mgr/cephadm: add rbd_with_crc32c parameter to nvmeof service spec

Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
8 days agoMerge pull request #64248 from zhuwei127/fix-doublefree
Kefu Chai [Fri, 28 Nov 2025 13:35:46 +0000 (21:35 +0800)]
Merge pull request #64248 from zhuwei127/fix-doublefree

examples/librados: fix memory pointed to by 'rs' is freed twice.

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
8 days agoMerge pull request #65771 from aainscow/ec_direct_reads_pr_1
Alex Ainscow [Thu, 27 Nov 2025 23:17:37 +0000 (23:17 +0000)]
Merge pull request #65771 from aainscow/ec_direct_reads_pr_1

EC Direct Reads: First PR, background work

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Reviewed-by: Bill Scales <bill_scales@uk.ibm.com>
8 days agoMerge pull request #66377 from baum/rbd_aio_write_with_crc32c_initial_fix
Ilya Dryomov [Thu, 27 Nov 2025 22:58:38 +0000 (23:58 +0100)]
Merge pull request #66377 from baum/rbd_aio_write_with_crc32c_initial_fix

librbd: rbd_aio_write_with_crc32c store CRC32C with initial value -1 to match msgr2 validation

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
9 days agomgr/dashboard: fix multi-cluster route reload logic 66437/head
Aashish Sharma [Thu, 27 Nov 2025 09:22:47 +0000 (14:52 +0530)]
mgr/dashboard: fix multi-cluster route reload logic

Issue: Route was being force-reloaded using a two-step navigation hack causing unnecessary redirects and side effects.
Fix: Replaced the hack with Angular’s native same-URL reload using onSameUrlNavigation: 'reload' for a clean, stable route refresh.

Fixes: https://tracker.ceph.com/issues/74008
Signed-off-by: Aashish Sharma <aasharma@redhat.com>
9 days agoMerge pull request #65739 from tchaikov/rgw-gap-list-manpage
Kefu Chai [Thu, 27 Nov 2025 04:12:08 +0000 (12:12 +0800)]
Merge pull request #65739 from tchaikov/rgw-gap-list-manpage

debian: include rgw-gap-list manpage and rgw-policy-check in ceph-common

Reviewed-by: J. Eric Ivancich <ivancich@redhat.com>
Reviewed-by: Matan Breizman <mbreizma@ibm.com>
10 days agoMerge pull request #66166 from cbodley/wip-cmake-breakpad-arch
Casey Bodley [Wed, 26 Nov 2025 18:37:59 +0000 (13:37 -0500)]
Merge pull request #66166 from cbodley/wip-cmake-breakpad-arch

cmake: disable WITH_BREAKPAD on power arch

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
10 days agomgr/dashboard: add GET endpoint for CephFS mirror peers list and daemon status 66339/head
Pedro Gonzalez Gomez [Thu, 20 Nov 2025 14:09:03 +0000 (15:09 +0100)]
mgr/dashboard: add GET endpoint for CephFS mirror peers list and daemon status

Fixes: https://tracker.ceph.com/issues/74002
Signed-off-by: Pedro Gonzalez Gomez <pegonzal@ibm.com>
10 days agodoc: remove os recommendations for eol releases
Casey Bodley [Wed, 26 Nov 2025 16:06:16 +0000 (11:06 -0500)]
doc: remove os recommendations for eol releases

Signed-off-by: Casey Bodley <cbodley@redhat.com>
10 days agodoc/dev: add os-recommendations.rst to release checklist
Casey Bodley [Wed, 26 Nov 2025 15:44:14 +0000 (10:44 -0500)]
doc/dev: add os-recommendations.rst to release checklist

Signed-off-by: Casey Bodley <cbodley@redhat.com>
10 days agodoc: add Tentacle to os recommendations
Casey Bodley [Wed, 26 Nov 2025 15:41:31 +0000 (10:41 -0500)]
doc: add Tentacle to os recommendations

Signed-off-by: Casey Bodley <cbodley@redhat.com>
10 days agodoc: remove Octopus and Centos7 from os recommendations
Casey Bodley [Wed, 26 Nov 2025 15:36:53 +0000 (10:36 -0500)]
doc: remove Octopus and Centos7 from os recommendations

cleanup to prepare for tentacle

Signed-off-by: Casey Bodley <cbodley@redhat.com>
10 days agoMerge pull request #66416 from bluikko/doc-fscrypt-improvements-cephfs
bluikko [Wed, 26 Nov 2025 13:51:41 +0000 (20:51 +0700)]
Merge pull request #66416 from bluikko/doc-fscrypt-improvements-cephfs

doc/cephfs: Small improvements in fscrypt.rst

10 days agoMerge pull request #66420 from bluikko/doc-sphinx-warnings-202511
bluikko [Wed, 26 Nov 2025 13:51:21 +0000 (20:51 +0700)]
Merge pull request #66420 from bluikko/doc-sphinx-warnings-202511

doc: Fix Sphinx warnings

10 days agoMerge pull request #66421 from bluikko/doc-sphinx-warning-tentacle-202511
bluikko [Wed, 26 Nov 2025 13:50:50 +0000 (20:50 +0700)]
Merge pull request #66421 from bluikko/doc-sphinx-warning-tentacle-202511

doc/releases: Fix Sphinx warning in tentacle.rst

10 days agoMerge pull request #66423 from bluikko/doc-sphinx-warning-theme-202511
bluikko [Wed, 26 Nov 2025 13:50:36 +0000 (20:50 +0700)]
Merge pull request #66423 from bluikko/doc-sphinx-warning-theme-202511

doc: Fix Sphinx warning about theme option

10 days agocommon/options: document osd_deep_scrub_stride 66230/head
Ronen Friedman [Sun, 23 Nov 2025 14:02:04 +0000 (16:02 +0200)]
common/options: document osd_deep_scrub_stride

default value change (from 0.5MB to 4MB)

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
10 days agoosdc: Add SplitOp capability to Objecter 65771/head
Alex Ainscow [Tue, 14 Oct 2025 08:24:56 +0000 (09:24 +0100)]
osdc: Add SplitOp capability to Objecter

This will provide the ability for Objecter to split up
certain ops and distribute them to the OSDs directly if
that provides a preformance advantage.

This is experimental code and is switched off unless the
magic pool flags are enabled. These magic pool flags were
pushed in an earlier commit in the same PR.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosdc: Fix minor typo
Alex Ainscow [Mon, 13 Oct 2025 11:50:11 +0000 (12:50 +0100)]
osdc: Fix minor typo

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosdc: Interface to allow split reads to copy op from client op to split op
Alex Ainscow [Fri, 3 Oct 2025 14:34:55 +0000 (15:34 +0100)]
osdc: Interface to allow split reads to copy op from client op to split op

When spliting ops, certain addition sub ops (e.g. get xattr) can be simply passed
through to the child op.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosdc: Add stub for ability to force an op to always go to a particular shard
Alex Ainscow [Fri, 3 Oct 2025 14:32:22 +0000 (15:32 +0100)]
osdc: Add stub for ability to force an op to always go to a particular shard

This will eventually be used by SplitIo to direct ops to the correct OSD.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosdc: Split handle_osd_op_reply into two functions
Alex Ainscow [Fri, 3 Oct 2025 14:15:29 +0000 (15:15 +0100)]
osdc: Split handle_osd_op_reply into two functions

The functionality is not altered by this commit.

In the future we want to post-process split-ios after
recombining the read data.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosdc: Remove unused con parameter from Objecter::_calc_target()
Alex Ainscow [Fri, 3 Oct 2025 14:11:00 +0000 (15:11 +0100)]
osdc: Remove unused con parameter from Objecter::_calc_target()

This parameter is not used by the _calc_target code.  It is being
removed just to clean up the code, as we are making some changes
to _calc_target in later stages of the split io PR.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosdc: Interface to submit IO with ASIO Post.
Alex Ainscow [Fri, 3 Oct 2025 13:55:56 +0000 (14:55 +0100)]
osdc: Interface to submit IO with ASIO Post.

For direct read failures, the locking is such that we cannot
immediately send a new IO without deadlocking. This new interface
allows an op to be sent as an asio post.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosd: Call clear_repop_obc for EC as well as Replica.
Alex Ainscow [Fri, 3 Oct 2025 13:51:23 +0000 (14:51 +0100)]
osd: Call clear_repop_obc for EC as well as Replica.

This function is necessary for balanced reads and as such is required for EC too.

Rename the function to make sense, given this change of purpose, but the
functionality does not change.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosd: Implement sync reads and sparse reads for EC for direct reads
Alex Ainscow [Fri, 3 Oct 2025 13:39:03 +0000 (14:39 +0100)]
osd: Implement sync reads and sparse reads for EC for direct reads

Sparse reads for EC are simple to implement, as the code is essentially
identical to that of replica, with some address translation.

When doing a direct read in EC, only a single OSD is involved and
that OSD, by definition is the only OSD involved. As such we can
do the more performant sync read, rather than async read.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosd: Add extent_to_shard_extent interface to PGBackend.
Alex Ainscow [Fri, 3 Oct 2025 13:24:49 +0000 (14:24 +0100)]
osd: Add extent_to_shard_extent interface to PGBackend.

This allows a backend to expose how an object offset/length translates to
an offset/length on a particular shard.

For Replica, this is trivial.

For EC, this means looking up the start and end offsets, then translating
this to shard address space.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosd: Set the from shard in the EC read reply.
Alex Ainscow [Fri, 3 Oct 2025 13:17:48 +0000 (14:17 +0100)]
osd: Set the from shard in the EC read reply.

This was not necessary prior to direct reads, but is essential when the
client needs to know which shard the read came from.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosd: Generalise can_serve_replica_read for consumption by EC.
Alex Ainscow [Fri, 3 Oct 2025 13:15:32 +0000 (14:15 +0100)]
osd: Generalise can_serve_replica_read for consumption by EC.

The can_serve_replica_read() function is called by replica to determine whether there are
any uncommitted writes.  If such writes exist, then the system will reject the IO to avoid
the risk of reading data from a write which may yet be rolled back.

The same code is going to be useful for EC direct reads.

The string_view code is not expensive.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosd: Create EC Direct Read flag and pass through to EC.
Alex Ainscow [Fri, 3 Oct 2025 13:00:10 +0000 (14:00 +0100)]
osd: Create EC Direct Read flag and pass through to EC.

This is in preperation for supporting sparse and sync reads in EC.
Such ops will only be supported for "balance reads".

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosd: Replace unused EC offset translation function with useful one.
Alex Ainscow [Fri, 3 Oct 2025 12:53:33 +0000 (13:53 +0100)]
osd: Replace unused EC offset translation function with useful one.

The old chunk_aligned_shard_offset_to_ro_offset was not only unused, it
didn't actually have the correct logic. We replace it here with similar,
but more useful function that will be used in sparse reads for EC

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoosd: Introduce pool flag for "split IO" and Plugin flag for "direct read"
Alex Ainscow [Fri, 3 Oct 2025 12:49:58 +0000 (13:49 +0100)]
osd: Introduce pool flag for "split IO" and Plugin flag for "direct read"

These flags will currently behave as follows:

1. The pool flag is never set, unless by a user with the osd_pool_default_flags
   config option.
2. The pool flag will be removed for EC pools where the plugin does not support
   direct reads.
3. Replica pools will never remove the flag.

The intention is to eventually invert this logic and allow split IOs upon
upgrade to Umberella in this same function.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
10 days agoadd Sagar Gopale to githubmap mailmap organizationmap 66436/head
Sagar Gopale [Wed, 26 Nov 2025 11:04:50 +0000 (16:34 +0530)]
add Sagar Gopale to githubmap mailmap organizationmap
Signed-off-by: Sagar Gopale <sagar.gopale@ibm.com>
10 days agoMerge pull request #66340 from imran-imtiaz/dashboard
Imran Imtiaz [Wed, 26 Nov 2025 09:33:45 +0000 (09:33 +0000)]
Merge pull request #66340 from imran-imtiaz/dashboard

mgr/dashboard: add GET API endpoint for consistency groups

10 days agoencode: Fix bad use of DENC_DUMP_PRE 66410/head
Adam Kupczyk [Tue, 25 Nov 2025 16:45:01 +0000 (16:45 +0000)]
encode: Fix bad use of DENC_DUMP_PRE

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
10 days agodoc: Fix Sphinx warning about theme option 66423/head
Ville Ojamo [Wed, 26 Nov 2025 08:22:17 +0000 (15:22 +0700)]
doc: Fix Sphinx warning about theme option

The Sphinx theme "sphinx_rtd_theme" dropped support for "display_version"
theme option in version 3 (currently used: 3.0.2).

Because the "ceph" theme inherits that theme, remove all references to
"display_version" from it.

Signed-off-by: Ville Ojamo <14869000+bluikko@users.noreply.github.com>
10 days agolibrbd: store CRC32C with initial value -1 to match msgr2 validation 66377/head
Alexander Indenbaum [Sun, 23 Nov 2025 12:21:39 +0000 (14:21 +0200)]
librbd: store CRC32C with initial value -1 to match msgr2 validation

Fix runtime error, using test command:
   sudo dd if=/dev/zero bs=32k of=/dev/nvme0n1 count=1

The error log:
   2025-11-23T11:24:10.512+0000 7f30f4ec0640  1 --2- [v2:192.168.13.2:6802/3444906816,v1:192.168.13.2:6803/3444906816] >> 192.168.13.3:0/3916714748 conn(0x527d400 0x728f700 crc :-1 s=THROTTLE_DONE pgs=2038703 gs=2038723 cs=0 l=1 c_cookie=0 s_cookie=0 reconnecting=0 rev1=1 crypto rx=0 tx=0 comp rx=0 tx=0)._handle_read_frame_epilogue_main bad segment crc calculated=1136411986 expected=4294967295

Ceph msgr2 validation (ceph/src/msg/async/frames_v2.cc:47):
   uint32_t crc = segment_bl.crc32c(-1);  // Uses initial value -1

Co-authored-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
10 days agodoc/release: Fix Sphinx warning in tentacle.rst 66421/head
Ville Ojamo [Wed, 26 Nov 2025 07:30:36 +0000 (14:30 +0700)]
doc/release: Fix Sphinx warning in tentacle.rst

Add an empty line between blocks to fix a warning:

/home/docs/checkouts/readthedocs.org/user_builds/ceph/checkouts/66416/doc/releases/tentacle.rst:97: ERROR: Unexpected indentation.

Signed-off-by: Ville Ojamo <14869000+bluikko@users.noreply.github.com>
10 days agodoc: Fix Sphinx warnings 66420/head
Ville Ojamo [Wed, 26 Nov 2025 07:24:39 +0000 (14:24 +0700)]
doc: Fix Sphinx warnings

Fix section title underline lengths in dev/cephfs-fscrypt.rst
radosgw/adminops.rst.

Use "figure" keyword instead of "image" and use the caption feature in
dev/cephfs-fscrypt.rst.

Remove circular toc reference in dev/crimson/index.rst.

Add an empty line after block in
rados/troubleshooting/troubleshooting-pg.rst.

Signed-off-by: Ville Ojamo <14869000+bluikko@users.noreply.github.com>
10 days agodoc/cephfs: Small improvements in fscrypt.rst 66416/head
Ville Ojamo [Wed, 26 Nov 2025 05:33:19 +0000 (12:33 +0700)]
doc/cephfs: Small improvements in fscrypt.rst

Fix Sphinx warnings about section title underline lengths.
Use title case in section titles.

Change Unicode quotation marks to ASCII.

Use ordered list for lines that were supposedly intended to be a list.

Use double backticks for literals.
Use image caption formatting.

Remove unnecessary comma and other small language improvements.

Capitalize MDS, OSD, etc.

Signed-off-by: Ville Ojamo <14869000+bluikko@users.noreply.github.com>
10 days agomgr/dashboard: fix server side table sort 66417/head
Nizamudeen A [Wed, 26 Nov 2025 06:20:40 +0000 (11:50 +0530)]
mgr/dashboard: fix server side table sort

show a loading screen when the sort is being performed through
server-side since the sort will happen a little slow

It will be more visible in bigger environments, and with test env if you
try to sort too many time in a short interval and you start to see some
inconsistencies. This is only there for tables like OSDs or hosts where
we have the server side rendering enabled

Fixes: https://tracker.ceph.com/issues/73994
Signed-off-by: Nizamudeen A <nia@redhat.com>
11 days agorgw: fix offset calculation in copy_obj_data 63794/head
Seena Fallah [Tue, 25 Nov 2025 18:22:44 +0000 (19:22 +0100)]
rgw: fix offset calculation in copy_obj_data

Set ofs to total bytes read by adding 1 to end offset.
Since 'end' represents the last byte offset (zero-indexed),
we need to add 1 to get the actual number of bytes copied.

Signed-off-by: Seena Fallah <seenafallah@gmail.com>
11 days agoMerge pull request #66333 from shraddhaag/wip-shraddhaag-increase-reactors
Shraddha Agrawal [Tue, 25 Nov 2025 16:05:39 +0000 (21:35 +0530)]
Merge pull request #66333 from shraddhaag/wip-shraddhaag-increase-reactors

qa/clusters/crimson: increase reactors count

11 days agomon/HealthMonitor: avoid MON_DOWN for freshly added Monitor 66328/head
Patrick Donnelly [Wed, 19 Nov 2025 23:16:21 +0000 (18:16 -0500)]
mon/HealthMonitor: avoid MON_DOWN for freshly added Monitor

In testing, we often have the scenario where cephadm has created a
cluster but doesn't add more monitors until well past
mon_down_mkfs_grace. This causes useless MON_DOWN warnings to be thrown
which fails QA jobs. Avoid this situation entirely by giving a
reasonable grace period for a monitor added to the MonMap to join
quorum.

Fixes: https://tracker.ceph.com/issues/73934
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
11 days agomon: add time_added to mon_info_t
Patrick Donnelly [Wed, 19 Nov 2025 23:15:51 +0000 (18:15 -0500)]
mon: add time_added to mon_info_t

So we know when the Monitor was added to the map.

Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
11 days agocommon/options: add missing runtime flag
Patrick Donnelly [Wed, 19 Nov 2025 18:45:46 +0000 (13:45 -0500)]
common/options: add missing runtime flag

Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
11 days agomon/MonMap: cleanup initialization
Patrick Donnelly [Wed, 19 Nov 2025 18:10:27 +0000 (13:10 -0500)]
mon/MonMap: cleanup initialization

Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
11 days agocmake: disable WITH_BREAKPAD on power arch 66166/head
Casey Bodley [Fri, 7 Nov 2025 14:22:01 +0000 (09:22 -0500)]
cmake: disable WITH_BREAKPAD on power arch

Reported-by: T K Chandra Hasan <t.k.chandra.hasan@ibm.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
11 days agocmake: use cmake_dependent_option for WITH_BREAKPAD
Casey Bodley [Fri, 7 Nov 2025 14:17:47 +0000 (09:17 -0500)]
cmake: use cmake_dependent_option for WITH_BREAKPAD

a bit simpler without the WITH_BREAKPAD_DEFAULT part, and causes the
WITH_BREAKPAD option to be hidden from cmake-gui on WIN32

Signed-off-by: Casey Bodley <cbodley@redhat.com>
11 days agoMerge pull request #66336 from Matan-B/wip-matanb-crimson-snapmapper-osddriver
Matan Breizman [Tue, 25 Nov 2025 13:59:03 +0000 (15:59 +0200)]
Merge pull request #66336 from Matan-B/wip-matanb-crimson-snapmapper-osddriver

osd/SnapMapper: fix Crimson logs

Reviewed-by: Aishwarya Mathuria <amathuri@redhat.com>
11 days agoMerge pull request #66332 from rhcs-dashboard/73854-CephFS-Authorize-modal-Update...
afreen23 [Tue, 25 Nov 2025 11:00:32 +0000 (16:30 +0530)]
Merge pull request #66332 from rhcs-dashboard/73854-CephFS-Authorize-modal-Update-issues

mgr/dashboard : fix - CephFS Authorize Modal Update issue

Reviewed-by: Dnyaneshwari Talwekar dtalweka@redhat.com
11 days agoMerge pull request #66382 from bluikko/doc-mgmt-gateway-improvements-cephadm
bluikko [Tue, 25 Nov 2025 05:22:05 +0000 (12:22 +0700)]
Merge pull request #66382 from bluikko/doc-mgmt-gateway-improvements-cephadm

doc/cephadm: Fix command plus improvements in services/mgmt-gateway.rst

12 days agoMerge pull request #66006 from afreen23/carbonize-chnage-password
afreen23 [Mon, 24 Nov 2025 12:22:40 +0000 (17:52 +0530)]
Merge pull request #66006 from afreen23/carbonize-chnage-password

mgr/dashboard: Carbonize the Change Password Form

Reviewed-by: Nizamudeen A <nia@redhat.com>
Reviewed-by: Aashish Sharma <aasharma@redhat.com>
Reviewed-by: Dnyaneshwari Talwekar dtalweka@redhat.com
12 days agoMerge pull request #66326 from afreen23/fixes-mixins
afreen23 [Mon, 24 Nov 2025 12:17:33 +0000 (17:47 +0530)]
Merge pull request #66326 from afreen23/fixes-mixins

monitoring: Fixes for development

Reviewed-by: Nizamudeen A <nia@redhat.com>
Reviewed-by: Anthony D Atri <anthony.datri@gmail.com>
12 days agomgr/dashboard : fix - CephFS Authorize Modal Update issue 66332/head
Devika Babrekar [Thu, 20 Nov 2025 11:33:56 +0000 (17:03 +0530)]
mgr/dashboard : fix - CephFS Authorize Modal Update issue
fixes : https://tracker.ceph.com/issues/73854
Signed-off-by: Devika Babrekar <devika.babrekar@ibm.com>
12 days agodoc/cephadm: Fix command plus improvements in service/mgmt-gateway.rst 66382/head
Ville Ojamo [Mon, 24 Nov 2025 09:34:19 +0000 (16:34 +0700)]
doc/cephadm: Fix command plus improvements in service/mgmt-gateway.rst

Remove double backticks from a CLI command.

Use bash prompt consistently for CLI command blocks.

Don't capitalize word in middle of sentence.

Talk about "admin" instead of "user", similarly to the last text
paragraph in the doc.

Signed-off-by: Ville Ojamo <14869000+bluikko@users.noreply.github.com>
12 days agoqa/clusters/crimson: increase reactors count 66333/head
Shraddha Agrawal [Thu, 20 Nov 2025 12:41:16 +0000 (18:11 +0530)]
qa/clusters/crimson: increase reactors count

This commit increases the number of reactors in fixed-1 and
fixed-2 crimson clusters.

Signed-off-by: Shraddha Agrawal <shraddhaag@ibm.com>
12 days agomgr/dashboard: Carbonize the Change Password Form 66006/head
Afreen Misbah [Tue, 21 Oct 2025 16:37:46 +0000 (22:07 +0530)]
mgr/dashboard: Carbonize the Change Password Form

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

-  using carbon based stylings, typography and components
-  used grid layout for form arrangement
-  breadcrumb is slightly off, which needs to be fixed by applying grid layout to the app shell

Signed-off-by: Afreen Misbah <afreen@ibm.com>
12 days agoMerge pull request #66372 from tchaikov/wip-qa-encoder-exclude
Kefu Chai [Mon, 24 Nov 2025 08:27:14 +0000 (16:27 +0800)]
Merge pull request #66372 from tchaikov/wip-qa-encoder-exclude

qa/suites/rados/encoder: exclude ceph-osd-classic when installing LTS…

Reviewed-by: Matan Breizman <mbreizma@ibm.com>
12 days agoqa/suites/rados/encoder: exclude ceph-osd-* when installing LTS releases 66372/head
Kefu Chai [Sat, 22 Nov 2025 00:24:36 +0000 (08:24 +0800)]
qa/suites/rados/encoder: exclude ceph-osd-* when installing LTS releases

In a37b5b5, the ceph-osd-classic and ceph-osd-crimson packages were
added to qa/packages/packages.yaml. The "install" task uses this file as
the default package list for all branches, including LTS releases like
Reef.

However, a37b5b5 only exists in the main branch and won't be backported
to LTS branches. This causes installation failures in the rados/encoder
test suite, which verifies forward compatibility by installing LTS
releases and testing whether they can decode the latest corpus.

Exclude ceph-osd-classic and ceph-osd-crimson from LTS installations to
ensure the test suite can successfully install ceph-dencoder, which is
required for the interoperability tests.

Fixes: https://tracker.ceph.com/issues/73957
Signed-off-by: Kefu Chai <k.chai@proxmox.com>
12 days agoMerge pull request #66293 from anthonyeleven/instore.dbnoonecanhearyouscream
Anthony D'Atri [Mon, 24 Nov 2025 06:07:04 +0000 (01:07 -0500)]
Merge pull request #66293 from anthonyeleven/instore.dbnoonecanhearyouscream

doc: Improve start/hardware-recommendations.rst

2 weeks agoMerge pull request #65995 from pcuzner/rocksdb_compaction_metric
Laura Flores [Sat, 22 Nov 2025 00:04:21 +0000 (18:04 -0600)]
Merge pull request #65995 from pcuzner/rocksdb_compaction_metric

rados/osd: enable compact_running perfcounter at PRIO=5

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Reviewed-by: Neha Ojha <nojha@ibm.com>
2 weeks agoMerge pull request #65694 from mohit84/mclock_scheduler_monc
Laura Flores [Sat, 22 Nov 2025 00:02:45 +0000 (18:02 -0600)]
Merge pull request #65694 from mohit84/mclock_scheduler_monc

osd: Remove monc reference from scheduler

Reviewed-by: Sridhar Seshasayee <sseshasa@redhat.com>
Reviewed-by: Matan Breizman <mbreizma@redhat.com>
2 weeks agoMerge pull request #65687 from pdvian/wip-73272-autoscaler
Laura Flores [Sat, 22 Nov 2025 00:00:16 +0000 (18:00 -0600)]
Merge pull request #65687 from pdvian/wip-73272-autoscaler

pybind/mgr/pg_autoscaler: Introduce dynamic threshold to improve scal…

Reviewed-by: Kamoltat (Junior) Sirivadhna <ksirivad@redhat.com>
2 weeks agoMerge pull request #65698 from cbodley/wip-72771
Laura Flores [Fri, 21 Nov 2025 23:56:55 +0000 (17:56 -0600)]
Merge pull request #65698 from cbodley/wip-72771

osdc: Objecter::linger_by_cookie() for safe cast from uint64

Reviewed-by: J. Eric Ivancich <ivancich@redhat.com>
2 weeks agoMerge pull request #65615 from chungfengz-syno/fix-get_addr_from_invalid_rank
Laura Flores [Fri, 21 Nov 2025 23:52:35 +0000 (17:52 -0600)]
Merge pull request #65615 from chungfengz-syno/fix-get_addr_from_invalid_rank

mon/Elector.cc: prevent assertion failure when receiving pings from r…

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
2 weeks agodoc: Improve start/hardware-recommendations.rst 66293/head
Anthony D'Atri [Mon, 17 Nov 2025 17:57:29 +0000 (12:57 -0500)]
doc: Improve start/hardware-recommendations.rst

Signed-off-by: Anthony D'Atri <anthonyeleven@users.noreply.github.com>