]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add missing metadata_heap pool to old zones 9294/head
authorOrit Wasserman <owasserm@redhat.com>
Fri, 20 May 2016 07:52:01 +0000 (09:52 +0200)
committerAbhishek Lekshmanan <abhishek@suse.com>
Tue, 31 May 2016 11:37:59 +0000 (13:37 +0200)
Fixes: http://tracker.ceph.com/issues/15937
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
Signed-off-by: Abhishek Lekshmanan <abhishek@suse.com>
(cherry picked from commit b79856bd3f7db8498231d7f35b53b4bcb44a0422)

src/rgw/rgw_rados.cc

index 8a3420c05c0b876a1a251c5d42c5cca62428a08e..a07b4a728b59f7b88d76163db88a5b23df1add66 100644 (file)
@@ -3332,6 +3332,17 @@ int RGWRados::replace_region_with_zonegroup()
     ldout(cct, 0) << "failed to list regions: ret "<< ret << " " << cpp_strerror(-ret) << dendl;
     return ret;
   } else if (ret == -ENOENT || regions.empty()) {
+    RGWZoneParams zoneparams(default_zone_name);
+    int ret = zoneparams.init(cct, this);
+    if (ret < 0 && ret != -ENOENT) {
+      ldout(cct, 0) << __func__ << ": error initializing default zone params: " << cpp_strerror(-ret) << dendl;
+      return ret;
+    }
+    /* default zone is missing meta_heap */
+    if (ret != -ENOENT && zoneparams.metadata_heap.name.empty()) {
+      zoneparams.metadata_heap = ".rgw.meta";
+      return zoneparams.update();
+    }
     return 0;
   }
 
@@ -3432,6 +3443,9 @@ int RGWRados::replace_region_with_zonegroup()
         ldout(cct, 0) << "failed to init zoneparams  " << iter->first <<  ": " << cpp_strerror(-ret) << dendl;
         return ret;
       }
+      if (zoneparams.metadata_heap.name.empty()) {
+       zoneparams.metadata_heap = ".rgw.meta";
+      }
       zonegroup.realm_id = realm.get_id();
       ret = zoneparams.update();
       if (ret < 0 && ret != -EEXIST) {