Merge pull request #17510 from liewegas/wip-crush-fix-rule-lookup

crush: fix fast rule lookup when uniform

Reviewed-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
Sage Weil 2017-09-06 13:41:55 -05:00 committed by GitHub
commit bd52ddd681

View File

@ -1261,14 +1261,15 @@ public:
int find_rule(int ruleset, int type, int size) const {
if (!crush) return -1;
if (!have_uniform_rules) {
return crush_find_rule(crush, ruleset, type, size);
} else {
if (ruleset < (int)crush->max_rules &&
crush->rules[ruleset])
return ruleset;
return -1;
if (have_uniform_rules &&
ruleset < (int)crush->max_rules &&
crush->rules[ruleset] &&
crush->rules[ruleset]->mask.type == type &&
crush->rules[ruleset]->mask.min_size <= size &&
crush->rules[ruleset]->mask.max_size >= size) {
return ruleset;
}
return crush_find_rule(crush, ruleset, type, size);
}
bool ruleset_exists(const int ruleset) const {