]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: put_bucket_info() uses objv_tracker in bucket info
authorYehuda Sadeh <yehuda@inktank.com>
Mon, 24 Jun 2013 02:42:17 +0000 (19:42 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Mon, 24 Jun 2013 02:42:17 +0000 (19:42 -0700)
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_bucket.cc
src/rgw/rgw_op.cc
src/rgw/rgw_op.h
src/rgw/rgw_rados.cc
src/rgw/rgw_rados.h
src/rgw/rgw_rest_s3.cc

index f78a0a727cecaca05943c4b1734da9054315162b..fb92aa311d8cac554d063f9623b34ae38aaaa6a4 100644 (file)
@@ -1366,7 +1366,7 @@ public:
     }
 
 #warning need to take care of different routes here
-    ret = store->put_bucket_info(entry, bci.info, false, &bci.info.objv_tracker, mtime, &bci.attrs, false);
+    ret = store->put_bucket_info(entry, bci.info, false, mtime, &bci.attrs, false);
     if (ret < 0)
       return ret;
 
index 675ae92f7ffedb5838c7ea82647ba8f8e6b95e98..202e438af5f563128195cc93eb34779f994a554b 100644 (file)
@@ -996,8 +996,8 @@ void RGWCreateBucket::execute()
   attrs[RGW_ATTR_ACL] = aclbl;
 
   s->bucket.name = s->bucket_name_str;
-  ret = store->create_bucket(s->user, s->bucket, region_name, placement_rule, attrs, objv_tracker, pobjv,
-                             creation_time, pmaster_bucket, &info, true);
+  ret = store->create_bucket(s->user, s->bucket, region_name, placement_rule, attrs, info, pobjv,
+                             creation_time, pmaster_bucket, true);
   /* continue if EEXIST and create_bucket will fail below.  this way we can recover
    * from a partial create by retrying it. */
   ldout(s->cct, 20) << "rgw_create_bucket returned ret=" << ret << " bucket=" << s->bucket << dendl;
index 462d58440c7c510b837ec130afab2b61030fc962..fc12470c3d678f1f10bb83fde7baa4d1dae92cfe 100644 (file)
@@ -234,7 +234,6 @@ protected:
   RGWAccessControlPolicy policy;
   string location_constraint;
   string placement_rule;
-  RGWObjVersionTracker objv_tracker;
   RGWBucketInfo info;
 
   bufferlist in_data;
