Bill Scales [Thu, 20 Mar 2025 11:45:46 +0000 (11:45 +0000)]
test: test_bluefs_ex.cc - use after free bug
This test case calls exit() to terminiate a test mid flight to test
recovery from crashes at different points in the code. However it
does not stop threads before calling exit and consequently these
threads can continue to access mempool structures that have gone
out of scope and are freed by the exiting thread.
The introduction of a unique_ptr into mempool causes these threads
to assert when they access the freed memory.
The simple fix is to call _exit instead of exit in the test case
so that global destructors are not run.
Signed-off-by: Bill Scales <bill_scales@uk.ibm.com>
Bill Scales [Fri, 26 Jul 2024 09:11:25 +0000 (09:11 +0000)]
src/common/mempool.cc: Choose shard with sched_getcpu() to reduce cache line thashing
Improve the performance of mempool sharding on systems with sched_getcpu()
The idea is to assign threads to shards based on which CPU core they are
executing on using sched_getcpu() to select the shard. All the threads
executing on the same CPU core share the same shard. If each CPU core has its
own shard there should be no cache line contention.
Fixes: https://tracker.ceph.com/issues/64100 Signed-off-by: Bill Scales <bill_scales@uk.ibm.com>
Nizamudeen A [Wed, 5 Mar 2025 16:46:03 +0000 (22:16 +0530)]
mgr/dashboard: fix access control permissions for roles
Since prometheus is being used in the dashboard page we need to make
sure every role has prometheus read only access so that the dashboard
page can load the utilization metrics.
I also saw permission issue with the osd settings endpoint when its
trying to get the nearfull/full ratio. so instead of failing the entire
page i am proceeding with a chart that doesn't have those details when
the user doesn't have permission to access the config opt.
Multisite page was not accessible in the case of rgw-manager or
read-only user because its trying to show the status of rgw module. This
si also now gracefully handled to show the alert only when the user has
sufficient permission.
Fixes: https://tracker.ceph.com/issues/70331 Signed-off-by: Nizamudeen A <nia@redhat.com>
This commit fixes documentation about many-to-many topic relationship for notifications. The current sentence states the same fact twice instead of clarifying.
Fix a clang warning in proxy_async.c where an unsigned value was being
unnecessarily compared against 0:
```
/home/kefu/dev/ceph/src/libcephfs_proxy/proxy_async.c:29:12: warning: result of comparison of unsigned expression >= 0 is always true [-Wtautological-unsigned-zero-compare]
29 | if ((size >= 0) && !info->write) {
| ~~~~ ^ ~
1 warning generated.
```
Since unsigned values are always >= 0 by definition, remove this
tautological check to resolve the "-Wtautological-unsigned-zero-compare"
warning.
Laura Flores [Fri, 7 Mar 2025 06:22:00 +0000 (06:22 +0000)]
mon, osd: add command to remove invalid pg-upmap-primary entries
The current rm-pg-upmap-primary command checks that the pgid exists
in the pgmap before continuing to remove it. Due to https://tracker.ceph.com/issues/66867,
some invalid pg-upmap-primary entires may exist for pools that have been removed.
Currently, these mappings are impossible to remove since the pgids no longer
exist in the pgmap.
This new command, rm-pg-upmap-primary-all, allows users the ability to remove
any and all pg-upmap-primary mappings in the osdmap at once, which includes
valid and invalid entries.
This command may also be helpful when upgrading from versions where users
are plagued by https://tracker.ceph.com/issues/61948. Users may use an upgraded
mon to remove all pg-upmap-primray entries (valid and invalid) so they continue
to upgrade to a safe version.
See manual testing for this patch here: https://tracker.ceph.com/issues/67179#note-12
Fixes: https://tracker.ceph.com/issues/67179 Fixes: https://tracker.ceph.com/issues/69760 Signed-off-by: Laura Flores <lflores@ibm.com>
Vallari Agrawal [Mon, 17 Mar 2025 16:28:19 +0000 (21:58 +0530)]
monitoring: rename NVMeoFSingleGatewayGroup alert
Rename the alert to NVMeoFSingleGateway.
The original name was confusing because it
accidently might convey that alert would be
triggered if there is a single gateway group.
Though 'NVMeoFSingleGatewayGroup' alert means that
there is single gateway in a group.
Kefu Chai [Mon, 17 Mar 2025 09:52:25 +0000 (17:52 +0800)]
crypto: remove unused include
openssl_crypto_accel.cc does not need the declarations included by
openssl/engine.h, also, openssl/engine.h was deprecated in favor of
the provider API, the engine support was removed in fedora 41.
so, let's avoid including it. please note, the "ENGINE" struct's
definition is available in openssl/types.h.
Seena Fallah [Mon, 3 Mar 2025 16:16:55 +0000 (17:16 +0100)]
rgw: skip versioned entries to non-versioned buckets and vice-versa
As instance field is preserved while replicating, this can make
confusion for versioned buckets having non-versioned objects and
non-versioned buckets having versioned objects.
Seena Fallah [Thu, 6 Mar 2025 18:36:50 +0000 (19:36 +0100)]
rgw: reject PutBucketReplication on mismatched versioning and lock
Reject PutBucketReplication calls if versioning is not identical
between the source and destination buckets. This check also applies
to object lock configurations to ensure consistency.
Venky Shankar [Fri, 14 Mar 2025 14:07:28 +0000 (19:37 +0530)]
Merge PR #61877 into main
* refs/pull/61877/head:
libcephfs_proxy: implement client side async rw operation
libcephfs_proxy: implement server side async rw operation
libcephfs_proxy: implement the async rw callback
libcephfs_proxy: define async rw opcode and structures
libcephfs_proxy: define some helper macros for callbacks
libcephfs_proxy: move pointer obfuscation functions to proxy_helpers.h
libcephfs_proxy: negotiate and use the async cbk feature
libcephfs_proxy: implement asynchronous callbacks
libcephfs_proxy: gracefully handle connection close
libcephfs_proxy: add negotiation documentation
libcephfs_proxy: replace legacy handshake by negotation in server side
libcephfs_proxy: replace legacy handshake by negotation in client side
libcephfs_proxy: implement server side negotiation
libcephfs_proxy: implement client side negotiation
libcephfs_proxy: implement receiving of negotiate structure
libcephfs_proxy: add negotiation structures
libcephfs_proxy: add support for control messages
libcephfs_proxy: reuse proxy_link_{read|write}
Patrick Donnelly [Fri, 14 Mar 2025 12:29:12 +0000 (08:29 -0400)]
Merge PR #62228 into main
* refs/pull/62228/head:
libcephfs: getcwd after chdir for API constraint
client: unwrap dentries for getcwd
client: refactor / optimize chdir
test/libcephfs: test getcwd with case insensitive dir
test/libcephfs: refactor ManyNestedDirs
include/filepath: add iterators for components
Soumya Koduri [Fri, 3 Jan 2025 08:20:48 +0000 (13:50 +0530)]
rgw/cloud-restore: Handle versioned objects
While restoring non-current object versions, ensure they remain non-current.
Read `olh_epoch` from the restored object's metadata into a new attr
"RGW_ATTR_RESTORE_VERSIONED_EPOCH". This attr/olh_epoch is used while
updating bi entry and also to reset HEAD object post expiry of temporary
copies.
Venky Shankar [Thu, 13 Mar 2025 16:57:57 +0000 (22:27 +0530)]
Merge PR #54396 into main
* refs/pull/54396/head:
PendingReleaseNote: add note for pause_purging and pause_cloninig
doc/cephfs: add note for config option pause_purging and pause_cloning
qa/cephfs: add tests for mgr/vol config pause_cloning
qa/cephfs: extend wait for trash empty
qa/cephfs: add tests for config option pause_purging
qa/cephfs: don't strip any whitespace for get_shell_stdout
mgr/vol: add pause/resume mechanism for async jobs
Matan Breizman [Thu, 13 Mar 2025 14:29:31 +0000 (14:29 +0000)]
qa/tasks/radosbench: make use of concurrency flag
This affects mainly radosbench-high-concurrency.yaml
The concurrency flag was only used in non-write scenarios to
populate the initial data.
We should use this flag with `write` mode as well.