diff options
author | Eric Biggers <ebiggers@google.com> | 2016-09-15 18:29:06 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2016-09-15 18:29:06 -0400 |
commit | 7c5f6b320b59cb4a674750bbb29a248b5bae7641 (patch) | |
tree | e0f784dd2147a25b89abe4adcce411e64d9859d6 /include/linux/blockgroup_lock.h | |
parent | 9e5ab85deb2c80f9707be39cd0a2c5f90c89dd97 (diff) |
blockgroup_lock.h: simplify definition of NR_BG_LOCKS
We can use ilog2() to more easily produce the desired NR_BG_LOCKS. This
works because ilog2() is evaluated at compile-time when its argument is
a compile-time constant.
I did not change the chosen NR_BG_LOCKS values.
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
Diffstat (limited to 'include/linux/blockgroup_lock.h')
-rw-r--r-- | include/linux/blockgroup_lock.h | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/include/linux/blockgroup_lock.h b/include/linux/blockgroup_lock.h index 61b583d7519a..225bdb7daec7 100644 --- a/include/linux/blockgroup_lock.h +++ b/include/linux/blockgroup_lock.h @@ -10,28 +10,10 @@ #include <linux/cache.h> #ifdef CONFIG_SMP - -/* - * We want a power-of-two. Is there a better way than this? - */ - -#if NR_CPUS >= 32 -#define NR_BG_LOCKS 128 -#elif NR_CPUS >= 16 -#define NR_BG_LOCKS 64 -#elif NR_CPUS >= 8 -#define NR_BG_LOCKS 32 -#elif NR_CPUS >= 4 -#define NR_BG_LOCKS 16 -#elif NR_CPUS >= 2 -#define NR_BG_LOCKS 8 +#define NR_BG_LOCKS (4 << ilog2(NR_CPUS < 32 ? NR_CPUS : 32)) #else -#define NR_BG_LOCKS 4 -#endif - -#else /* CONFIG_SMP */ #define NR_BG_LOCKS 1 -#endif /* CONFIG_SMP */ +#endif struct bgl_lock { spinlock_t lock; |