]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
osd/OSDMap.cc: remove pg_upmap/pg_upmap_items too if osd is gone
authorxie xingguo <xie.xingguo@zte.com.cn>
Wed, 20 Jun 2018 01:04:19 +0000 (09:04 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Wed, 20 Jun 2018 01:04:19 +0000 (09:04 +0800)
commit8a11ed479d7ea95f76170e74123ca2c48e3a3963
tree629bc25ca822c150b5e51b96bc3d13199df14f4c
parent33c773a810a20c4853313301bfd483c64f78a07a
osd/OSDMap.cc: remove pg_upmap/pg_upmap_items too if osd is gone

If an osd is gone or moved out from the specific crush rule,
we should cancel any pg_upmap/pg_upmap_items still bound to
that osd too.

The original code does not work for the above case because
get_parent_of_type() will fail if that osd does not belong
to the crush_rule passed in and hence hits the assert below:

```
src/osd/OSDMap.cc: 4078: FAILED assert(target > 0)
```

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/osd/OSDMap.cc