[PATCH v2] 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]> --- v1 -> v2: - Also change record_inode() parameter type to uint64_t to prevent truncation before assignment. testcases/kernel/fs/inode/inode01.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/testcases/kernel/fs/inode/inode01.c b/testcases/kernel/fs/inode/inode01.c index 2816ad61a..50b5311a4 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]; }; @@ -68,13 +68,13 @@ static void create_tree(const struct tcase *tc, const char *parent, } static void record_inode(struct inode_info *inodes, unsigned int idx, - const char *path, ino_t ino) + const char *path, uint64_t ino) { inodes[idx].ino = ino; 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