aboutsummaryrefslogtreecommitdiff
path: root/include/linux/blockgroup_lock.h
diff options
context:
space:
mode:
authorEric Biggers2016-09-15 18:29:06 -0400
committerTheodore Ts'o2016-09-15 18:29:06 -0400
commit7c5f6b320b59cb4a674750bbb29a248b5bae7641 (patch)
treee0f784dd2147a25b89abe4adcce411e64d9859d6 /include/linux/blockgroup_lock.h
parent9e5ab85deb2c80f9707be39cd0a2c5f90c89dd97 (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.h22
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;