index 33056f52715689bcb82aa1b5833ad0b3ddb533fc..bf1e16d32c7a52391e5cbac877a60b830363cf25 100644 (file)
@@ -1746,11 +1746,10 @@ int RGWRados::create_bucket(RGWUserInfo& owner, rgw_bucket& bucket,
                             const string& region_name,
                             const string& placement_rule,
                            map<std::string, bufferlist>& attrs,
-                            RGWObjVersionTracker& objv_tracker,
+                            RGWBucketInfo& info,
                             obj_version *pobjv,
                             time_t creation_time,
                             rgw_bucket *pmaster_bucket,
-                            RGWBucketInfo *pinfo,
                            bool exclusive)
 {
 #define MAX_CREATE_RETRIES 20 /* need to bound retries */
@@ -1790,13 +1789,14 @@ int RGWRados::create_bucket(RGWUserInfo& owner, rgw_bucket& bucket,
     if (r < 0)
       return r;
 
+    RGWObjVersionTracker& objv_tracker = info.objv_tracker;
+
     if (pobjv) {
       objv_tracker.write_version = *pobjv;
     } else {
       objv_tracker.generate_new_write_ver(cct);
     }
 
-    RGWBucketInfo info;
     info.bucket = bucket;
     info.owner = owner.user_id;
     info.region = region_name;
@@ -1805,7 +1805,7 @@ int RGWRados::create_bucket(RGWUserInfo& owner, rgw_bucket& bucket,
       time(&info.creation_time);
     else
       info.creation_time = creation_time;
-    ret = put_bucket_info(bucket.name, info, exclusive, &objv_tracker, 0, &attrs, true);
+    ret = put_bucket_info(bucket.name, info, exclusive, 0, &attrs, true);
     if (ret == -EEXIST) {
       librados::IoCtx index_ctx; // context for new bucket
       int r = open_bucket_index_ctx(bucket, index_ctx);
@@ -1813,8 +1813,8 @@ int RGWRados::create_bucket(RGWUserInfo& owner, rgw_bucket& bucket,
         return r;
 
       index_ctx.remove(dir_oid);
-      /* we need to updated objv_tracker, but we don't want the old cruft there */
-      r = get_bucket_info(NULL, bucket.name, info, NULL);
+      RGWBucketInfo actual_info;
+      r = get_bucket_info(NULL, bucket.name, actual_info, NULL);
       if (r < 0) {
         if (r == -ENOENT) {
           continue;
@@ -1823,8 +1823,6 @@ int RGWRados::create_bucket(RGWUserInfo& owner, rgw_bucket& bucket,
         return r;
       }
     }
-    if (pinfo)
-      *pinfo = info;
     return ret;
   }
 
@@ -2837,7 +2835,7 @@ int RGWRados::set_bucket_owner(rgw_bucket& bucket, ACLOwner& owner)
 
   info.owner = owner.get_id();
 
-  r = put_bucket_info(bucket.name, info, false, &info.objv_tracker, 0, &attrs, false);
+  r = put_bucket_info(bucket.name, info, false, 0, &attrs, false);
   if (r < 0) {
     ldout(cct, 0) << "NOTICE: put_bucket_info on bucket=" << bucket.name << " returned err=" << r << dendl;
     return r;
@@ -2874,7 +2872,7 @@ int RGWRados::set_buckets_enabled(vector<rgw_bucket>& buckets, bool enabled)
       info.flags |= BUCKET_SUSPENDED;
     }
 
-    r = put_bucket_info(bucket.name, info, false, &info.objv_tracker, 0, &attrs, false);
+    r = put_bucket_info(bucket.name, info, false, 0, &attrs, false);
     if (r < 0) {
       ldout(cct, 0) << "NOTICE: put_bucket_info on bucket=" << bucket.name << " returned err=" << r << ", skipping bucket" << dendl;
       ret = r;
@@ -4523,7 +4521,7 @@ int RGWRados::get_bucket_info(void *ctx, string& bucket_name, RGWBucketInfo& inf
   return 0;
 }
 
-int RGWRados::put_bucket_info(string& bucket_name, RGWBucketInfo& info, bool exclusive, RGWObjVersionTracker *objv_tracker,
+int RGWRados::put_bucket_info(string& bucket_name, RGWBucketInfo& info, bool exclusive,
                               time_t mtime, map<string, bufferlist> *pattrs, bool create_entry_point)
 {
   bufferlist bl;
@@ -4536,7 +4534,7 @@ int RGWRados::put_bucket_info(string& bucket_name, RGWBucketInfo& info, bool exc
 
   string oid;
   get_bucket_meta_oid(info.bucket, oid);
-  int ret = rgw_bucket_store_info(this, oid, bl, exclusive, pattrs, objv_tracker, mtime);
+  int ret = rgw_bucket_store_info(this, oid, bl, exclusive, pattrs, &info.objv_tracker, mtime);
   if (ret < 0) {
     return ret;
   }
index e42f79d460251e6c3ac6c671332f85e3aa3f268c..725830085871085133f319df301d5d787de9f71a 100644 (file)
@@ -967,11 +967,10 @@ public:
                             const string& region_name,
                             const string& placement_rule,
                             map<std::string,bufferlist>& attrs,
-                            RGWObjVersionTracker& objv_tracker,
+                            RGWBucketInfo& bucket_info,
                             obj_version *pobjv,
                             time_t creation_time,
                             rgw_bucket *master_bucket,
-                            RGWBucketInfo *pinfo,
                             bool exclusive = true);
   virtual int add_bucket_placement(std::string& new_pool);
   virtual int remove_bucket_placement(std::string& new_pool);
@@ -1271,7 +1270,7 @@ public:
   void get_bucket_meta_oid(rgw_bucket& bucket, string& oid);
   virtual int get_bucket_info(void *ctx, string& bucket_name, RGWBucketInfo& info,
                               time_t *pmtime, map<string, bufferlist> *pattrs = NULL);
-  virtual int put_bucket_info(string& bucket_name, RGWBucketInfo& info, bool exclusive, RGWObjVersionTracker *objv_tracker,
+  virtual int put_bucket_info(string& bucket_name, RGWBucketInfo& info, bool exclusive,
                               time_t mtime, map<string, bufferlist> *pattrs, bool create_entry_point);
 
   int cls_rgw_init_index(librados::IoCtx& io_ctx, librados::ObjectWriteOperation& op, string& oid);
index 9442278f080ce9c3455187f30d6ffa0b85b430ab..6e482e8a25137f257040e12b6e7b5a5f3c7c09ea 100644 (file)
@@ -449,7 +449,7 @@ void RGWCreateBucket_ObjStore_S3::send_response()
     JSONFormatter f; /* use json formatter for system requests output */
 
     f.open_object_section("info");
-    encode_json("object_ver", objv_tracker.read_version, &f);
+    encode_json("object_ver", info.objv_tracker.read_version, &f);
     encode_json("bucket_info", info, &f);
     f.close_section();
     rgw_flush_formatter_and_reset(s, &f);