Hi all,

I have a question regarding following rules in Ceph CRUSH map:

enum crush_opcodes {
        /*! do nothing
         */
CRUSH_RULE_NOOP = 0,
CRUSH_RULE_TAKE = 1,          /* arg1 = value to start with */
CRUSH_RULE_CHOOSE_FIRSTN = 2, /* arg1 = num items to pick */
                 /* arg2 = type */
CRUSH_RULE_CHOOSE_INDEP = 3,  /* same */
CRUSH_RULE_EMIT = 4,          /* no args */
CRUSH_RULE_CHOOSELEAF_FIRSTN = 6,
CRUSH_RULE_CHOOSELEAF_INDEP = 7,

CRUSH_RULE_SET_CHOOSE_TRIES = 8, /* override choose_total_tries */
CRUSH_RULE_SET_CHOOSELEAF_TRIES = 9, /* override chooseleaf_descend_once */
CRUSH_RULE_SET_CHOOSE_LOCAL_TRIES = 10,
CRUSH_RULE_SET_CHOOSE_LOCAL_FALLBACK_TRIES = 11,
CRUSH_RULE_SET_CHOOSELEAF_VARY_R = 12,
CRUSH_RULE_SET_CHOOSELEAF_STABLE = 13
};

Can we skip specific rules ? Or lets say, what are the minimum number of rules required by CRUSH?  

Because my understanding is, it all depends on map hierarchy. If we have a particular/given hierarchy, we can skip certain rules?