mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1002 B
34 lines
1002 B
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef CEPH_CRUSH_MAPPER_H |
|
#define CEPH_CRUSH_MAPPER_H |
|
|
|
/* |
|
* CRUSH functions for find rules and then mapping an input to an |
|
* output set. |
|
* |
|
* LGPL2 |
|
*/ |
|
|
|
#include "crush.h" |
|
|
|
extern int crush_find_rule(const struct crush_map *map, int ruleset, int type, int size); |
|
int crush_do_rule(const struct crush_map *map, |
|
int ruleno, int x, int *result, int result_max, |
|
const __u32 *weight, int weight_max, |
|
void *cwin, const struct crush_choose_arg *choose_args); |
|
|
|
/* |
|
* Returns the exact amount of workspace that will need to be used |
|
* for a given combination of crush_map and result_max. The caller can |
|
* then allocate this much on its own, either on the stack, in a |
|
* per-thread long-lived buffer, or however it likes. |
|
*/ |
|
static inline size_t crush_work_size(const struct crush_map *map, |
|
int result_max) |
|
{ |
|
return map->working_size + result_max * 3 * sizeof(__u32); |
|
} |
|
|
|
void crush_init_workspace(const struct crush_map *map, void *v); |
|
|
|
#endif
|
|
|