]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/OSDMap: apply both pg_upmap and pg_upmap_items
authorxie xingguo <xie.xingguo@zte.com.cn>
Mon, 10 Jul 2017 03:06:41 +0000 (11:06 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Mon, 10 Jul 2017 03:23:36 +0000 (11:23 +0800)
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 <xie.xingguo@zte.com.cn>
src/osd/OSDMap.cc

index 2637df618bbd5891b0f8bfa13874cec67df1ebf0..f6590080258ca2a063dc7a741a6ca28dab45b7c4 100644 (file)
@@ -1920,7 +1920,7 @@ void OSDMap::_apply_upmap(const pg_pool_t& pi, pg_t raw_pg, vector<int> *raw) co
       }
     }
     *raw = vector<int>(p->second.begin(), p->second.end());
-    return;
+    // continue to check and apply pg_upmap_items if any
   }
 
   auto q = pg_upmap_items.find(pg);