From: xie xingguo Date: Sat, 24 Jun 2017 01:55:24 +0000 (+0800) Subject: osd/OSDMap: make apply_upmap handle multiple pg-upmap-items correctly X-Git-Tag: v12.1.1~264^2~10 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=d816e71c59b5f3577b1aea2446e89c6bf8554b3e;p=ceph-ci.git osd/OSDMap: make apply_upmap handle multiple pg-upmap-items correctly Was: PG_STAT UP UP_PRIMARY ACTING ACTING_PRIMARY 0.7 [1,0,4] 1 [1,0,4] 1 ~#:./bin/ceph osd pg-upmap-items 0.7 0 2 1 3 4 5 set 0.7 pg_upmap_items mapping to [0,2,1,3,4,5] PG_STAT UP UP_PRIMARY ACTING ACTING_PRIMARY 0.7 [1,2,4] 1 [1,2,4] 1 Now: PG_STAT UP UP_PRIMARY ACTING ACTING_PRIMARY 0.7 [1,0,4] 1 [1,0,4] 1 ~#:./bin/ceph osd pg-upmap-items 0.7 0 2 1 3 4 5 set 0.7 pg_upmap_items mapping to [0,2,1,3,4,5] PG_STAT UP UP_PRIMARY ACTING ACTING_PRIMARY 0.7 [3,2,5] 3 [3,2,5] 3 Signed-off-by: xie xingguo --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 971e15d5aa0..aee8256e077 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1947,7 +1947,6 @@ void OSDMap::_apply_upmap(const pg_pool_t& pi, pg_t raw_pg, vector *raw) co } if (!exists && pos >= 0) { (*raw)[pos] = r.second; - return; } } } diff --git a/src/test/cli/osdmaptool/upmap.t b/src/test/cli/osdmaptool/upmap.t index e86a56a4f97..17542046794 100644 --- a/src/test/cli/osdmaptool/upmap.t +++ b/src/test/cli/osdmaptool/upmap.t @@ -13,10 +13,10 @@ ceph osd pg-upmap-items 0.89 8 13 54 50 ceph osd pg-upmap-items 0.8d 219 223 210 209 ceph osd pg-upmap-items 0.90 163 166 210 209 192 191 + ceph osd pg-upmap-items 0.9e 210 209 27 28 ceph osd pg-upmap-items 0.12b 54 50 227 225 ceph osd pg-upmap-items 0.13f 54 50 ceph osd pg-upmap-items 0.151 36 37 54 50 ceph osd pg-upmap-items 0.1c0 78 83 43 48 54 50 ceph osd pg-upmap-items 0.1e3 54 50 197 201 - ceph osd pg-upmap-items 0.2c4 54 50 $ rm -f om c