You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
crush: sync up with userspace
.. up to ceph.git commit 1db1abc8328d ("crush: eliminate ad hoc diff
between kernel and userspace"). This fixes a bunch of recently pulled
coding style issues and makes includes a bit cleaner.
A patch "crush:Make the function crush_ln static" from Nicholas Krause
<xerofoify@gmail.com> is folded in as crush_ln() has been made static
in userspace as well.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
#ifndef CEPH_CRUSH_CRUSH_H
|
||||
#define CEPH_CRUSH_CRUSH_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#ifdef __KERNEL__
|
||||
# include <linux/types.h>
|
||||
#else
|
||||
# include "crush_compat.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* CRUSH is a pseudo-random data distribution algorithm that
|
||||
@@ -20,7 +24,11 @@
|
||||
#define CRUSH_MAGIC 0x00010000ul /* for detecting algorithm revisions */
|
||||
|
||||
#define CRUSH_MAX_DEPTH 10 /* max crush hierarchy depth */
|
||||
#define CRUSH_MAX_RULESET (1<<8) /* max crush ruleset number */
|
||||
#define CRUSH_MAX_RULES CRUSH_MAX_RULESET /* should be the same as max rulesets */
|
||||
|
||||
#define CRUSH_MAX_DEVICE_WEIGHT (100u * 0x10000u)
|
||||
#define CRUSH_MAX_BUCKET_WEIGHT (65535u * 0x10000u)
|
||||
|
||||
#define CRUSH_ITEM_UNDEF 0x7ffffffe /* undefined result (internal use only) */
|
||||
#define CRUSH_ITEM_NONE 0x7fffffff /* no result */
|
||||
@@ -108,6 +116,15 @@ enum {
|
||||
};
|
||||
extern const char *crush_bucket_alg_name(int alg);
|
||||
|
||||
/*
|
||||
* although tree was a legacy algorithm, it has been buggy, so
|
||||
* exclude it.
|
||||
*/
|
||||
#define CRUSH_LEGACY_ALLOWED_BUCKET_ALGS ( \
|
||||
(1 << CRUSH_BUCKET_UNIFORM) | \
|
||||
(1 << CRUSH_BUCKET_LIST) | \
|
||||
(1 << CRUSH_BUCKET_STRAW))
|
||||
|
||||
struct crush_bucket {
|
||||
__s32 id; /* this'll be negative */
|
||||
__u16 type; /* non-zero; type=0 is reserved for devices */
|
||||
@@ -174,7 +191,7 @@ struct crush_map {
|
||||
/* choose local attempts using a fallback permutation before
|
||||
* re-descent */
|
||||
__u32 choose_local_fallback_tries;
|
||||
/* choose attempts before giving up */
|
||||
/* choose attempts before giving up */
|
||||
__u32 choose_total_tries;
|
||||
/* attempt chooseleaf inner descent once for firstn mode; on
|
||||
* reject retry outer descent. Note that this does *not*
|
||||
@@ -187,6 +204,25 @@ struct crush_map {
|
||||
* that want to limit reshuffling, a value of 3 or 4 will make the
|
||||
* mappings line up a bit better with previous mappings. */
|
||||
__u8 chooseleaf_vary_r;
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/*
|
||||
* version 0 (original) of straw_calc has various flaws. version 1
|
||||
* fixes a few of them.
|
||||
*/
|
||||
__u8 straw_calc_version;
|
||||
|
||||
/*
|
||||
* allowed bucket algs is a bitmask, here the bit positions
|
||||
* are CRUSH_BUCKET_*. note that these are *bits* and
|
||||
* CRUSH_BUCKET_* values are not, so we need to or together (1
|
||||
* << CRUSH_BUCKET_WHATEVER). The 0th bit is not used to
|
||||
* minimize confusion (bucket type values start at 1).
|
||||
*/
|
||||
__u32 allowed_bucket_algs;
|
||||
|
||||
__u32 *choose_tries;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
#ifndef CEPH_CRUSH_HASH_H
|
||||
#define CEPH_CRUSH_HASH_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
# include <linux/types.h>
|
||||
#else
|
||||
# include "crush_compat.h"
|
||||
#endif
|
||||
|
||||
#define CRUSH_HASH_RJENKINS1 0
|
||||
|
||||
#define CRUSH_HASH_DEFAULT CRUSH_HASH_RJENKINS1
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* LGPL2
|
||||
*/
|
||||
|
||||
#include <linux/crush/crush.h>
|
||||
#include "crush.h"
|
||||
|
||||
extern int crush_find_rule(const struct crush_map *map, int ruleset, int type, int size);
|
||||
extern int crush_do_rule(const struct crush_map *map,
|
||||
|
||||
Reference in New Issue
Block a user