|| ||David Howells <email@example.com>|
|| ||firstname.lastname@example.org, email@example.com|
|| ||[PATCH 0/4] Use 64-bit inode numbers internally in the kernel|
|| ||Mon, 14 Aug 2006 22:15:04 +0100|
|| ||firstname.lastname@example.org, email@example.com#,
These patches make the kernel use 64-bit inode numbers internally, even on a
32-bit system. They are required because some filesystems have intrinsic
64-bit inode numbers: NFS and XFS for example. The 64-bit inode numbers are
then propagated to userspace automatically where the arch supports it.
Problems have been seen with userspace (eg: ld.so) using the 64-bit inode
number returned by stat64() or getdents64() to differentiate files, and failing
because the 64-bit inode number space was compressed to 32-bits, and so
There are four patches:
(1) Supply __udivdi3() and __umoddi3() so that the compiler can do 64-bit
division and modulus. __udivmoddi4() is also supplied as the other two
are wrappers around that.
(2) Make __kernel_ino_t consistently typedef'd to "unsigned long long" on all
Where ino_t has been used in userspace facing structures (such as struct
stat), it has been replaced with whatever ino_t used to be defined as on
struct inode::i_ino and struct kstat::ino are changed to ino_t type.
(3) Fix print format warnings in general code due to the change in type of
i_ino. These should now all carry an "ll" modifier.
(4) As for (3), but fix the CacheFiles code.