diff options
author | Casey Bodley <cbodley@redhat.com> | 2023-12-07 04:38:27 +0100 |
---|---|---|
committer | Casey Bodley <cbodley@redhat.com> | 2024-04-10 18:53:04 +0200 |
commit | 1d29b7056983825e7095c518edc7b3d4dcdf0b05 (patch) | |
tree | 97f1f1eabc155ae3f7316c2afb7131bc76fa06cc /src/rgw/rgw_file.cc | |
parent | rgw/acl: use ACLOwners for create_default() (diff) | |
download | ceph-1d29b7056983825e7095c518edc7b3d4dcdf0b05.tar.xz ceph-1d29b7056983825e7095c518edc7b3d4dcdf0b05.zip |
rgw/sal: pass in ACLOwner for object writes
`ACLOwner` contains both the user id and display name. the bucket index
needs both values for:
```
struct rgw_bucket_dir_entry_meta {
...
std::string owner;
std::string owner_display_name;
```
`RGWRados::Bucket::UpdateIndex::complete()` relied on the parsing of
`RGW_ATTR_ACL` to get those values. but object write operations already
had that information earlier in the call stack, so we might as well pass
them in directly
for other operations like the copy/rewrite/transition of existing objects,
we decode the owner from the source object's `RGW_ATTR_ACL`
the existing `owner` param was confusing, as it represented the bucket
owner for quota stats updates. this get renamed to `bucket_owner` inside
of `RGWRados`, and hidden from the outside. bucket stats are attributed to
`RGWBucketInfo::owner`, not the `ACLOwner`, so we use that instead of
`s->bucket_owner`
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Diffstat (limited to 'src/rgw/rgw_file.cc')
-rw-r--r-- | src/rgw/rgw_file.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/rgw/rgw_file.cc b/src/rgw/rgw_file.cc index 3424d4b04d7..66e883e7257 100644 --- a/src/rgw/rgw_file.cc +++ b/src/rgw/rgw_file.cc @@ -1872,7 +1872,7 @@ namespace rgw { } } processor = get_driver()->get_atomic_writer(this, state->yield, state->object.get(), - state->bucket_owner.id, + state->bucket_owner, &state->dest_placement, 0, state->req_id); op_ret = processor->prepare(state->yield); |