]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: be aware abount tenants on cls_user_bucket -> rgw_bucket conversion. 13276/head
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Wed, 1 Feb 2017 18:05:50 +0000 (19:05 +0100)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Mon, 6 Feb 2017 15:07:53 +0000 (16:07 +0100)
Fixes: http://tracker.ceph.com/issues/18364
Fixes: http://tracker.ceph.com/issues/16355
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
(cherry picked from commit 871e1f51afe9d6c8b88debc07460b4316121f999)

src/rgw/rgw_bucket.cc
src/rgw/rgw_bucket.h
src/rgw/rgw_common.h

index b3e5e0ec42dbedf7afa491db63e16074d8174058..8184741a4fff57bd4721824b97dca4aca0b74775 100644 (file)
@@ -134,9 +134,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 12182d12935ab0828283dc3fcff54b12959ba3c7..ed678f5ce994c8adaabdd6feb9b2db44feea5ffb 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 3175d6ac58510a2d9af1b241469732a7e80164d7..645f236f3f389a879aa5d9b6a6da8c613ea1a49b 100644 (file)
@@ -693,10 +693,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 = "";
@@ -1352,11 +1357,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);