From: xie xingguo Date: Mon, 10 Jul 2017 03:06:41 +0000 (+0800) Subject: osd/OSDMap: apply both pg_upmap and pg_upmap_items X-Git-Tag: v12.1.1~81^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=379e47e1444ba47f89ee065f708dddbcaf4c5040;p=ceph.git osd/OSDMap: apply both pg_upmap and pg_upmap_items This allows a more flexible upmap policy by combinating both pg_upmap and pg_upmap_items. For example: ./bin/ceph osd pg-upmap 1.0 1 2 3 set 1.0 pg_upmap mapping to [1,2,3] ./bin/ceph osd pg-upmap-items 1.0 1 5 set 1.0 pg_upmap_items mapping to [1->5] ./bin/ceph pg ls-by-pool cephfs_data_a PG_STAT OBJECTS MISSING_ON_PRIMARY DEGRADED MISPLACED UNFOUND BYTES LOG DISK_LOG STATE STATE_STAMP VERSION REPORTED UP UP_PRIMARY ACTING ACTING_PRIMARY 1.0 0 0 0 0 0 0 0 0 active+clean 2017-07-10 11:04:53.955681 0'0 22:13 [5,2,3] 5 [5,2,3] 5 Signed-off-by: xie xingguo --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 2637df618bbd..f6590080258c 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1920,7 +1920,7 @@ void OSDMap::_apply_upmap(const pg_pool_t& pi, pg_t raw_pg, vector *raw) co } } *raw = vector(p->second.begin(), p->second.end()); - return; + // continue to check and apply pg_upmap_items if any } auto q = pg_upmap_items.find(pg);