]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: don't purge pools in any case
authorYehuda Sadeh <yehuda@hq.newdream.net>
Fri, 4 Nov 2011 20:11:19 +0000 (13:11 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Fri, 4 Nov 2011 20:13:41 +0000 (13:13 -0700)
src/rgw/rgw_access.h
src/rgw/rgw_admin.cc
src/rgw/rgw_fs.cc
src/rgw/rgw_fs.h
src/rgw/rgw_op.cc
src/rgw/rgw_rados.cc
src/rgw/rgw_rados.h
src/rgw/rgw_user.cc
src/rgw/rgw_user.h

index 0155be16bb13320d5319589328c981d18e681e56..21f597d534b773d8b7aeb9840c3f5becca91eff2 100644 (file)
@@ -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<rgw_bucket>& buckets) { return -ENOTSUP; }
+  virtual int delete_bucket(rgw_bucket& bucket) = 0;
 
   virtual int set_buckets_enabled(std::vector<rgw_bucket>& buckets, bool enabled) { return -ENOTSUP; }
   virtual int bucket_suspended(rgw_bucket& bucket, bool *suspended) {
index b272af426a9e095abc6c51072108f59629b03793..ee43051fb9b46eb4c5b976acb7ee4c3e6f1aeab9 100644 (file)
@@ -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) {
index c76b4193a54043a8037c15f65e20d6d3a05d7808..1fbcb2b12d1844ee4342800ae9154e0eaea9a60d 100644 (file)
@@ -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];
index 1d209e5fc290305c1d4767f1772c8372bcd12a65..69b11218042d7bcfe98e60c62495e2b91a163327 100644 (file)
@@ -34,7 +34,7 @@ public:
                map<std::string, bufferlist>& 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);
index 5ba7ca2cc4a5fc90452ec7d961a15aa5bc34d461..36ded6f4cb4ef750f44ce1a87972be5ae1a1d97a 100644 (file)
@@ -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;
       }
index c0ddef0913a6f9e11d914dea35332181b3a39126..7d4a6c302bce3dc678e22dae03d0b19d4795856c 100644 (file)
@@ -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<rgw_bucket>& buckets)
-{
-  librados::IoCtx list_ctx;
-  vector<rgw_bucket>::iterator iter;
-  vector<librados::PoolAsyncCompletion *> 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<librados::PoolAsyncCompletion *>::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<rgw_bucket>& buckets, bool enabled)
 {
   int ret = 0;
@@ -2059,7 +2006,7 @@ int RGWRados::pool_list(rgw_bucket& bucket, string start, uint32_t num, map<stri
     const string &oid = *iter;
 
     // fill it in with initial values; we may correct later
-    e.name = *iter;
+    e.name = oid;
     m[e.name] = e;
     dout(0) << " got " << e.name << dendl;
   }
@@ -2471,7 +2418,7 @@ int RGWRados::process_intent_log(rgw_bucket& bucket, string& oid,
           complete = false;
           break;
         }
-        r = delete_bucket(entry.obj.bucket, true);
+        r = delete_bucket(entry.obj.bucket);
         if (r < 0 && r != -ENOENT) {
           cerr << "failed to remove pool: " << entry.obj.bucket.pool << std::endl;
           complete = false;
index 111adb2adcb108860b4b3d776ed8db94ae1f1d02..8c95f116063d2956ba9fff28f98b0929887dc0b2 100644 (file)
@@ -236,8 +236,7 @@ public:
                RGWObjCategory category,
                struct rgw_err *err);
   /** delete a bucket*/
-  virtual int delete_bucket(rgw_bucket& bucket, bool remove_pool);
-  virtual int purge_buckets(vector<rgw_bucket>& buckets);
+  virtual int delete_bucket(rgw_bucket& bucket);
 
   virtual int set_buckets_enabled(std::vector<rgw_bucket>& buckets, bool enabled);
   virtual int bucket_suspended(rgw_bucket& bucket, bool *suspended);
index b25e89ae65bd224a931bd55c53f8fdeeae2216fc..6430092b1ad867246ca3e1c0fedb7ba9f00626ad 100644 (file)
@@ -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<rgw_bucket> 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);
index 8ce3c2454b7767ff0b38db28ce31098e874e5705..51294d05970915a151f6956e53cc10206a69249f 100644 (file)
@@ -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