In some distributions, __u64 is already defined in system header files, causing compilation errors when building xfstest. # make [CC] ext4_resize ext4_resize.c:17:28: error: conflicting types for '__u64' typedef unsigned long long __u64; ^~~~~ In file included from /usr/include/asm/types.h:26:0, from /usr/include/linux/types.h:5, from /usr/include/linux/mount.h:4, from /usr/include/sys/mount.h:32, from ext4_resize.c:15: /usr/include/asm-generic/int-l64.h:30:23: note: previous declaration of '__u64' was here typedef unsigned long __u64; ^~~~~ To address this issue, replace the custom definition of __u64 with the standard uint64_t type from <stdint.h>. uint64_t is part of the C99 standard, offering a standardised approach for representing unsigned 64-bit integers. This modification enhances code consistency and ensures compatibility with standard types. Tested on various distributions on Power architecture, by successfully compiling xfstest. Additionally, verified the compatibility by running ext4/033 and ext4/056 tests, both of which use ext4_resize and observed successful test execution. # make [CC] detached_mounts_propagation [CC] ext4_resize [CC] t_readdir_3 Signed-off-by: Disha Goel <disgoel@xxxxxxxxxxxxx> --- src/ext4_resize.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/ext4_resize.c b/src/ext4_resize.c index 78b66432..6e60ee5b 100644 --- a/src/ext4_resize.c +++ b/src/ext4_resize.c @@ -14,10 +14,8 @@ #include <sys/ioctl.h> #include <sys/mount.h> -typedef unsigned long long __u64; - #ifndef EXT4_IOC_RESIZE_FS -#define EXT4_IOC_RESIZE_FS _IOW('f', 16, __u64) +#define EXT4_IOC_RESIZE_FS _IOW('f', 16, uint64_t) #endif #define pr_error(fmt, ...) do { \ @@ -31,7 +29,7 @@ static void usage(void) int main(int argc, char **argv) { - __u64 new_size; + uint64_t new_size; int error, fd; char *mnt_dir = NULL, *tmp = NULL; -- 2.39.1