Message ID | 20241011224736.236863-1-linux@treblig.org (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | libceph: Remove crush deadcode | expand |
On Fri, Oct 11, 2024 at 11:47:36PM +0100, linux@treblig.org wrote: > From: "Dr. David Alan Gilbert" <linux@treblig.org> > > crush_bucket_alg_name(), crush_get_bucket_item_weight(), crush_hash32(), > and crush_hash32_5() were added by commit > 5ecc0a0f8128 ("ceph: CRUSH mapping algorithm") > in 2009 but never used. > > crush_hash_name() was added a little later by commit > fb690390e305 ("ceph: make CRUSH hash function a bucket property") > and also not used. > > Remove them. > > They called a couple of static functions crush_hash32_rjenkins1() > and crush_hash32_rjenkins1_5() which are now unused. > > Also remove them. > > Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org> Reviewed-by: Simon Horman <horms@kernel.org>
On Sat, Oct 12, 2024 at 12:47 AM <linux@treblig.org> wrote: > > From: "Dr. David Alan Gilbert" <linux@treblig.org> > > crush_bucket_alg_name(), crush_get_bucket_item_weight(), crush_hash32(), > and crush_hash32_5() were added by commit > 5ecc0a0f8128 ("ceph: CRUSH mapping algorithm") > in 2009 but never used. > > crush_hash_name() was added a little later by commit > fb690390e305 ("ceph: make CRUSH hash function a bucket property") > and also not used. > > Remove them. Hi David, The implementation of the CRUSH algorithm is shared with userspace and these functions are used there (except for crush_hash32_5() perhaps). They are all trivial code, so I'd prefer to keep them for convenience. Thanks, Ilya
* Ilya Dryomov (idryomov@gmail.com) wrote: > On Sat, Oct 12, 2024 at 12:47 AM <linux@treblig.org> wrote: > > > > From: "Dr. David Alan Gilbert" <linux@treblig.org> > > > > crush_bucket_alg_name(), crush_get_bucket_item_weight(), crush_hash32(), > > and crush_hash32_5() were added by commit > > 5ecc0a0f8128 ("ceph: CRUSH mapping algorithm") > > in 2009 but never used. > > > > crush_hash_name() was added a little later by commit > > fb690390e305 ("ceph: make CRUSH hash function a bucket property") > > and also not used. > > > > Remove them. > > Hi David, > > The implementation of the CRUSH algorithm is shared with userspace and > these functions are used there (except for crush_hash32_5() perhaps). > They are all trivial code, so I'd prefer to keep them for convenience. OK, no problem. (Although perhaps an ifndef __KERNEL__ might save a few bytes?) Dave > Thanks, > > Ilya >
On Sun, Oct 27, 2024 at 10:00 PM Dr. David Alan Gilbert <linux@treblig.org> wrote: > > * Ilya Dryomov (idryomov@gmail.com) wrote: > > On Sat, Oct 12, 2024 at 12:47 AM <linux@treblig.org> wrote: > > > > > > From: "Dr. David Alan Gilbert" <linux@treblig.org> > > > > > > crush_bucket_alg_name(), crush_get_bucket_item_weight(), crush_hash32(), > > > and crush_hash32_5() were added by commit > > > 5ecc0a0f8128 ("ceph: CRUSH mapping algorithm") > > > in 2009 but never used. > > > > > > crush_hash_name() was added a little later by commit > > > fb690390e305 ("ceph: make CRUSH hash function a bucket property") > > > and also not used. > > > > > > Remove them. > > > > Hi David, > > > > The implementation of the CRUSH algorithm is shared with userspace and > > these functions are used there (except for crush_hash32_5() perhaps). > > They are all trivial code, so I'd prefer to keep them for convenience. > > OK, no problem. > (Although perhaps an ifndef __KERNEL__ might save a few bytes?) I'm not sure that is worth the churn. If shaving off a teeny tiny bit from the text section in generic distro kernels (where Ceph modules are enabled) is really desired, I'd probably just drop these functions (i.e. apply the patch as is). Thanks, Ilya
diff --git a/include/linux/crush/crush.h b/include/linux/crush/crush.h index 30dba392b730..ed26099957df 100644 --- a/include/linux/crush/crush.h +++ b/include/linux/crush/crush.h @@ -117,7 +117,6 @@ enum { CRUSH_BUCKET_STRAW = 4, CRUSH_BUCKET_STRAW2 = 5, }; -extern const char *crush_bucket_alg_name(int alg); /* * although tree was a legacy algorithm, it has been buggy, so @@ -314,7 +313,6 @@ struct crush_map { /* crush.c */ -extern int crush_get_bucket_item_weight(const struct crush_bucket *b, int pos); extern void crush_destroy_bucket_uniform(struct crush_bucket_uniform *b); extern void crush_destroy_bucket_list(struct crush_bucket_list *b); extern void crush_destroy_bucket_tree(struct crush_bucket_tree *b); diff --git a/include/linux/crush/hash.h b/include/linux/crush/hash.h index 904df41f7847..0ee007a98236 100644 --- a/include/linux/crush/hash.h +++ b/include/linux/crush/hash.h @@ -12,13 +12,8 @@ #define CRUSH_HASH_DEFAULT CRUSH_HASH_RJENKINS1 -extern const char *crush_hash_name(int type); - -extern __u32 crush_hash32(int type, __u32 a); extern __u32 crush_hash32_2(int type, __u32 a, __u32 b); extern __u32 crush_hash32_3(int type, __u32 a, __u32 b, __u32 c); extern __u32 crush_hash32_4(int type, __u32 a, __u32 b, __u32 c, __u32 d); -extern __u32 crush_hash32_5(int type, __u32 a, __u32 b, __u32 c, __u32 d, - __u32 e); #endif diff --git a/net/ceph/crush/crush.c b/net/ceph/crush/crush.c index 254ded0b05f6..9331f91f1242 100644 --- a/net/ceph/crush/crush.c +++ b/net/ceph/crush/crush.c @@ -7,43 +7,6 @@ # include "crush.h" #endif -const char *crush_bucket_alg_name(int alg) -{ - switch (alg) { - case CRUSH_BUCKET_UNIFORM: return "uniform"; - case CRUSH_BUCKET_LIST: return "list"; - case CRUSH_BUCKET_TREE: return "tree"; - case CRUSH_BUCKET_STRAW: return "straw"; - case CRUSH_BUCKET_STRAW2: return "straw2"; - default: return "unknown"; - } -} - -/** - * crush_get_bucket_item_weight - Get weight of an item in given bucket - * @b: bucket pointer - * @p: item index in bucket - */ -int crush_get_bucket_item_weight(const struct crush_bucket *b, int p) -{ - if ((__u32)p >= b->size) - return 0; - - switch (b->alg) { - case CRUSH_BUCKET_UNIFORM: - return ((struct crush_bucket_uniform *)b)->item_weight; - case CRUSH_BUCKET_LIST: - return ((struct crush_bucket_list *)b)->item_weights[p]; - case CRUSH_BUCKET_TREE: - return ((struct crush_bucket_tree *)b)->node_weights[crush_calc_tree_node(p)]; - case CRUSH_BUCKET_STRAW: - return ((struct crush_bucket_straw *)b)->item_weights[p]; - case CRUSH_BUCKET_STRAW2: - return ((struct crush_bucket_straw2 *)b)->item_weights[p]; - } - return 0; -} - void crush_destroy_bucket_uniform(struct crush_bucket_uniform *b) { kfree(b->h.items); diff --git a/net/ceph/crush/hash.c b/net/ceph/crush/hash.c index fe79f6d2d0db..33792c0ea132 100644 --- a/net/ceph/crush/hash.c +++ b/net/ceph/crush/hash.c @@ -24,17 +24,6 @@ #define crush_hash_seed 1315423911 -static __u32 crush_hash32_rjenkins1(__u32 a) -{ - __u32 hash = crush_hash_seed ^ a; - __u32 b = a; - __u32 x = 231232; - __u32 y = 1232; - crush_hashmix(b, x, hash); - crush_hashmix(y, a, hash); - return hash; -} - static __u32 crush_hash32_rjenkins1_2(__u32 a, __u32 b) { __u32 hash = crush_hash_seed ^ a ^ b; @@ -73,34 +62,6 @@ static __u32 crush_hash32_rjenkins1_4(__u32 a, __u32 b, __u32 c, __u32 d) return hash; } -static __u32 crush_hash32_rjenkins1_5(__u32 a, __u32 b, __u32 c, __u32 d, - __u32 e) -{ - __u32 hash = crush_hash_seed ^ a ^ b ^ c ^ d ^ e; - __u32 x = 231232; - __u32 y = 1232; - crush_hashmix(a, b, hash); - crush_hashmix(c, d, hash); - crush_hashmix(e, x, hash); - crush_hashmix(y, a, hash); - crush_hashmix(b, x, hash); - crush_hashmix(y, c, hash); - crush_hashmix(d, x, hash); - crush_hashmix(y, e, hash); - return hash; -} - - -__u32 crush_hash32(int type, __u32 a) -{ - switch (type) { - case CRUSH_HASH_RJENKINS1: - return crush_hash32_rjenkins1(a); - default: - return 0; - } -} - __u32 crush_hash32_2(int type, __u32 a, __u32 b) { switch (type) { @@ -130,23 +91,3 @@ __u32 crush_hash32_4(int type, __u32 a, __u32 b, __u32 c, __u32 d) return 0; } } - -__u32 crush_hash32_5(int type, __u32 a, __u32 b, __u32 c, __u32 d, __u32 e) -{ - switch (type) { - case CRUSH_HASH_RJENKINS1: - return crush_hash32_rjenkins1_5(a, b, c, d, e); - default: - return 0; - } -} - -const char *crush_hash_name(int type) -{ - switch (type) { - case CRUSH_HASH_RJENKINS1: - return "rjenkins1"; - default: - return "unknown"; - } -}