mirror of
https://github.com/ceph/ceph
synced 2025-03-06 16:28:28 +00:00
Merge pull request #13991 from Liuchang0812/wip-rgw-optimization
rgw: avoid listing user buckets for rgw_delete_user Reviewed-by: Orit Wasserman <owasserm@redhat.com> Reviewed-by: Casey Bodley <cbodley@redhat.com>
This commit is contained in:
commit
c899d7ef8c
@ -404,34 +404,7 @@ int rgw_remove_swift_name_index(RGWRados *store, string& swift_name)
|
||||
* themselves alone, as well as any ACLs embedded in object xattrs.
|
||||
*/
|
||||
int rgw_delete_user(RGWRados *store, RGWUserInfo& info, RGWObjVersionTracker& objv_tracker) {
|
||||
string marker;
|
||||
vector<rgw_bucket> buckets_vec;
|
||||
|
||||
bool done;
|
||||
bool is_truncated;
|
||||
int ret;
|
||||
CephContext *cct = store->ctx();
|
||||
size_t max_buckets = cct->_conf->rgw_list_buckets_max_chunk;
|
||||
|
||||
do {
|
||||
RGWUserBuckets user_buckets;
|
||||
ret = rgw_read_user_buckets(store, info.user_id, user_buckets, marker,
|
||||
string(), max_buckets, false, &is_truncated);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
map<string, RGWBucketEnt>& buckets = user_buckets.get_buckets();
|
||||
for (map<string, RGWBucketEnt>::iterator i = buckets.begin();
|
||||
i != buckets.end();
|
||||
++i) {
|
||||
RGWBucketEnt& bucket = i->second;
|
||||
buckets_vec.push_back(bucket.bucket);
|
||||
|
||||
marker = i->first;
|
||||
}
|
||||
|
||||
done = (buckets.size() < max_buckets);
|
||||
} while (!done);
|
||||
|
||||
map<string, RGWAccessKey>::iterator kiter = info.access_keys.begin();
|
||||
for (; kiter != info.access_keys.end(); ++kiter) {
|
||||
|
Loading…
Reference in New Issue
Block a user