From: Yuri Weinstein Date: Fri, 14 Jul 2017 15:52:52 +0000 (-0700) Subject: Merge pull request #14915 from cbodley/wip-19817 X-Git-Tag: v12.1.1~21 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=34fcd223c5e2c5b0deb610541743ee5ae4175cec;p=ceph.git Merge pull request #14915 from cbodley/wip-19817 rgw: add missing RGWPeriod::reflect() based on new atomic update_latest_epoch() Reviewed-by: Orit Wasserman --- 34fcd223c5e2c5b0deb610541743ee5ae4175cec diff --cc src/rgw/rgw_rados.h index 86631926d42d,0ae433257fd0..6b996c960bfb --- a/src/rgw/rgw_rados.h +++ b/src/rgw/rgw_rados.h @@@ -1867,29 -1870,13 +1868,32 @@@ public int get_zonegroup(RGWZoneGroup& zonegroup, const string& zonegroup_id); - bool is_single_zonegroup(CephContext *cct, RGWRados *store); + bool is_single_zonegroup() + { + return (period_map.zonegroups.size() == 1); + } + + /* + returns true if there are several zone groups with a least one zone + */ + bool is_multi_zonegroups_with_zones() + { + int count = 0; + for (const auto& zg: period_map.zonegroups) { + if (zg.second.zones.size() > 0) { + if (count++ > 0) { + return true; + } + } + } + return false; + } int get_latest_epoch(epoch_t& epoch); - int set_latest_epoch(epoch_t epoch, bool exclusive = false); + int set_latest_epoch(epoch_t epoch, bool exclusive = false, + RGWObjVersionTracker *objv = nullptr); + // update latest_epoch if the given epoch is higher, else return -EEXIST + int update_latest_epoch(epoch_t epoch); int init(CephContext *_cct, RGWRados *_store, const string &period_realm_id, const string &period_realm_name = "", bool setup_obj = true);