| From b0cfe12c4d4b8b4ef335cdf4ddefcbdcd1b70d58 Mon Sep 17 00:00:00 2001 |
| From: David Sterba <dsterba@suse.com> |
| Date: Thu, 13 Jan 2022 14:47:08 +0100 |
| Subject: [PATCH] btrfs-progs: kerncompat: add local definition for alignment |
| macros |
| |
| There's still problem left with compilation on musl and kernel < 5.11, |
| because __ALIGN_KERNEL is not defined anymore: |
| |
| ../bin/ld: kernel-shared/volumes.o: in function `create_chunk': |
| volumes.c:(.text+0x17f8): undefined reference to `__ALIGN_KERNEL' |
| |
| Due to the entangled includes and unconditional definition of |
| __ALIGN_KERNEL, we can't use #ifdef in kerncompat.h to define it |
| eventually (as kerncompat.h is the first include). Instead add local |
| definitions of the macros and rename them to avoid name clashes. |
| |
| Pull-request: #433 |
| |
| Upstream-Status: Backport [https://github.com/kdave/btrfs-progs/commit/b0cfe12c4d4b8b4ef335cdf4ddefcbdcd1b70d58] |
| |
| Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> |
| --- |
| kerncompat.h | 9 ++++++++- |
| 1 file changed, 8 insertions(+), 1 deletion(-) |
| |
| diff --git a/kerncompat.h b/kerncompat.h |
| index 6ca1526e2..f0a6e196e 100644 |
| --- a/kerncompat.h |
| +++ b/kerncompat.h |
| @@ -359,7 +359,14 @@ do { \ |
| |
| /* Alignment check */ |
| #define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0) |
| -#define ALIGN(x, a) __ALIGN_KERNEL((x), (a)) |
| + |
| +/* |
| + * Alignment, copied and renamed from /usr/include/linux/const.h to work around |
| + * issues caused by moving the definition in 5.12 |
| + */ |
| +#define __ALIGN_KERNEL__(x, a) __ALIGN_KERNEL_MASK__(x, (typeof(x))(a) - 1) |
| +#define __ALIGN_KERNEL_MASK__(x, mask) (((x) + (mask)) & ~(mask)) |
| +#define ALIGN(x, a) __ALIGN_KERNEL__((x), (a)) |
| |
| static inline int is_power_of_2(unsigned long n) |
| { |