+2020-01-03 Bruno Haible <bruno@clisp.org>
+
+ doc: Mention the 64-bit inode number problem.
+ * m4/largefile.m4 (AC_SYS_LARGEFILE): Mention that this macro fixes the
+ 64-bit inode number problem.
+ * doc/posix-functions/stat.texi: Mention that this module fixes the
+ 64-bit inode number problem.
+ * doc/posix-functions/lstat.texi: Likewise.
+ * doc/posix-functions/fstat.texi: Likewise.
+ * doc/posix-functions/readdir.texi: Add more details.
+ * doc/posix-functions/readdir_r.texi: Likewise.
+
2020-01-02 Bruno Haible <bruno@clisp.org>
wcrtomb: Add more tests.
report the size of files or block devices larger than 2 GB.
(Cf. @code{AC_SYS_LARGEFILE}.)
@item
+On Linux/x86 and Linux/x86_64, applications compiled in 32-bit mode cannot
+access files that happen to have a 64-bit inode number. This can occur with
+file systems such as XFS (typically on large disks) and NFS.
+(Cf. @code{AC_SYS_LARGEFILE}.)
+@item
On Solaris 11.4, when this function yields a timestamp with a
nonpositive @code{tv_sec} value, @code{tv_nsec} might be in the range
@minus{}1000000000..@minus{}1, representing a negative nanoseconds
correctly report the size of files or block devices larger than 2 GB.
(Cf. @code{AC_SYS_LARGEFILE}.)
@item
+On Linux/x86 and Linux/x86_64, applications compiled in 32-bit mode cannot
+access files that happen to have a 64-bit inode number. This can occur with
+file systems such as XFS (typically on large disks) and NFS.
+(Cf. @code{AC_SYS_LARGEFILE}.)
+@item
For symlinks, when the argument ends in a slash, some platforms don't
dereference the argument:
Solaris 9.
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on huge directories larger than 2 GB. Also, on platforms
where @code{ino_t} is a 32-bit type, this function may report inode numbers
-incorrectly. (Cf. @code{AC_SYS_LARGEFILE}.)
+incorrectly. This can occur with file systems such as XFS (typically on
+large disks) and NFS. (Cf. @code{AC_SYS_LARGEFILE}.)
@end itemize
Portability problems not fixed by Gnulib:
On platforms where @code{off_t} is a 32-bit type, this function may not
work correctly on huge directories larger than 2 GB. Also, on platforms
where @code{ino_t} is a 32-bit type, this function may report inode numbers
-incorrectly. The fix is to use the @code{AC_SYS_LARGEFILE} macro.
+incorrectly. This can occur with file systems such as XFS (typically on
+large disks) and NFS. The fix is to use the @code{AC_SYS_LARGEFILE} macro.
@end itemize
report the size of files or block devices larger than 2 GB.
(Cf. @code{AC_SYS_LARGEFILE}.)
@item
+On Linux/x86 and Linux/x86_64, applications compiled in 32-bit mode cannot
+access files that happen to have a 64-bit inode number. This can occur with
+file systems such as XFS (typically on large disks) and NFS.
+(Cf. @code{AC_SYS_LARGEFILE}.)
+@item
The @code{st_atime}, @code{st_ctime}, @code{st_mtime} fields are affected by
the current time zone and by the DST flag of the current time zone on some
platforms:
# Enable large files on systems where this is not the default.
+# Enable support for files on Linux file systems with 64-bit inode numbers.
# Copyright 1992-1996, 1998-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# one must use special compiler options to get large-file access to work.
# For more details about this brain damage please see:
# http://www.unix.org/version2/whatsnew/lfs20mar.html
+# Additionally, on Linux file systems with 64-bit inodes a file that happens
+# to have a 64-bit inode number cannot be accessed by 32-bit applications on
+# Linux x86/x86_64. This can occur with file systems such as XFS and NFS.
AC_DEFUN([AC_SYS_LARGEFILE],
[AC_ARG_ENABLE(largefile,
[ --disable-largefile omit support for large files])