Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0668216e authored by Sage Weil's avatar Sage Weil
Browse files

crush: use a temporary variable to simplify crush_do_rule



Use a temporary variable here to avoid repeated array lookups and clean up
the code a bit.

This reflects ceph.git commit 6b5be27634ad307b471a5bf0db85c4f5c834885f.

Reviewed-by: default avatarAlex Elder <elder@inktank.com>
Signed-off-by: default avatarSage Weil <sage@inktank.com>
parent a1f4895b
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -519,14 +519,15 @@ int crush_do_rule(const struct crush_map *map,
	}

	for (step = 0; step < rule->len; step++) {
		struct crush_rule_step *curstep = &rule->steps[step];

		firstn = 0;
		switch (rule->steps[step].op) {
		switch (curstep->op) {
		case CRUSH_RULE_TAKE:
			w[0] = rule->steps[step].arg1;
			w[0] = curstep->arg1;

			/* find position in force_context/hierarchy */
			while (force_pos >= 0 &&
			       force_context[force_pos] != w[0])
			while (force_pos >= 0 && force_context[force_pos] != w[0])
				force_pos--;
			/* and move past it */
			if (force_pos >= 0)
@@ -538,15 +539,16 @@ int crush_do_rule(const struct crush_map *map,
		case CRUSH_RULE_CHOOSE_LEAF_FIRSTN:
		case CRUSH_RULE_CHOOSE_FIRSTN:
			firstn = 1;
			/* fall through */
		case CRUSH_RULE_CHOOSE_LEAF_INDEP:
		case CRUSH_RULE_CHOOSE_INDEP:
			if (wsize == 0)
				break;

			recurse_to_leaf =
				rule->steps[step].op ==
				curstep->op ==
				 CRUSH_RULE_CHOOSE_LEAF_FIRSTN ||
				rule->steps[step].op ==
				curstep->op ==
				CRUSH_RULE_CHOOSE_LEAF_INDEP;

			/* reset output */
@@ -558,7 +560,7 @@ int crush_do_rule(const struct crush_map *map,
				 * basically, numrep <= 0 means relative to
				 * the provided result_max
				 */
				numrep = rule->steps[step].arg1;
				numrep = curstep->arg1;
				if (numrep <= 0) {
					numrep += result_max;
					if (numrep <= 0)
@@ -569,7 +571,7 @@ int crush_do_rule(const struct crush_map *map,
					/* skip any intermediate types */
					while (force_pos &&
					       force_context[force_pos] < 0 &&
					       rule->steps[step].arg2 !=
					       curstep->arg2 !=
					       map->buckets[-1 -
					       force_context[force_pos]]->type)
						force_pos--;
@@ -583,7 +585,7 @@ int crush_do_rule(const struct crush_map *map,
						      map->buckets[-1-w[i]],
						      weight,
						      x, numrep,
						      rule->steps[step].arg2,
						      curstep->arg2,
						      o+osize, j,
						      firstn,
						      recurse_to_leaf, c+osize);