]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
Fix building on musl
authorYuxuan Shui <yshuiv7@gmail.com>
Sun, 3 May 2020 18:21:17 +0000 (19:21 +0100)
committerYuxuan Shui <yshuiv7@gmail.com>
Tue, 5 May 2020 09:29:31 +0000 (10:29 +0100)
* Add missing linux/stddef.h includes
* Explicitly cast PAGE_SIZE to size_t. PAGE_SIZE is defined without UL
  suffix in musl
* Musl doesn't define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP, so
  initialize the mutexes with pthread_once.

include/linux/slab.h
libbcachefs/bcachefs.h
libbcachefs/bcachefs_format.h
libbcachefs/siphash.c
linux/preempt.c

index 5a9e7afd872c2acde17119ac06ee89e93ae37222..d77b7683fb543e5502b189164f0607b5b80ba24a 100644 (file)
@@ -22,7 +22,7 @@ static inline void *kmalloc(size_t size, gfp_t flags)
 
        p = size
            ? aligned_alloc(min(rounddown_pow_of_two(size),
-                               PAGE_SIZE), size)
+                               (size_t)PAGE_SIZE), size)
            : malloc(0);
        if (p && (flags & __GFP_ZERO))
                memset(p, 0, size);
index fa9593764f0c01d52505c13e5a2d68e7dd8ab6ef..d9c09b4feac48b50f02a26987422d3332a58ce54 100644 (file)
 #undef pr_fmt
 #define pr_fmt(fmt) "bcachefs: %s() " fmt "\n", __func__
 
+#include <linux/stddef.h>
 #include <linux/bug.h>
 #include <linux/bio.h>
 #include <linux/closure.h>
index 616863ef77d4f51a4c8339678710cb92668ed7cd..0772c5864d88c21ffc09ac1a5f24c1320f00a015 100644 (file)
@@ -72,6 +72,7 @@
  * inode number, 64 bit offset, 96 bit version field, etc.) for negligible cost.
  */
 
+#include <linux/stddef.h>
 #include <asm/types.h>
 #include <asm/byteorder.h>
 #include <linux/kernel.h>
index c062edb3fbc24e6fd5889d1ac138b3e2c10ab9db..4565a843c1a6128ef86f4bd744a9015f152b4644 100644 (file)
@@ -44,6 +44,7 @@
  * https://131002.net/siphash/
  */
 
+#include <linux/stddef.h>
 #include <asm/byteorder.h>
 #include <asm/unaligned.h>
 #include <linux/bitops.h>
index aa092c1d0afc09d70ba5a3c76e4c43be111ff62e..72eceed32bcefa187e931c371c888dfb91fd9b7a 100644 (file)
  * correct to instead guarantee mutual exclusion for the critical sections.
  */
 
-static pthread_mutex_t preempt_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+static pthread_mutex_t preempt_lock;
+
+__attribute__((constructor))
+static void preempt_init(void) {
+       pthread_mutexattr_t attr;
+       pthread_mutexattr_init(&attr);
+       pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+       pthread_mutex_init(&preempt_lock, &attr);
+       pthread_mutexattr_destroy(&attr);
+}
 
 void preempt_disable(void)
 {