Commit Graph

766 Commits

Author SHA1 Message Date
Casey Bodley
efbde33fb0
Merge pull request #65329 from matt-akamai/usage_trim_log_fixes
rgw/cls: fix usage log issues caused by incorrect form of name-by-user keys

Reviewed-by: Yixin Jin <yjin@akamai.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
2025-10-22 12:44:20 -04:00
Casey Bodley
889ce8b980 rgw/lc: raise default rgw_lc_max_wp_worker to 128
now that the workers run as coroutines instead of threads, we can afford
to run several more workers per bucket

Signed-off-by: Casey Bodley <cbodley@redhat.com>
2025-10-21 09:08:04 -04:00
Mark Kogan
85b1eb9559
Merge pull request #64762 from mkogan1/wip-ratelim-list-v001
rgw: rate limit for LIST and DELETE ops
2025-10-16 17:30:45 +03:00
Shraddha Agrawal
49ed2377fc
Merge pull request #65545 from shraddhaag/wip-shraddhaag-availability-default
options/mon: disable availability tracking by default

Reviewed-by: Radoslaw Zarzynski <Radoslaw.Adam.Zarzynski@ibm.com>
2025-10-06 15:26:41 +05:30
Yixin Jin
674d42d902 Fix usage log issues caused by incorrect form of name-by-user keys
1. The old name-by-user keys start with user/payer IDs. If those IDs
   start with '0', the resulting name-by-user keys could fall within
   the range of name-by-time keys, which has the prefix of '0' followed
   by 11 digits of the epoch. The intermingle of name-by-user and
   name-by-time keys causes the usage function to mistakenly treat
   name-by-user usage logs as name-by-time logs. This leads issues like
   failure to trim old logs because some name-by-user logs with later
   epoch listed BEFORE name-by-time logs with earlier epoch, causing
   the trim logic to stop prematurally.
2. To fix the above issue, adding prefix '~' in name-by-user keys when
   the user/payer IDs starting with '0'.
3. Introduce a rgw config option to indicate the need to deal with
   the co-existence of old and new name-by-user keys. Since handling
   both keys incurs performance penalty, this option helps avoid it
   once the cluster no longer has the old keys.
4. usage_iterate_range() is splitted to usage_iterate_range_by_user()
   and usage_iterate_range_by_time() as only the former needs to deal
   with the potential co-existence of old and new name-by-user keys.
   This split intends to simplify the logic.
5. "usage_basic" test in test_cls_rgw.cc is adapted slightly to reproduce
   the issue mentioned above.
6. A new test case "usage_key_transition" is added to test the handling
   of the co-existence of old and new keys.

Signed-off-by: Matthew N Heler <mheler@akamai.com>
2025-09-30 11:01:35 -05:00
Jos Collin
4c9887dfba
Merge pull request #65309 from joscollin/wip-72683-peer-add-deprecate
cephfs_mirror: deprecate peer_add command

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
2025-09-26 20:23:41 +05:30
Yuri Weinstein
b1cdf2fc97
Merge pull request #64152 from cbodley/wip-63323
rgw: support S3 Object Ownership controls to disable object ACLs

