]>
git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - include/linux/crush/mapper.h
1 #ifndef CEPH_CRUSH_MAPPER_H
2 #define CEPH_CRUSH_MAPPER_H
5 * CRUSH functions for find rules and then mapping an input to an
13 extern int crush_find_rule(const struct crush_map
*map
, int ruleset
, int type
, int size
);
14 extern int crush_do_rule(const struct crush_map
*map
,
16 int x
, int *result
, int result_max
,
17 const __u32
*weights
, int weight_max
,
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
);