From fc6522a8365b5c5938e0feab8d27ab81ef422645 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 4 Nov 2011 13:11:19 -0700 Subject: [PATCH] rgw: don't purge pools in any case --- src/rgw/rgw_access.h | 3 +-- src/rgw/rgw_admin.cc | 6 ++--- src/rgw/rgw_fs.cc | 2 +- src/rgw/rgw_fs.h | 2 +- src/rgw/rgw_op.cc | 6 ++--- src/rgw/rgw_rados.cc | 61 +++----------------------------------------- src/rgw/rgw_rados.h | 3 +-- src/rgw/rgw_user.cc | 20 ++------------- src/rgw/rgw_user.h | 4 +-- 9 files changed, 18 insertions(+), 89 deletions(-) diff --git a/src/rgw/rgw_access.h b/src/rgw/rgw_access.h index 0155be16bb133..21f597d534b77 100644 --- a/src/rgw/rgw_access.h +++ b/src/rgw/rgw_access.h @@ -122,8 +122,7 @@ public: * bucket: the name of the bucket to delete * Returns 0 on success, -ERR# otherwise. */ - virtual int delete_bucket(rgw_bucket& bucket, bool remove_pool) = 0; - virtual int purge_buckets(vector& buckets) { return -ENOTSUP; } + virtual int delete_bucket(rgw_bucket& bucket) = 0; virtual int set_buckets_enabled(std::vector& buckets, bool enabled) { return -ENOTSUP; } virtual int bucket_suspended(rgw_bucket& bucket, bool *suspended) { diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index b272af426a9e0..ee43051fb9b46 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -956,7 +956,7 @@ int main(int argc, char **argv) return -EINVAL; } //cout << "bucket is linked to user '" << owner.get_id() << "'.. unlinking" << std::endl; - r = rgw_remove_user_bucket_info(owner.get_id(), bucket, false); + r = rgw_remove_user_bucket_info(owner.get_id(), bucket); if (r < 0) { cerr << "could not unlink policy from user '" << owner.get_id() << "'" << std::endl; return r; @@ -975,7 +975,7 @@ int main(int argc, char **argv) return usage(); } - int r = rgw_remove_user_bucket_info(user_id, bucket, false); + int r = rgw_remove_user_bucket_info(user_id, bucket); if (r < 0) cerr << "error unlinking bucket " << cpp_strerror(-r) << std::endl; return -r; @@ -1144,7 +1144,7 @@ next: } if (opt_cmd == OPT_USER_RM) { - rgw_delete_user(info, purge_data); + rgw_delete_user(info); } if (opt_cmd == OPT_POOL_ADD) { diff --git a/src/rgw/rgw_fs.cc b/src/rgw/rgw_fs.cc index c76b4193a5404..1fbcb2b12d184 100644 --- a/src/rgw/rgw_fs.cc +++ b/src/rgw/rgw_fs.cc @@ -336,7 +336,7 @@ int RGWFS::copy_obj(void *ctx, rgw_obj& dest_obj, return ret; } -int RGWFS::delete_bucket(rgw_bucket& bucket, bool remove_pool) +int RGWFS::delete_bucket(rgw_bucket& bucket) { int len = strlen(DIR_NAME) + 1 + bucket.name.size() + 1; char buf[len]; diff --git a/src/rgw/rgw_fs.h b/src/rgw/rgw_fs.h index 1d209e5fc2903..69b11218042d7 100644 --- a/src/rgw/rgw_fs.h +++ b/src/rgw/rgw_fs.h @@ -34,7 +34,7 @@ public: map& attrs, RGWObjCategory category, struct rgw_err *err); - int delete_bucket(rgw_bucket& bucket, bool remove_pool); + int delete_bucket(rgw_bucket& bucket); int delete_obj(void *ctx, rgw_obj& obj, bool sync); int get_attr(const char *name, int fd, char **attr); diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 5ba7ca2cc4a5f..36ded6f4cb4ef 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -519,7 +519,7 @@ void RGWCreateBucket::execute() ret = rgw_add_bucket(s->user.user_id, s->bucket); if (ret && !existed && ret != -EEXIST) /* if it exists (or previously existed), don't remove it! */ - rgw_remove_user_bucket_info(s->user.user_id, s->bucket, false); + rgw_remove_user_bucket_info(s->user.user_id, s->bucket); if (ret == -EEXIST) ret = -ERR_BUCKET_EXISTS; @@ -541,10 +541,10 @@ void RGWDeleteBucket::execute() ret = -EINVAL; if (s->bucket_name) { - ret = rgwstore->delete_bucket(s->bucket, false); + ret = rgwstore->delete_bucket(s->bucket); if (ret == 0) { - ret = rgw_remove_user_bucket_info(s->user.user_id, s->bucket, false); + ret = rgw_remove_user_bucket_info(s->user.user_id, s->bucket); if (ret < 0) { dout(0) << "WARNING: failed to remove bucket: ret=" << ret << dendl; } diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index c0ddef0913a6f..7d4a6c302bce3 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -477,7 +477,7 @@ int RGWRados::create_bucket(string& owner, rgw_bucket& bucket, ret = store_bucket_info(info); if (ret < 0) { dout(0) << "failed to store bucket info, removing bucket" << dendl; - delete_bucket(bucket, true); + delete_bucket(bucket); return ret; } } @@ -845,7 +845,7 @@ done_err: * bucket: the name of the bucket to delete * Returns 0 on success, -ERR# otherwise. */ -int RGWRados::delete_bucket(rgw_bucket& bucket, bool remove_pool) +int RGWRados::delete_bucket(rgw_bucket& bucket) { librados::IoCtx list_ctx; int r = open_bucket_ctx(bucket, list_ctx); @@ -874,12 +874,6 @@ int RGWRados::delete_bucket(rgw_bucket& bucket, bool remove_pool) } } while (is_truncated); - if (remove_pool) { - r = rados->pool_delete(bucket.pool.c_str()); - if (r < 0) - return r; - } - rgw_obj obj(rgw_root_bucket, bucket.name); r = delete_obj(NULL, obj, true); if (r < 0) @@ -888,53 +882,6 @@ int RGWRados::delete_bucket(rgw_bucket& bucket, bool remove_pool) return 0; } -/** - * Delete buckets, don't care about content - * bucket: the name of the bucket to delete - * Returns 0 on success, -ERR# otherwise. - */ -int RGWRados::purge_buckets(vector& buckets) -{ - librados::IoCtx list_ctx; - vector::iterator iter; - vector completions; - int ret = 0, r; - - for (iter = buckets.begin(); iter != buckets.end(); ++iter) { - rgw_bucket& bucket = *iter; - librados::PoolAsyncCompletion *c = librados::Rados::pool_async_create_completion(); - r = rados->pool_delete_async(bucket.pool.c_str(), c); - if (r < 0) { - dout(0) << "WARNING: rados->pool_delete_async(bucket=" << bucket << ") returned err=" << r << dendl; - ret = r; - } else { - completions.push_back(c); - } - - rgw_obj obj(rgw_root_bucket, bucket.name); - r = delete_obj(NULL, obj, true); - if (r < 0) { - dout(0) << "WARNING: could not remove bucket object: " << RGW_ROOT_BUCKET << ":" << bucket << dendl; - ret = r; - continue; - } - } - - vector::iterator citer; - for (citer = completions.begin(); citer != completions.end(); ++citer) { - PoolAsyncCompletion *c = *citer; - c->wait(); - r = c->get_return_value(); - if (r < 0) { - dout(0) << "WARNING: async pool_removal returned " << r << dendl; - ret = r; - } - c->release(); - } - - return ret; -} - int RGWRados::set_buckets_enabled(vector& buckets, bool enabled) { int ret = 0; @@ -2059,7 +2006,7 @@ int RGWRados::pool_list(rgw_bucket& bucket, string start, uint32_t num, map& buckets); + virtual int delete_bucket(rgw_bucket& bucket); virtual int set_buckets_enabled(std::vector& buckets, bool enabled); virtual int bucket_suspended(rgw_bucket& bucket, bool *suspended); diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc index b25e89ae65bd2..6430092b1ad86 100644 --- a/src/rgw/rgw_user.cc +++ b/src/rgw/rgw_user.cc @@ -351,7 +351,7 @@ int rgw_add_bucket(string user_id, rgw_bucket& bucket) return ret; } -int rgw_remove_user_bucket_info(string user_id, rgw_bucket& bucket, bool purge_data) +int rgw_remove_user_bucket_info(string user_id, rgw_bucket& bucket) { int ret; @@ -378,13 +378,6 @@ int rgw_remove_user_bucket_info(string user_id, rgw_bucket& bucket, bool purge_d } } - if (ret == 0 && purge_data) { - vector buckets_vec; - buckets_vec.push_back(bucket); - ret = rgwstore->purge_buckets(buckets_vec); - } - - return ret; } @@ -422,7 +415,7 @@ int rgw_remove_swift_name_index(string& swift_name) * from the user and user email pools. This leaves the pools * themselves alone, as well as any ACLs embedded in object xattrs. */ -int rgw_delete_user(RGWUserInfo& info, bool purge_data) { +int rgw_delete_user(RGWUserInfo& info) { RGWUserBuckets user_buckets; int ret = rgw_read_user_buckets(info.user_id, user_buckets, false); if (ret < 0) @@ -454,15 +447,6 @@ int rgw_delete_user(RGWUserInfo& info, bool purge_data) { return ret; } - if (purge_data) { - dout(0) << "purging user buckets" << dendl; - ret = rgwstore->purge_buckets(buckets_vec); - if (ret < 0 && ret != -ENOENT) { - dout(0) << "ERROR: delete_buckets returned " << ret << dendl; - return ret; - } - } - string buckets_obj_id; get_buckets_obj(info.user_id, buckets_obj_id); rgw_obj uid_bucks(ui_uid_bucket, buckets_obj_id); diff --git a/src/rgw/rgw_user.h b/src/rgw/rgw_user.h index 8ce3c2454b776..51294d0597091 100644 --- a/src/rgw/rgw_user.h +++ b/src/rgw/rgw_user.h @@ -68,7 +68,7 @@ extern int rgw_get_user_info_by_access_key(string& access_key, RGWUserInfo& info /** * Given an RGWUserInfo, deletes the user and its bucket ACLs. */ -extern int rgw_delete_user(RGWUserInfo& user, bool purge_data); +extern int rgw_delete_user(RGWUserInfo& user); /** * Store a list of the user's buckets, with associated functinos. */ @@ -137,7 +137,7 @@ extern int rgw_read_user_buckets(string user_id, RGWUserBuckets& buckets, bool n extern int rgw_write_buckets_attr(string user_id, RGWUserBuckets& buckets); extern int rgw_add_bucket(string user_id, rgw_bucket& bucket); -extern int rgw_remove_user_bucket_info(string user_id, rgw_bucket& bucket, bool purge_data); +extern int rgw_remove_user_bucket_info(string user_id, rgw_bucket& bucket); /* * remove the different indexes -- 2.39.5