Reviewed-by: Adam Emerson <aemerson@redhat.com>
2025-09-19 07:52:03 -07:00
Yuri Weinstein
f348f6cd7c
Merge pull request #64018 from 9401adarsh/wip-adashoka-71677
rgw/notifications: add support for sharded persistent bucket notifications

Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
Reviewed-by: Yuval Lifshitz <ylifshit@redhat.com>
2025-09-18 08:25:10 -07:00
Shraddha Agrawal
ef7effaa33 options/mon: disable availability tracking by default
Signed-off-by: Shraddha Agrawal <shraddhaag@ibm.com>
2025-09-17 20:18:04 +00:00
Jos Collin
d19d3f52b1
doc: deprecate 'peer_add' command
Fixes: https://tracker.ceph.com/issues/72683
Signed-off-by: Jos Collin <jcollin@redhat.com>
2025-09-17 12:18:47 +05:30
Mark Kogan
dae572d500 rgw: add rate limit for LIST & DELETE ops
Add rate limiting specific to LIST ops,
similar to the current rate-limiting
(https://docs.ceph.com/en/latest/radosgw/admin/#rate-limit-management)

Example usage:

```
./bin/radosgw-admin ratelimit set --ratelimit-scope=user --uid=<UID> --max_list_ops=2
./bin/radosgw-admin ratelimit set --ratelimit-scope=user --uid=<UID> --max_delete_ops=2
./bin/radosgw-admin ratelimit enable --ratelimit-scope=user --uid=<UID>

./bin/radosgw-admin ratelimit get --ratelimit-scope=user --uid=<UID>
{
  "user_ratelimit": {
    "max_read_ops": 0,
    "max_write_ops": 0,
    "max_list_ops": 2,
    "max_delete_ops": 2,
    "max_read_bytes": 0,
    "max_write_bytes": 0,
    "enabled": true
  }
}

pkill -9 radosgw
./bin/radosgw -c ./ceph.conf ...

aws --endpoint-url 'http://0:8000' s3 mb s3://bkt
aws --endpoint-url 'http://0:8000' s3 cp  ./ceph.conf s3://bkt

aws --endpoint-url http://0:8000 s3api list-objects-v2 --bucket bkt --prefix 'ceph.conf' --delimiter '/'
{
    "Contents": [
        {
            "Key": "ceph.conf",
            "LastModified": "2025-07-30T13:59:38+00:00",
            "ETag": "\"13d11d431ae290134562c019d9e40c0e\"",
            "Size": 32346,
            "StorageClass": "STANDARD"
        }
    ],
    "RequestCharged": null
}

aws --endpoint-url http://0:8000 s3api list-objects-v2 --bucket bkt --prefix 'ceph.conf' --delimiter '/'
{
    "Contents": [
        {
            "Key": "ceph.conf",
            "LastModified": "2025-07-30T13:59:38+00:00",
            "ETag": "\"13d11d431ae290134562c019d9e40c0e\"",
            "Size": 32346,
            "StorageClass": "STANDARD"
        }
    ],
    "RequestCharged": null
}

aws --endpoint-url http://0:8000 s3api list-objects-v2 --bucket bkt --prefix 'ceph.conf' --delimiter '/'
argument of type 'NoneType' is not iterable

tail -F ./out/radosgw.8000.log | grep beast
...
beast: 0x7fffbbe09780:  [30/Jul/2025:15:44:50.359 +0000] " GET /bkt?list-type=2&delimiter=%2F&prefix=ceph.conf&encoding-type=url HTTP/1.1" 200 535 - "aws-cli/2.15.31 Python/3.9.21 Linux/5.14.0-570.28.1.el9_6.x86_64 source/x86_64.rhel.9 prompt/off command/s3api.list-objects-v2" - latency=0.000999995s
beast: 0x7fffbbe09780:  [30/Jul/2025:15:44:53.904 +0000] " GET /bkt?list-type=2&delimiter=%2F&prefix=ceph.conf&encoding-type=url HTTP/1.1" 200 535 - "aws-cli/2.15.31 Python/3.9.21 Linux/5.14.0-570.28.1.el9_6.x86_64 source/x86_64.rhel.9 prompt/off command/s3api.list-objects-v2" - latency=0.000999995s
                                                                                                                                           vvv
beast: 0x7fffbbe09780:  [30/Jul/2025:15:44:58.192 +0000] " GET /bkt?list-type=2&delimiter=%2F&prefix=ceph.conf&encoding-type=url HTTP/1.1" 503 228 - "aws-cli/2.15.31 Python/3.9.21 Linux/5.14.0-570.28.1.el9_6.x86_64 source/x86_64.rhel.9 prompt/off command/s3api.list-objects-v2" - latency=0.000000000s
beast: 0x7fffbbe09780:  [30/Jul/2025:15:44:58.798 +0000] " GET /bkt?list-type=2&delimiter=%2F&prefix=ceph.conf&encoding-type=url HTTP/1.1" 503 228 - "aws-cli/2.15.31 Python/3.9.21 Linux/5.14.0-570.28.1.el9_6.x86_64 source/x86_64.rhel.9 prompt/off command/s3api.list-objects-v2" - latency=0.000999994s
beast: 0x7fffbbe09780:  [30/Jul/2025:15:44:59.807 +0000] " GET /bkt?list-type=2&delimiter=%2F&prefix=ceph.conf&encoding-type=url HTTP/1.1" 503 228 - "aws-cli/2.15.31 Python/3.9.21 Linux/5.14.0-570.28.1.el9_6.x86_64 source/x86_64.rhel.9 prompt/off command/s3api.list-objects-v2" - latency=0.000000000s

s3cmd put ./ceph.conf s3://bkt/1
s3cmd put ./ceph.conf s3://bkt/2
s3cmd put ./ceph.conf s3://bkt/3

s3cmd rm s3://bkt/1
s3cmd rm s3://bkt/2
s3cmd rm s3://bkt/3

delete: 's3://bkt/1'
delete: 's3://bkt/2'
WARNING: Retrying failed request: /3 (503 (SlowDown))
WARNING: Waiting 3 sec...
WARNING: Retrying failed request: /3 (503 (SlowDown))
                                      ^^^
```

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

Signed-off-by: Mark Kogan <mkogan@ibm.com>

Update PendingReleaseNotes

Co-authored-by: Yuval Lifshitz <yuvalif@yahoo.com>
Signed-off-by: Mark Kogan <31659604+mkogan1@users.noreply.github.com>

Update PendingReleaseNotes

Co-authored-by: Yuval Lifshitz <yuvalif@yahoo.com>
Signed-off-by: Mark Kogan <31659604+mkogan1@users.noreply.github.com>
2025-09-16 09:55:15 +00:00
Shraddha Agrawal
f3f1cc5156 doc: update data availability release notes
Signed-off-by: Shraddha Agrawal <shraddhaag@ibm.com>
2025-09-15 11:31:21 +05:30
SrinivasaBharathKanta
1b881fe583
Merge pull request #65172 from shraddhaag/wip-shraddhaag-availability-frequency-config
mon: add config option to change availability score update interval
2025-09-14 16:18:59 +05:30
Adarsh
8c25005bb0 rgw/notifications: sharded bucket notifications
* sharding is based on hash of bucket_name:object_key
* compatible with v1 topics
* include tests to cover backward compatibility and mixed cluster

Signed-off-by: Adarsh <dev.9401adarsh@gmail.com>
2025-09-09 14:28:04 +00:00
Afreen Misbah
9c0a09131f doc: wq!Update dashboard Pending release notes
- added for tentacle
- moved the inccorect notes added in tentacke to umbrella

Signed-off-by: Afreen Misbah <afreen@ibm.com>
2025-09-08 23:46:27 +05:30
Shraddha Agrawal
1cbe41bde1 doc: add config option and usage docs
This commit adds docs for the new config option introduced as
well as updates the feature docs on how to use this config
option.

Fixes: https://tracker.ceph.com/issues/72619
Signed-off-by: Shraddha Agrawal <shraddhaag@ibm.com>
2025-09-03 18:40:23 +05:30
Afreen Misbah
b188d0768a mgr/dashboard: Update release notes and doc
-  for removal of old dashoard support

Signed-off-by: Afreen Misbah <afreen@ibm.com>
2025-08-28 23:30:22 +05:30
Anthony D'Atri
32d97441fa doc: Improve PendingReleaseNotes
Signed-off-by: Anthony D'Atri <anthonyeleven@users.noreply.github.com>
2025-08-21 17:07:16 -04:00
Casey Bodley
07ab7ecbfd
Merge pull request #64253 from arm7star/rgw-openssl
rgw, common: OpenSSL provider support

Reviewed-by: Kefu Chai <tchaikov@gmail.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
2025-08-12 09:04:39 -04:00
cailianchun
12714e31b4 rgw, common: OpenSSL provider support
Removed `openssl_engine_opts` configuration option. OpenSSL engine configurations in string format are no longer supported.
Added `openssl_conf` configuration option for loading specified providers as default providers.

Signed-off-by: cailianchun <arm7star@qq.com>
2025-08-05 01:38:19 +00:00
Casey Bodley
92a371e437 doc/rgw: document support for S3 Object Ownership
Signed-off-by: Casey Bodley <cbodley@redhat.com>
2025-07-30 15:34:50 -04:00
Venky Shankar
37bd496c5e Merge PR #63214 into main
* refs/pull/63214/head:
	release note: add a note that "subvolume info" cmd output can also...
	doc/cephfs: update docs since "subvolume info" cmd output can also...
	qa/cephfs: add test to check clone source info's present in...
	mgr/vol: show clone source info in "subvolume info" cmd output
	mgr/vol: keep clone source info even after cloning is finished

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Kotresh Hiremath Ravishankar <khiremat@redhat.com>
Reviewed-by: Neeraj Pratap Singh <neesingh@redhat.com>
2025-07-21 10:56:30 +05:30
Rishabh Dave
eb46abfa0e
Merge pull request #62668 from rishabh-d-dave/vols-namespace
mgr/vol: include group name in subvolume's pool namespace name

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Kotresh HR <khiremat@redhat.com>
2025-06-26 13:53:32 +05:30
Shraddha Agrawal
ba852da68d doc: update user docs and release notes
Fixes: https://tracker.ceph.com/issues/71495

Signed-off-by: Shraddha Agrawal <shraddhaag@ibm.com>
2025-06-23 12:01:23 +05:30
Rishabh Dave
37244a7972 release note: add a note that "subvolume info" cmd output can also...
contain "source field" in it.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2025-06-20 20:48:15 +05:30
Ilya Dryomov
db2a4a672e
Merge pull request #63149 from ajarr/wip-ajarr-fix-mirror-image-get-mode
librbd/api/Mirror: return EINVAL from image_get_mode() when the image is disabled for mirroring

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Afreen Misbah <afreen@ibm.com>
2025-06-19 20:10:11 +02:00
Aashish Sharma
b58024e46f
Merge pull request #63685 from anthonyeleven/eugen-block-april-1
monitoring/ceph-mixin/dashboards_out: Correct panel title in ceph-cluster-advanced.json

Reviewed-by: Aashish Sharma <aasharma@redhat.com>
2025-06-19 12:41:35 +05:30
Ramana Raja
4c992e6c85 librbd/api/Mirror: return EINVAL from image_resync()
... when mirroring is not enabled for the image.

Mirror::image_resync() returns ENOENT when mirroring is disabled for the
image. Instead, make it return EINVAL indicating that the call is
invalid when mirroring is not enabled for the image. This also causes
the public facing C, C++, and Python APIs that resync an image to
return EINVAL or raise an equivalent exception when mirroring is not
enabled for the image.

Signed-off-by: Ramana Raja <rraja@redhat.com>
2025-06-16 13:44:06 -04:00
Ramana Raja
eb19563c93 librbd/mirror/PromoteRequest: return EINVAL
... instead of ENOENT when mirroring is not enabled for the image.

The PromoteRequest async state machine returns ENOENT when mirroring is
not enabled for the image. Instead, make it return EINVAL similar to
DemoteRequest's behavior, which is more appropriate. This also causes
the public facing C, C++, and Python APIs that promote an image
to return EINVAL or raise an equivalent exception when mirroring is
not enabled for the image.

Signed-off-by: Ramana Raja <rraja@redhat.com>
2025-06-16 13:09:08 -04:00
Ramana Raja
479014e372 librbd/api/Mirror: return EINVAL from image_get_mode()
... when the image is disabled for mirroring.

When an image is disabled for mirroring, fetching the image's
mirroring mode is invalid. So, modify the Mirror::image_get_mode()
internal API to return EINVAL instead of success when mirroring is
disabled.

The Mirror::image_get_mode() method is called by the public C++, C, and
Python APIs that fetch the mirroring mode of an image. The behavior of
these public APIs will change. They will return an error code or raise
an exception indicating that it's an invalid operation to fetch the
image's mirroring mode when mirroring is disabled.

Fixes: https://tracker.ceph.com/issues/71226
Signed-off-by: Ramana Raja <rraja@redhat.com>
2025-06-16 12:54:26 -04:00
Shraddha Agrawal
80c7492a80 doc: add docs and update release notes for the new config option
Fixes: https://tracker.ceph.com/issues/71494

Signed-off-by: Shraddha Agrawal <shraddhaag@ibm.com>
2025-06-12 16:20:25 +05:30
Rishabh Dave
f350d98000 release note: add note for change in format of name of pool...
namespace of CephFS volumes.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2025-06-11 23:31:56 +05:30
Anthony D'Atri
dfbd82f61c monitoring/ceph-mixin/dashboards_out: Correct panel title in ceph-cluster-advanced.json
Signed-off-by: Anthony D'Atri <anthonyeleven@users.noreply.github.com>
2025-06-04 14:32:05 -04:00
Shraddha Agrawal
a2937fab78 doc: address review comments
Signed-off-by: Shraddha Agrawal <shraddha.agrawal000@gmail.com>
2025-05-15 11:03:50 +05:30
Shraddha Agrawal
51bee7a936 doc: add release notes for availability score
Fixes: https://tracker.ceph.com/issues/67777

Signed-off-by: Shraddha Agrawal <shraddha.agrawal000@gmail.com>
2025-05-09 16:46:35 +05:30
Casey Bodley
ee51bf8a93
Merge pull request #62011 from kchheda3/wip-allow-multiple-rgws
rgw/frontend: Allow multiple RGWs to run on same port on same host

Reviewed-by: Adam C. Emerson <aemerson@redhat.com>
2025-05-02 09:03:02 -04:00
kchheda3
b247306654 rgw/frontend: Allow multiple rgw's to run on same port on same host.
The idea here is to leverage the `SO_REUSEPORT` param supported by kernel 3.9 and above, which allows the multiple services to run on the same port.

Signed-off-by: kchheda3 <kchheda3@bloomberg.net>
2025-04-30 11:12:24 -04:00
Seena Fallah
8c15d4674f doc: add release note for new policy actions on replication
Fixes: https://tracker.ceph.com/issues/70093
Signed-off-by: Seena Fallah <seenafallah@gmail.com>
2025-04-28 18:56:06 +02:00
Casey Bodley
3b6cf2711c
Merge pull request #62936 from cbodley/wip-doc-rgw-getobjattrs
doc/rgw: release note for GetObjectAttributes

Reviewed-by: Adam C. Emerson <aemerson@redhat.com>
Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
2025-04-24 11:35:48 -04:00
Ilya Dryomov
53aca7dd05
Merge pull request #62921 from idryomov/wip-71026
librbd: disallow "rbd trash mv" if image is in a group

Reviewed-by: Ramana Raja <rraja@redhat.com>
2025-04-24 16:36:46 +02:00
Casey Bodley
771262860f doc/rgw: release note for GetObjectAttributes
Signed-off-by: Casey Bodley <cbodley@redhat.com>
2025-04-23 15:06:22 -04:00
Ilya Dryomov
2ae4a57e16 librbd: disallow "rbd trash mv" if image is in a group
Removing an image that is a member of a group has always been
disallowed.  However, moving an image that is a member of a group to
trash is currently allowed and this is deceptive -- the only reason for
a user to move an image to trash should be the intent to remove it.

More importantly, group APIs operate in terms of image names -- there
are no corresponding variants that would operate in terms of image IDs.
For example, even though internally GroupImageSpec struct stores an
image ID, the public rbd_group_image_info_t struct insists on an image
name.  When rbd_group_image_list() encounters a trashed member image
(i.e. one that doesn't have a name), it just fails with ENOENT and no
listing gets produced at all until the offending image is restored from
trash.  Something like this can be very hard to debug for an average
user, so let's make rbd_trash_move() fail with EMLINK the same way as
rbd_remove() does in this scenario.

The one case where moving a member image to trash makes sense is live
migration where the source image gets trashed to be almost immediately
replaced by the destination image as part of preparing migration.

Fixes: https://tracker.ceph.com/issues/71026
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2025-04-22 20:36:53 +02:00
Rishabh Dave
e05d768761
Merge pull request #62708 from rishabh-d-dave/vols-snap-path
mgr/vol: add command to get snapshot path

Reviewed-by: Venky Shankar <vshankar@redhat.com>
2025-04-22 20:36:34 +05:30
Rishabh Dave
a59b1fa431 release note: add a note for "snapshot getpath" command
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2025-04-11 14:28:25 +05:30
Casey Bodley
3d021e9637
Merge pull request #57206 from clwluvw/restrict-public-buckets
rgw: implement RestrictPublicBuckets from PublicAccessBlock

Reviewed-by: Adam Emerson <aemerson@redhat.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
2025-04-09 13:47:45 -04:00
Shilpa Jagannath
126ba3c419 rgw/trim: restore update_mapping_update in RGWBucketInstanceMetadataHandler::remove
- fix testcase

Signed-off-by: Shilpa Jagannath <smanjara@redhat.com>
2025-04-04 13:16:54 -04:00
Shilpa Jagannath
4b343ac6d8 rgw/multisite: move the remote bucket listing logic into a separate
function.

Signed-off-by: Shilpa Jagannath <smanjara@redhat.com>
2025-04-04 13:16:53 -04:00
SrinivasaBharathKanta
ea7c0b6253
Merge pull request #62233 from kamoltat/wip-ksirivad-ceph-s-leader-mon
mon: Add leader indicator && stretch mode to ceph -s output
2025-04-03 15:37:27 +05:30
Seena Fallah
07ad231606 rgw: implement RestrictPublicBuckets from PublicAccessBlock
According to the AWS docs
(https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)
If RestrictPublicBuckets is set to true and there are public
policies in place, Only access from the bucket owner's account is
possible.

Fixes: https://tracker.ceph.com/issues/65741
Signed-off-by: Seena Fallah <seenafallah@gmail.com>
2025-04-02 22:22:13 +02:00
Jamie Pryde
4cf3abd829
Merge pull request #61638 from jamiepryde/58052-release-note
PendingReleaseNotes: add note about changing default EC plugin from Jerasure to ISA-L
2025-04-02 21:03:57 +01:00