]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: be aware abount tenants on cls_user_bucket -> rgw_bucket conversion. 13220/head
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Wed, 1 Feb 2017 18:05:50 +0000 (19:05 +0100)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Thu, 2 Feb 2017 18:02:25 +0000 (19:02 +0100)
Fixes: http://tracker.ceph.com/issues/18364
Fixes: http://tracker.ceph.com/issues/16355
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/rgw/rgw_bucket.cc
src/rgw/rgw_bucket.h
src/rgw/rgw_common.h

index 63a0e45881a734a1a14d0d7e6e7cedb68b02a2fb..a1ec0f0a0b0907a046428de4db64bd69200e700b 100644 (file)
@@ -133,9 +133,8 @@ int rgw_read_user_buckets(RGWRados * store,
     if (ret < 0)
       return ret;
 
-    for (list<cls_user_bucket_entry>::iterator q = entries.begin(); q != entries.end(); ++q) {
-      RGWBucketEnt e(*q);
-      buckets.add(e);
+    for (const auto& entry : entries) {
+      buckets.add(RGWBucketEnt(user_id, entry));
       total++;
     }
 
index ff6c8c61e6d5356d65879415cec799bae2da9eaa..93b781f00eec8c4d82420406cb2235c000fb2b58 100644 (file)
@@ -126,7 +126,7 @@ public:
   /**
    * Add a (created) bucket to the user's bucket list.
    */
-  void add(RGWBucketEnt& bucket) {
+  void add(const RGWBucketEnt& bucket) {
     buckets[bucket.bucket.name] = bucket;
   }
 
index c5aa61daf78961752ff0aa85a98fa72a2714427c..14f7e24618bf37906cebff0c68eaa8ce648f6448 100644 (file)
@@ -737,10 +737,15 @@ struct rgw_bucket {
 
   rgw_bucket() { }
   // cppcheck-suppress noExplicitConstructor
-  rgw_bucket(const cls_user_bucket& b) : name(b.name), data_pool(b.data_pool),
-                                        data_extra_pool(b.data_extra_pool),
-                                        index_pool(b.index_pool), marker(b.marker),
-                                        bucket_id(b.bucket_id) {}
+  explicit rgw_bucket(const rgw_user& u, const cls_user_bucket& b)
+    : tenant(u.tenant),
+      name(b.name),
+      data_pool(b.data_pool),
+      data_extra_pool(b.data_extra_pool),
+      index_pool(b.index_pool),
+      marker(b.marker),
+      bucket_id(b.bucket_id) {
+  }
   rgw_bucket(const string& s) : name(s) {
     data_pool = index_pool = s;
     marker = "";
@@ -1414,11 +1419,13 @@ struct RGWBucketEnt {
 
   RGWBucketEnt() : size(0), size_rounded(0), count(0) {}
 
-  explicit RGWBucketEnt(const cls_user_bucket_entry& e) : bucket(e.bucket),
-                                                         size(e.size), 
-                                                         size_rounded(e.size_rounded),
-                                                         creation_time(e.creation_time),
-                                                         count(e.count) {}
+  explicit RGWBucketEnt(const rgw_user& u, const cls_user_bucket_entry& e)
+    : bucket(u, e.bucket),
+      size(e.size),
+      size_rounded(e.size_rounded),
+      creation_time(e.creation_time),
+      count(e.count) {
+  }
 
   void convert(cls_user_bucket_entry *b) {
     bucket.convert(&b->bucket);