Description of problem:
Creating a new pool after manually modifying the CRUSH map and removing a CRUSH ruleset causes the newly created pool to use rule_id rather than the specified ruleset. This can lead to other issues in the cluster such as not being able to unprotect snapshots due to the newly created pool being in an errored state.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Have 3 crush rulesets with consecutive rule ID's (ex. 0, 1, 2)
2. Manually manipulate the CRUSH map and delete the middle ruleset. Leaving a gap between rule_id 0 and 2 and inject the new map.
3. Create a new pool and specify the ruleset name for rule_id 2. Pool shows as successfully created but PG's never get created and pool shows it's using a crush_ruleset that does not exist.
The pool gets created with an incorrect crush_ruleset
Pool should get created with correct specified crush ruleset.
Similar to https://bugzilla.redhat.com/show_bug.cgi?id=1258953
Upstream tracker: http://tracker.ceph.com/issues/17138
PR 13683 has been available since v12.1.0
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.