1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef CEPH_CRUSH_MAPPER_H
3 #define CEPH_CRUSH_MAPPER_H
6 * CRUSH functions for find rules and then mapping an input to an
14 extern int crush_find_rule(const struct crush_map
*map
, int ruleset
, int type
, int size
);
15 int crush_do_rule(const struct crush_map
*map
,
16 int ruleno
, int x
, int *result
, int result_max
,
17 const __u32
*weight
, int weight_max
,
18 void *cwin
, const struct crush_choose_arg
*choose_args
);
21 * Returns the exact amount of workspace that will need to be used
22 * for a given combination of crush_map and result_max. The caller can
23 * then allocate this much on its own, either on the stack, in a
24 * per-thread long-lived buffer, or however it likes.
26 static inline size_t crush_work_size(const struct crush_map
*map
,
29 return map
->working_size
+ result_max
* 3 * sizeof(__u32
);
32 void crush_init_workspace(const struct crush_map
*map
, void *v
);