[PATCH] inode01: Use uint64_t to prevent inode truncation on 32-bit
Wake Liu via ltp <[email protected]>
| Newsgroups | gmane.linux.ltp |
|---|---|
| Message-ID | <[email protected]> |
On 32-bit architectures, ino_t is typically 32-bit, whereas the kernel and struct stat may support 64-bit inode numbers (e.g. st_ino is unsigned long long). The conversion of inode01 to the new API introduced tracking of inodes in an array of struct inode_info, which used ino_t. This causes 64-bit inode numbers to be truncated to 32-bit when running as a 32-bit binary on a filesystem that uses 64-bit inodes. This truncation can lead to false duplicate inode reports and test failures. Fix this by using uint64_t for tracking inode numbers throughout the test. Signed-off-by: Wake Liu <[email protected]> --- testcases/kernel/fs/inode/inode01.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testcases/kernel/fs/inode/inode01.c b/testcases/kernel/fs/inode/inode01.c index 2816ad61a..d41ff2c62 100644 --- a/testcases/kernel/fs/inode/inode01.c +++ b/testcases/kernel/fs/inode/inode01.c @@ -36,7 +36,7 @@ static struct tcase { }; struct inode_info { - ino_t ino; + uint64_t ino; char path[PATH_MAX]; }; @@ -74,7 +74,7 @@ static void record_inode(struct inode_info *inodes, unsigned int idx, snprintf(inodes[idx].path, sizeof(inodes[idx].path), "%s", path); } -static ino_t verify_file(const struct tcase *tc, const char *path) +static uint64_t verify_file(const struct tcase *tc, const char *path) { char buf[PATH_MAX]; char extra; @@ -128,7 +128,7 @@ static void verify_tree(const struct tcase *tc, const char *parent, for (i = 0; i < tc->fanout; i++, create_file = !create_file) { char path[PATH_MAX]; unsigned int my_id; - ino_t ino; + uint64_t ino; snprintf(path, sizeof(path), "%s/%08u", parent, ++*id); -- 2.55.0.654.g21b8a5bc05-goog -- Mailing list info: https://lists.linux.it/listinfo/ltp