From e9f99166f7fc1b4b468e146a47ec9ac71541bec9 Mon Sep 17 00:00:00 2001 From: Orit Wasserman Date: Fri, 20 May 2016 09:52:01 +0200 Subject: [PATCH] rgw: add missing metadata_heap pool to old zones Fixes: http://tracker.ceph.com/issues/15937 Signed-off-by: Orit Wasserman Signed-off-by: Abhishek Lekshmanan (cherry picked from commit b79856bd3f7db8498231d7f35b53b4bcb44a0422) --- src/rgw/rgw_rados.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 8a3420c05c0b8..a07b4a728b59f 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -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) { -- 2.39.5