From: liuchang0812 Date: Thu, 16 Mar 2017 03:59:25 +0000 (+0800) Subject: rgw: optimize rgw performance, avoid unnecessary bucket list and memory copy X-Git-Tag: v12.0.2~322^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a465395ce532b72b4c75958945345025b29df645;p=ceph.git rgw: optimize rgw performance, avoid unnecessary bucket list and memory copy We do not use buckets_vec in following code, and rgw_read_user_buckets with `need_stats=false` will not modify other variables. So we could remove this bucket-listing code, get better performance. Signed-off-by: liuchang0812 --- diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc index 162e1b7189c1..cbc2c248f4ef 100644 --- a/src/rgw/rgw_user.cc +++ b/src/rgw/rgw_user.cc @@ -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 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& buckets = user_buckets.get_buckets(); - for (map::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::iterator kiter = info.access_keys.begin(); for (; kiter != info.access_keys.end(); ++kiter) {