Details
-
Improvement
-
Resolution: Fixed
-
Minor
-
Lustre 2.7.0
-
arm64
-
9223372036854775807
Description
Expand lustre to support the ARM64 platform.
A first patch will be submitted shortly to enable basic compilation:
- the architecture is reported as aarch64 so add that support to lustre-build-linux.m4,
- for the Red Hat/Fedora packaging, strip the aarch64 suffix for the required kernel,
- add definitions for lstat_t, lstat_f, fstat_f and fstatat_f for aarch64 architecture in lustre/include/lustre/lustre_user.h.
Moreover, the SYS_chown syscall is not available on arm64 (because as __ARCH_WANT_SYSCALL_NO_AT is not defined, __NR_chown is not defined in /usr/include/asm-generic/unistd.h). So the following call in lustre/utils/liblustreapi.c must be modified:
/* libc chown() will do extra check, and if the real owner is
- the same as the ones to set, it won't fall into kernel, so
- invoke syscall directly. */
rc = syscall(SYS_chown, path, -1, -1);
This leaves several options:
- the code dates back to 2007, glibc has evolved since then and it can be replaced with `chown()`.
- replace it with `syscall(SYS_openat, ...)` and `syscall(SYS_fchownat, ...)`.
- add `#ifdef _aarch64_` and a call to `chown()`.
Does someone more qualified have an opinion?