crush->max_devices = m;
}
- int find_rule(int ruleset, int type, int size) const {
- if (!crush) 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 {
for (size_t i = 0; i < crush->max_rules; ++i) {
if (rule_exists(i) && crush->rules[i]->mask.ruleset == ruleset) {
* Implement the core CRUSH mapping algorithm.
*/
-/**
- * crush_find_rule - find a crush_rule id for a given ruleset, type, and size.
- * @map: the crush_map
- * @ruleset: the storage ruleset id (user defined)
- * @type: storage ruleset type (user defined)
- * @size: output set size
- */
-int crush_find_rule(const struct crush_map *map, int ruleset, int type, int size)
-{
- __u32 i;
-
- for (i = 0; i < map->max_rules; i++) {
- if (map->rules[i] &&
- map->rules[i]->mask.ruleset == ruleset &&
- map->rules[i]->mask.type == type &&
- map->rules[i]->mask.min_size <= size &&
- map->rules[i]->mask.max_size >= size)
- return i;
- }
- return -1;
-}
-
/*
* bucket choose methods
*
#include "crush.h"
-extern int crush_find_rule(const struct crush_map *map, int ruleset, int type, int size);
/** @ingroup API
*
* Map __x__ to __result_max__ items and store them in the __result__