* [LTP] [PATCH v1] tst_filesystems01.c: Add test for .filesystems @ 2025-05-29 10:51 Wei Gao via ltp 2025-09-16 11:02 ` Petr Vorel 2025-09-24 8:42 ` [LTP] [PATCH v2] " Wei Gao via ltp 0 siblings, 2 replies; 33+ messages in thread From: Wei Gao via ltp @ 2025-05-29 10:51 UTC (permalink / raw) To: ltp Fixes: https://github.com/linux-test-project/ltp/issues/1243 Signed-off-by: Wei Gao <wegao@suse.com> --- lib/newlib_tests/tst_filesystems01.c | 118 +++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 lib/newlib_tests/tst_filesystems01.c diff --git a/lib/newlib_tests/tst_filesystems01.c b/lib/newlib_tests/tst_filesystems01.c new file mode 100644 index 000000000..96f4b2d93 --- /dev/null +++ b/lib/newlib_tests/tst_filesystems01.c @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2025 Wei Gao <wegao@suse.com> + */ + +#include "tst_test.h" +#include "tst_safe_stdio.h" + +#define MOUNT_POINT "mount_test_filesystems" + +static int check_inode_size(unsigned int size) +{ + char path[PATH_MAX]; + char line[PATH_MAX]; + FILE *tune2fs; + char str_size[NAME_MAX]; + + snprintf(str_size, sizeof(str_size), "%u", size); + snprintf(path, sizeof(path), "tune2fs -l %s 2>&1", tst_device->dev); + tune2fs = SAFE_POPEN(path, "r"); + if (tune2fs == NULL) + tst_brk(TBROK, "Can not popen %s", path); + + while (fgets(line, PATH_MAX, tune2fs)) { + if (*line && strstr(line, "Inode size:") && strstr(line, str_size)) { + tst_res(TPASS, "check inode size pass"); + return 0; + } + } + + pclose(tune2fs); + tst_res(TFAIL, "check inode size failed"); + return -1; +} + +static int check_mnt_data(char *opt) +{ + FILE *fp; + char line[PATH_MAX]; + + fp = SAFE_FOPEN("/proc/mounts", "r"); + if (fp == NULL) + tst_brk(TBROK, "Can not open /proc/mounts"); + while (fgets(line, PATH_MAX, fp)) { + if (*line && strstr(line, tst_device->dev) && strstr(line, opt)) { + tst_res(TPASS, "check mnt data pass"); + return 0; + } + } + SAFE_FCLOSE(fp); + tst_res(TFAIL, "check mnt data failed"); + return -1; +} + +static int check_mkfs_size_opt(unsigned int size) +{ + char path[PATH_MAX]; + char line[PATH_MAX]; + FILE *dumpe2fs; + char str_size[NAME_MAX]; + + snprintf(str_size, sizeof(str_size), "%u", size); + snprintf(path, sizeof(path), "dumpe2fs -h %s 2>&1", tst_device->dev); + dumpe2fs = SAFE_POPEN(path, "r"); + if (dumpe2fs == NULL) + tst_brk(TBROK, "Can not popen %s", path); + + while (fgets(line, PATH_MAX, dumpe2fs)) { + if (*line && strstr(line, "Block count:") && strstr(line, str_size)) { + tst_res(TPASS, "check mkfs size opt pass"); + return 0; + } + } + + pclose(dumpe2fs); + tst_res(TFAIL, "check mkfs size opt failed"); + return -1; +} + +static void do_test(void) +{ + long fs_type; + + fs_type = tst_fs_type(MOUNT_POINT); + + if (fs_type == TST_EXT234_MAGIC) { + check_inode_size(128); + check_mkfs_size_opt(10240); + } + + if (fs_type == TST_XFS_MAGIC) + check_mnt_data("usrquota"); +} + +static struct tst_test test = { + .test_all = do_test, + .needs_root = 1, + .mntpoint = MOUNT_POINT, + .mount_device = 1, + .needs_cmds = (const char *[]) { + "tune2fs", + "dumpe2fs", + NULL + }, + .filesystems = (struct tst_fs []) { + { + .type = "ext3", + .mkfs_opts = (const char *const []){"-I", "128", NULL}, + .mkfs_size_opt = "10240", + }, + { + .type = "xfs", + .mnt_data = "usrquota", + }, + {} + }, + +}; -- 2.49.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v1] tst_filesystems01.c: Add test for .filesystems 2025-05-29 10:51 [LTP] [PATCH v1] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp @ 2025-09-16 11:02 ` Petr Vorel 2025-09-24 8:42 ` [LTP] [PATCH v2] " Wei Gao via ltp 1 sibling, 0 replies; 33+ messages in thread From: Petr Vorel @ 2025-09-16 11:02 UTC (permalink / raw) To: Wei Gao; +Cc: ltp Hi Wei, Cyril, Cyril, single note below can wait after the release. Also, please have look if this fulfils your idea about testing the feature. > Fixes: https://github.com/linux-test-project/ltp/issues/1243 > Signed-off-by: Wei Gao <wegao@suse.com> > --- > lib/newlib_tests/tst_filesystems01.c | 118 +++++++++++++++++++++++++++ > 1 file changed, 118 insertions(+) > create mode 100644 lib/newlib_tests/tst_filesystems01.c The test is running fine on github, please add it to lib/newlib_tests/runtest.sh. +++ lib/newlib_tests/runtest.sh @@ -24,6 +24,7 @@ tst_checkpoint_wait_timeout tst_checkpoint_wake_timeout tst_device tst_expiration_timer +tst_filesystems01 tst_fuzzy_sync0[1-3] tst_needs_cmds0[1-36-8] tst_res_hexd ... > + snprintf(str_size, sizeof(str_size), "%u", size); > + snprintf(path, sizeof(path), "tune2fs -l %s 2>&1", tst_device->dev); > + tune2fs = SAFE_POPEN(path, "r"); > + if (tune2fs == NULL) > + tst_brk(TBROK, "Can not popen %s", path); The point of SAFE_* functions/macros is to avoid having to check in the tests :). Please remove these 2 lines. > + while (fgets(line, PATH_MAX, tune2fs)) { > + if (*line && strstr(line, "Inode size:") && strstr(line, str_size)) { Common patter for fgets() is to check for != NULL, then you don't need "*line &&": while (fgets(line, PATH_MAX, tune2fs) != NULL) { if (strstr(line, "Inode size:") && strstr(line, str_size)) { > + tst_res(TPASS, "check inode size pass"); > + return 0; > + } > + } > + > + pclose(tune2fs); > + tst_res(TFAIL, "check inode size failed"); > + return -1; > +} > + > +static int check_mnt_data(char *opt) > +{ > + FILE *fp; > + char line[PATH_MAX]; > + > + fp = SAFE_FOPEN("/proc/mounts", "r"); > + if (fp == NULL) > + tst_brk(TBROK, "Can not open /proc/mounts"); Also here. > + while (fgets(line, PATH_MAX, fp)) { > + if (*line && strstr(line, tst_device->dev) && strstr(line, opt)) { Also here. > + tst_res(TPASS, "check mnt data pass"); > + return 0; > + } > + } > + SAFE_FCLOSE(fp); > + tst_res(TFAIL, "check mnt data failed"); > + return -1; > +} > + > +static int check_mkfs_size_opt(unsigned int size) > +{ > + char path[PATH_MAX]; > + char line[PATH_MAX]; > + FILE *dumpe2fs; > + char str_size[NAME_MAX]; > + > + snprintf(str_size, sizeof(str_size), "%u", size); > + snprintf(path, sizeof(path), "dumpe2fs -h %s 2>&1", tst_device->dev); > + dumpe2fs = SAFE_POPEN(path, "r"); > + if (dumpe2fs == NULL) > + tst_brk(TBROK, "Can not popen %s", path); And here. > + > + while (fgets(line, PATH_MAX, dumpe2fs)) { > + if (*line && strstr(line, "Block count:") && strstr(line, str_size)) { And here. > + tst_res(TPASS, "check mkfs size opt pass"); > + return 0; > + } > + } > + > + pclose(dumpe2fs); > + tst_res(TFAIL, "check mkfs size opt failed"); > + return -1; > +} > + > +static void do_test(void) > +{ > + long fs_type; > + > + fs_type = tst_fs_type(MOUNT_POINT); > + > + if (fs_type == TST_EXT234_MAGIC) { > + check_inode_size(128); check_inode_size() and the other 2 test functions return int but you don't use the return value. Either use it or change return type to void. > + check_mkfs_size_opt(10240); > + } > + > + if (fs_type == TST_XFS_MAGIC) > + check_mnt_data("usrquota"); While this works, it expect that nobody changes .filesystems below. @Cyril: wouldn't be useful if the test itself had it's struct tst_fs member from filesystems[i] available? Static variable, either pointer to the member or instance of i from run_tcases_per_fs()? Because we always expect filesystems (.type) is unique in .filesystems. But in the future we might have test which uses several items in .filesystems with a different data but an unique filesystem (not needed so far). Kind regards, Petr > +} > + > +static struct tst_test test = { > + .test_all = do_test, > + .needs_root = 1, > + .mntpoint = MOUNT_POINT, > + .mount_device = 1, > + .needs_cmds = (const char *[]) { > + "tune2fs", > + "dumpe2fs", > + NULL > + }, > + .filesystems = (struct tst_fs []) { > + { > + .type = "ext3", > + .mkfs_opts = (const char *const []){"-I", "128", NULL}, > + .mkfs_size_opt = "10240", > + }, > + { > + .type = "xfs", > + .mnt_data = "usrquota", > + }, > + {} > + }, > + > +}; -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* [LTP] [PATCH v2] tst_filesystems01.c: Add test for .filesystems 2025-05-29 10:51 [LTP] [PATCH v1] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 2025-09-16 11:02 ` Petr Vorel @ 2025-09-24 8:42 ` Wei Gao via ltp 2025-10-30 20:17 ` Petr Vorel 2025-11-01 1:20 ` [LTP] [PATCH v3 0/2] " Wei Gao via ltp 1 sibling, 2 replies; 33+ messages in thread From: Wei Gao via ltp @ 2025-09-24 8:42 UTC (permalink / raw) To: ltp Fixes: https://github.com/linux-test-project/ltp/issues/1243 Signed-off-by: Wei Gao <wegao@suse.com> --- lib/newlib_tests/runtest.sh | 1 + lib/newlib_tests/tst_filesystems01.c | 104 +++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 lib/newlib_tests/tst_filesystems01.c diff --git a/lib/newlib_tests/runtest.sh b/lib/newlib_tests/runtest.sh index d87751c2f..71808ef8b 100755 --- a/lib/newlib_tests/runtest.sh +++ b/lib/newlib_tests/runtest.sh @@ -24,6 +24,7 @@ tst_checkpoint_wait_timeout tst_checkpoint_wake_timeout tst_device tst_expiration_timer +tst_filesystems01 tst_fuzzy_sync0[1-3] tst_needs_cmds0[1-36-8] tst_res_hexd diff --git a/lib/newlib_tests/tst_filesystems01.c b/lib/newlib_tests/tst_filesystems01.c new file mode 100644 index 000000000..4eca0af0e --- /dev/null +++ b/lib/newlib_tests/tst_filesystems01.c @@ -0,0 +1,104 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2025 Wei Gao <wegao@suse.com> + */ + +#include "tst_test.h" +#include "tst_safe_stdio.h" + +#define MOUNT_POINT "mount_test_filesystems" + +static int check_inode_size(unsigned int size) +{ + char path[PATH_MAX]; + char line[PATH_MAX]; + FILE *tune2fs; + char str_size[NAME_MAX]; + + snprintf(str_size, sizeof(str_size), "%u", size); + snprintf(path, sizeof(path), "tune2fs -l %s 2>&1", tst_device->dev); + tune2fs = SAFE_POPEN(path, "r"); + + while (fgets(line, PATH_MAX, tune2fs) != NULL) { + if (strstr(line, "Inode size:") && strstr(line, str_size)) + return 0; + } + + pclose(tune2fs); + return -1; +} + +static int check_mnt_data(char *opt) +{ + FILE *fp; + char line[PATH_MAX]; + + fp = SAFE_FOPEN("/proc/mounts", "r"); + + while (fgets(line, PATH_MAX, fp) != NULL) { + if (strstr(line, tst_device->dev) && strstr(line, opt)) + return 0; + } + SAFE_FCLOSE(fp); + return -1; +} + +static int check_mkfs_size_opt(unsigned int size) +{ + char path[PATH_MAX]; + char line[PATH_MAX]; + FILE *dumpe2fs; + char str_size[NAME_MAX]; + + snprintf(str_size, sizeof(str_size), "%u", size); + snprintf(path, sizeof(path), "dumpe2fs -h %s 2>&1", tst_device->dev); + dumpe2fs = SAFE_POPEN(path, "r"); + + while (fgets(line, PATH_MAX, dumpe2fs) != NULL) { + if (strstr(line, "Block count:") && strstr(line, str_size)) + return 0; + } + + pclose(dumpe2fs); + return -1; +} + +static void do_test(void) +{ + long fs_type; + + fs_type = tst_fs_type(MOUNT_POINT); + + if (fs_type == TST_EXT234_MAGIC) { + TST_EXP_PASS((check_inode_size(128))); + TST_EXP_PASS((check_mkfs_size_opt(10240))); + } + + if (fs_type == TST_XFS_MAGIC) + TST_EXP_PASS((check_mnt_data("usrquota"))); +} + +static struct tst_test test = { + .test_all = do_test, + .needs_root = 1, + .mntpoint = MOUNT_POINT, + .mount_device = 1, + .needs_cmds = (const char *[]) { + "tune2fs", + "dumpe2fs", + NULL + }, + .filesystems = (struct tst_fs []) { + { + .type = "ext3", + .mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}, + .mkfs_size_opt = "10240", + }, + { + .type = "xfs", + .mnt_data = "usrquota", + }, + {} + }, + +}; -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v2] tst_filesystems01.c: Add test for .filesystems 2025-09-24 8:42 ` [LTP] [PATCH v2] " Wei Gao via ltp @ 2025-10-30 20:17 ` Petr Vorel 2025-10-31 6:33 ` Wei Gao via ltp 2025-11-01 1:20 ` [LTP] [PATCH v3 0/2] " Wei Gao via ltp 1 sibling, 1 reply; 33+ messages in thread From: Petr Vorel @ 2025-10-30 20:17 UTC (permalink / raw) To: Wei Gao; +Cc: ltp Hi Wei, ... > + .needs_cmds = (const char *[]) { > + "tune2fs", > + "dumpe2fs", If you don't add packages required in these 2 binaries into scripts in ci/ it will not be tested in GitHub Actions. See https://github.com/linux-test-project/ltp/actions/runs/17971580970/job/51115261638: 2025-09-24T09:00:56.9304198Z tst_cmd.c:268: TCONF: Couldn't find 'tune2fs' in $PATH Alpine: e2fsprogs-extra Debian, openSUSE, Fedora (hopefully): e2fsprogs Kind regards, Petr -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v2] tst_filesystems01.c: Add test for .filesystems 2025-10-30 20:17 ` Petr Vorel @ 2025-10-31 6:33 ` Wei Gao via ltp 2025-10-31 9:13 ` Petr Vorel 0 siblings, 1 reply; 33+ messages in thread From: Wei Gao via ltp @ 2025-10-31 6:33 UTC (permalink / raw) To: Petr Vorel; +Cc: ltp On Thu, Oct 30, 2025 at 09:17:34PM +0100, Petr Vorel wrote: > Hi Wei, > > ... > > + .needs_cmds = (const char *[]) { > > + "tune2fs", > > + "dumpe2fs", > If you don't add packages required in these 2 binaries into scripts in ci/ it > will not be tested in GitHub Actions. > > See > https://github.com/linux-test-project/ltp/actions/runs/17971580970/job/51115261638: > 2025-09-24T09:00:56.9304198Z tst_cmd.c:268: TCONF: Couldn't find 'tune2fs' in $PATH > > Alpine: e2fsprogs-extra > Debian, openSUSE, Fedora (hopefully): e2fsprogs when i add following diff another CI error triggered on alpine, it seems /dev/not mounted. further check. diff --git a/ci/alpine.sh b/ci/alpine.sh index f3a1bf528..254f4aaec 100755 --- a/ci/alpine.sh +++ b/ci/alpine.sh @@ -25,7 +25,6 @@ apk add \ musl-dev \ numactl-dev \ openssl-dev \ - e2fsprogs-extra \ pkgconfig https://github.com/coolgw/ltp/actions/runs/18960845023/job/54148138737 2025-10-31T02:50:14.5257746Z runtest TINFO: * shell/tst_format_device.sh 2025-10-31T02:50:14.5260052Z tst_format_device 1 TINFO: Running: tst_format_device.sh 2025-10-31T02:50:14.5268691Z tst_format_device 1 TINFO: Tested kernel: Linux 0ba9f024d6b7 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 Linux 2025-10-31T02:50:14.5329045Z tst_format_device 1 TINFO: Using /tmp/LTP_tst_format_device.XXXXOajpgN as tmpdir (UNKNOWN filesystem) 2025-10-31T02:50:14.5352954Z tst_device.c:98: TINFO: Found free device 0 '/dev/loop0' 2025-10-31T02:50:14.5491591Z tst_format_device 1 TINFO: Formatting ext2 with opts='-b 1024 /dev/loop0 5m' 2025-10-31T02:50:14.5555250Z tst_format_device 1 TINFO: timeout per run is 0h 5m 0s 2025-10-31T02:50:14.5571366Z tst_format_device 1 TPASS: device formatted 2025-10-31T02:50:14.5594507Z df: /dev/loop0: can't find mount point << 2025-10-31T02:50:14.5598211Z tst_format_device 2 TFAIL: df /dev/loop0 | grep -q /dev failed unexpectedly 2025-10-31T02:50:14.6127085Z tst_format_device 3 TINFO: AppArmor enabled, this may affect test results 2025-10-31T02:50:14.6128036Z tst_format_device 3 TINFO: it can be disabled with TST_DISABLE_APPARMOR=1 (requires super/root) 2025-10-31T02:50:14.6128824Z tst_format_device 3 TINFO: loaded AppArmor profiles: none > > Kind regards, > Petr -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v2] tst_filesystems01.c: Add test for .filesystems 2025-10-31 6:33 ` Wei Gao via ltp @ 2025-10-31 9:13 ` Petr Vorel 0 siblings, 0 replies; 33+ messages in thread From: Petr Vorel @ 2025-10-31 9:13 UTC (permalink / raw) To: Wei Gao; +Cc: ltp ... > > Alpine: e2fsprogs-extra > > Debian, openSUSE, Fedora (hopefully): e2fsprogs > when i add following diff another CI error triggered on alpine, it > seems /dev/not mounted. > further check. > diff --git a/ci/alpine.sh b/ci/alpine.sh > index f3a1bf528..254f4aaec 100755 > --- a/ci/alpine.sh > +++ b/ci/alpine.sh > @@ -25,7 +25,6 @@ apk add \ > musl-dev \ > numactl-dev \ > openssl-dev \ > - e2fsprogs-extra \ > pkgconfig > https://github.com/coolgw/ltp/actions/runs/18960845023/job/54148138737 > 2025-10-31T02:50:14.5257746Z runtest TINFO: * shell/tst_format_device.sh > 2025-10-31T02:50:14.5260052Z tst_format_device 1 TINFO: Running: tst_format_device.sh > 2025-10-31T02:50:14.5268691Z tst_format_device 1 TINFO: Tested kernel: Linux 0ba9f024d6b7 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 Linux > 2025-10-31T02:50:14.5329045Z tst_format_device 1 TINFO: Using /tmp/LTP_tst_format_device.XXXXOajpgN as tmpdir (UNKNOWN filesystem) > 2025-10-31T02:50:14.5352954Z tst_device.c:98: TINFO: Found free device 0 '/dev/loop0' > 2025-10-31T02:50:14.5491591Z tst_format_device 1 TINFO: Formatting ext2 with opts='-b 1024 /dev/loop0 5m' > 2025-10-31T02:50:14.5555250Z tst_format_device 1 TINFO: timeout per run is 0h 5m 0s > 2025-10-31T02:50:14.5571366Z tst_format_device 1 TPASS: device formatted > 2025-10-31T02:50:14.5594507Z df: /dev/loop0: can't find mount point << > 2025-10-31T02:50:14.5598211Z tst_format_device 2 TFAIL: df /dev/loop0 | grep -q /dev failed unexpectedly > 2025-10-31T02:50:14.6127085Z tst_format_device 3 TINFO: AppArmor enabled, this may affect test results > 2025-10-31T02:50:14.6128036Z tst_format_device 3 TINFO: it can be disabled with TST_DISABLE_APPARMOR=1 (requires super/root) > 2025-10-31T02:50:14.6128824Z tst_format_device 3 TINFO: loaded AppArmor profiles: none Strange, because previous shell/tst_mount_device.sh works: runtest TINFO: * shell/tst_mount_device.sh tst_mount_device 1 TINFO: Running: tst_mount_device.sh tst_mount_device 1 TINFO: Tested kernel: Linux 0ba9f024d6b7 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 Linux tst_mount_device 1 TINFO: Using /tmp/LTP_tst_mount_device.XXXXmbKhac as tmpdir (UNKNOWN filesystem) tst_device.c:98: TINFO: Found free device 0 '/dev/loop0' tst_mount_device 1 TINFO: Formatting ext4 with opts='/dev/loop0' tst_mount_device 1 TINFO: Mounting device: mount -t ext4 /dev/loop0 /tmp/LTP_tst_mount_device.XXXXmbKhac/mntpoint tst_mount_device 1 TINFO: timeout per run is 0h 5m 0s tst_mount_device 1 TPASS: cd /tmp/LTP_tst_mount_device.XXXXmbKhac/mntpoint passed as expected Kind regards, Petr > > Kind regards, > > Petr -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* [LTP] [PATCH v3 0/2] tst_filesystems01.c: Add test for .filesystems 2025-09-24 8:42 ` [LTP] [PATCH v2] " Wei Gao via ltp 2025-10-30 20:17 ` Petr Vorel @ 2025-11-01 1:20 ` Wei Gao via ltp 2025-11-01 1:20 ` [LTP] [PATCH v3 1/2] " Wei Gao via ltp ` (2 more replies) 1 sibling, 3 replies; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-01 1:20 UTC (permalink / raw) To: ltp v2->v3: add e2fsprogs for CI check Wei Gao (2): tst_filesystems01.c: Add test for .filesystems tst_format_device.sh: Add e2fsprogs package for CI test ci/alpine.sh | 1 + ci/debian.sh | 1 + ci/fedora.sh | 1 + ci/tumbleweed.sh | 1 + lib/newlib_tests/runtest.sh | 1 + lib/newlib_tests/shell/tst_format_device.sh | 1 + lib/newlib_tests/tst_filesystems01.c | 104 ++++++++++++++++++++ 7 files changed, 110 insertions(+) create mode 100644 lib/newlib_tests/tst_filesystems01.c -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* [LTP] [PATCH v3 1/2] tst_filesystems01.c: Add test for .filesystems 2025-11-01 1:20 ` [LTP] [PATCH v3 0/2] " Wei Gao via ltp @ 2025-11-01 1:20 ` Wei Gao via ltp 2025-11-11 12:06 ` Petr Vorel 2025-11-01 1:20 ` [LTP] [PATCH v3 2/2] tst_format_device.sh: Add e2fsprogs package for CI test Wei Gao via ltp 2025-11-13 1:52 ` [LTP] [PATCH v4 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 2 siblings, 1 reply; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-01 1:20 UTC (permalink / raw) To: ltp Fixes: https://github.com/linux-test-project/ltp/issues/1243 Signed-off-by: Wei Gao <wegao@suse.com> --- lib/newlib_tests/runtest.sh | 1 + lib/newlib_tests/tst_filesystems01.c | 104 +++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 lib/newlib_tests/tst_filesystems01.c diff --git a/lib/newlib_tests/runtest.sh b/lib/newlib_tests/runtest.sh index d87751c2f..71808ef8b 100755 --- a/lib/newlib_tests/runtest.sh +++ b/lib/newlib_tests/runtest.sh @@ -24,6 +24,7 @@ tst_checkpoint_wait_timeout tst_checkpoint_wake_timeout tst_device tst_expiration_timer +tst_filesystems01 tst_fuzzy_sync0[1-3] tst_needs_cmds0[1-36-8] tst_res_hexd diff --git a/lib/newlib_tests/tst_filesystems01.c b/lib/newlib_tests/tst_filesystems01.c new file mode 100644 index 000000000..4eca0af0e --- /dev/null +++ b/lib/newlib_tests/tst_filesystems01.c @@ -0,0 +1,104 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2025 Wei Gao <wegao@suse.com> + */ + +#include "tst_test.h" +#include "tst_safe_stdio.h" + +#define MOUNT_POINT "mount_test_filesystems" + +static int check_inode_size(unsigned int size) +{ + char path[PATH_MAX]; + char line[PATH_MAX]; + FILE *tune2fs; + char str_size[NAME_MAX]; + + snprintf(str_size, sizeof(str_size), "%u", size); + snprintf(path, sizeof(path), "tune2fs -l %s 2>&1", tst_device->dev); + tune2fs = SAFE_POPEN(path, "r"); + + while (fgets(line, PATH_MAX, tune2fs) != NULL) { + if (strstr(line, "Inode size:") && strstr(line, str_size)) + return 0; + } + + pclose(tune2fs); + return -1; +} + +static int check_mnt_data(char *opt) +{ + FILE *fp; + char line[PATH_MAX]; + + fp = SAFE_FOPEN("/proc/mounts", "r"); + + while (fgets(line, PATH_MAX, fp) != NULL) { + if (strstr(line, tst_device->dev) && strstr(line, opt)) + return 0; + } + SAFE_FCLOSE(fp); + return -1; +} + +static int check_mkfs_size_opt(unsigned int size) +{ + char path[PATH_MAX]; + char line[PATH_MAX]; + FILE *dumpe2fs; + char str_size[NAME_MAX]; + + snprintf(str_size, sizeof(str_size), "%u", size); + snprintf(path, sizeof(path), "dumpe2fs -h %s 2>&1", tst_device->dev); + dumpe2fs = SAFE_POPEN(path, "r"); + + while (fgets(line, PATH_MAX, dumpe2fs) != NULL) { + if (strstr(line, "Block count:") && strstr(line, str_size)) + return 0; + } + + pclose(dumpe2fs); + return -1; +} + +static void do_test(void) +{ + long fs_type; + + fs_type = tst_fs_type(MOUNT_POINT); + + if (fs_type == TST_EXT234_MAGIC) { + TST_EXP_PASS((check_inode_size(128))); + TST_EXP_PASS((check_mkfs_size_opt(10240))); + } + + if (fs_type == TST_XFS_MAGIC) + TST_EXP_PASS((check_mnt_data("usrquota"))); +} + +static struct tst_test test = { + .test_all = do_test, + .needs_root = 1, + .mntpoint = MOUNT_POINT, + .mount_device = 1, + .needs_cmds = (const char *[]) { + "tune2fs", + "dumpe2fs", + NULL + }, + .filesystems = (struct tst_fs []) { + { + .type = "ext3", + .mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}, + .mkfs_size_opt = "10240", + }, + { + .type = "xfs", + .mnt_data = "usrquota", + }, + {} + }, + +}; -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v3 1/2] tst_filesystems01.c: Add test for .filesystems 2025-11-01 1:20 ` [LTP] [PATCH v3 1/2] " Wei Gao via ltp @ 2025-11-11 12:06 ` Petr Vorel 2025-11-12 6:51 ` Wei Gao via ltp 0 siblings, 1 reply; 33+ messages in thread From: Petr Vorel @ 2025-11-11 12:06 UTC (permalink / raw) To: Wei Gao; +Cc: ltp Hi Wei, ... > +static void do_test(void) > +{ > + long fs_type; > + > + fs_type = tst_fs_type(MOUNT_POINT); > + > + if (fs_type == TST_EXT234_MAGIC) { > + TST_EXP_PASS((check_inode_size(128))); > + TST_EXP_PASS((check_mkfs_size_opt(10240))); very nit: I would personally add #define for 128 and 10240, but sure it's ok to keep it hardcoded on 2 places. Reviewed-by: Petr Vorel <pvorel@suse.cz> Kind regards, Petr > + } > + > + if (fs_type == TST_XFS_MAGIC) > + TST_EXP_PASS((check_mnt_data("usrquota"))); > +} > + > +static struct tst_test test = { > + .test_all = do_test, > + .needs_root = 1, > + .mntpoint = MOUNT_POINT, > + .mount_device = 1, > + .needs_cmds = (const char *[]) { > + "tune2fs", > + "dumpe2fs", > + NULL > + }, > + .filesystems = (struct tst_fs []) { > + { > + .type = "ext3", > + .mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}, > + .mkfs_size_opt = "10240", > + }, > + { > + .type = "xfs", > + .mnt_data = "usrquota", > + }, > + {} > + }, > + > +}; -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v3 1/2] tst_filesystems01.c: Add test for .filesystems 2025-11-11 12:06 ` Petr Vorel @ 2025-11-12 6:51 ` Wei Gao via ltp 2025-11-12 9:22 ` Petr Vorel 0 siblings, 1 reply; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-12 6:51 UTC (permalink / raw) To: Petr Vorel; +Cc: ltp On Tue, Nov 11, 2025 at 01:06:00PM +0100, Petr Vorel wrote: > Hi Wei, > > ... > > +static void do_test(void) > > +{ > > + long fs_type; > > + > > + fs_type = tst_fs_type(MOUNT_POINT); > > + > > + if (fs_type == TST_EXT234_MAGIC) { > > + TST_EXP_PASS((check_inode_size(128))); > > + TST_EXP_PASS((check_mkfs_size_opt(10240))); > > very nit: I would personally add #define for 128 and 10240, but sure it's ok to > keep it hardcoded on 2 places. I thought also use #define but i found and can not replace it in "mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}", so i keep hardcoded number here. > > Reviewed-by: Petr Vorel <pvorel@suse.cz> > > Kind regards, > Petr > > > + } > > + > > + if (fs_type == TST_XFS_MAGIC) > > + TST_EXP_PASS((check_mnt_data("usrquota"))); > > +} > > + > > +static struct tst_test test = { > > + .test_all = do_test, > > + .needs_root = 1, > > + .mntpoint = MOUNT_POINT, > > + .mount_device = 1, > > + .needs_cmds = (const char *[]) { > > + "tune2fs", > > + "dumpe2fs", > > + NULL > > + }, > > + .filesystems = (struct tst_fs []) { > > + { > > + .type = "ext3", > > + .mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}, > > + .mkfs_size_opt = "10240", > > + }, > > + { > > + .type = "xfs", > > + .mnt_data = "usrquota", > > + }, > > + {} > > + }, > > + > > +}; -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v3 1/2] tst_filesystems01.c: Add test for .filesystems 2025-11-12 6:51 ` Wei Gao via ltp @ 2025-11-12 9:22 ` Petr Vorel 2025-11-12 10:32 ` Cyril Hrubis 0 siblings, 1 reply; 33+ messages in thread From: Petr Vorel @ 2025-11-12 9:22 UTC (permalink / raw) To: Wei Gao; +Cc: ltp > On Tue, Nov 11, 2025 at 01:06:00PM +0100, Petr Vorel wrote: > > Hi Wei, > > ... > > > +static void do_test(void) > > > +{ > > > + long fs_type; > > > + > > > + fs_type = tst_fs_type(MOUNT_POINT); > > > + > > > + if (fs_type == TST_EXT234_MAGIC) { > > > + TST_EXP_PASS((check_inode_size(128))); > > > + TST_EXP_PASS((check_mkfs_size_opt(10240))); > > very nit: I would personally add #define for 128 and 10240, but sure it's ok to > > keep it hardcoded on 2 places. > I thought also use #define but i found and can not replace it in > "mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}", > so i keep hardcoded number here. Thanks for info. Sure, no problem. Cc Cyril in case it's worth to fix it in metaparse.c. Kind regards, Petr > > Kind regards, > > Petr > > > + } > > > + > > > + if (fs_type == TST_XFS_MAGIC) > > > + TST_EXP_PASS((check_mnt_data("usrquota"))); > > > +} > > > + > > > +static struct tst_test test = { > > > + .test_all = do_test, > > > + .needs_root = 1, > > > + .mntpoint = MOUNT_POINT, > > > + .mount_device = 1, > > > + .needs_cmds = (const char *[]) { > > > + "tune2fs", > > > + "dumpe2fs", > > > + NULL > > > + }, > > > + .filesystems = (struct tst_fs []) { > > > + { > > > + .type = "ext3", > > > + .mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}, > > > + .mkfs_size_opt = "10240", > > > + }, > > > + { > > > + .type = "xfs", > > > + .mnt_data = "usrquota", > > > + }, > > > + {} > > > + }, > > > + > > > +}; -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v3 1/2] tst_filesystems01.c: Add test for .filesystems 2025-11-12 9:22 ` Petr Vorel @ 2025-11-12 10:32 ` Cyril Hrubis 2025-11-12 11:34 ` Wei Gao via ltp 2025-11-12 12:21 ` Petr Vorel 0 siblings, 2 replies; 33+ messages in thread From: Cyril Hrubis @ 2025-11-12 10:32 UTC (permalink / raw) To: Petr Vorel; +Cc: ltp Hi! > > > > +static void do_test(void) > > > > +{ > > > > + long fs_type; > > > > + > > > > + fs_type = tst_fs_type(MOUNT_POINT); > > > > + > > > > + if (fs_type == TST_EXT234_MAGIC) { > > > > + TST_EXP_PASS((check_inode_size(128))); > > > > + TST_EXP_PASS((check_mkfs_size_opt(10240))); > > > > very nit: I would personally add #define for 128 and 10240, but sure it's ok to > > > keep it hardcoded on 2 places. > > I thought also use #define but i found and can not replace it in > > "mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}", > > so i keep hardcoded number here. > > Thanks for info. Sure, no problem. > > Cc Cyril in case it's worth to fix it in metaparse.c. The metaparse tool does macro expansion, that shouldn't be a problem. Also metaparse only scans testcases/ directory during the build. The lib/ directory is not parsed at all. -- Cyril Hrubis chrubis@suse.cz -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v3 1/2] tst_filesystems01.c: Add test for .filesystems 2025-11-12 10:32 ` Cyril Hrubis @ 2025-11-12 11:34 ` Wei Gao via ltp 2025-11-12 11:44 ` Cyril Hrubis 2025-11-12 12:21 ` Petr Vorel 1 sibling, 1 reply; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-12 11:34 UTC (permalink / raw) To: Cyril Hrubis; +Cc: ltp On Wed, Nov 12, 2025 at 11:32:13AM +0100, Cyril Hrubis wrote: > Hi! > > > > > +static void do_test(void) > > > > > +{ > > > > > + long fs_type; > > > > > + > > > > > + fs_type = tst_fs_type(MOUNT_POINT); > > > > > + > > > > > + if (fs_type == TST_EXT234_MAGIC) { > > > > > + TST_EXP_PASS((check_inode_size(128))); > > > > > + TST_EXP_PASS((check_mkfs_size_opt(10240))); > > > > > > very nit: I would personally add #define for 128 and 10240, but sure it's ok to > > > > keep it hardcoded on 2 places. > > > I thought also use #define but i found and can not replace it in > > > "mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}", > > > so i keep hardcoded number here. > > > > Thanks for info. Sure, no problem. > > > > Cc Cyril in case it's worth to fix it in metaparse.c. > > The metaparse tool does macro expansion, that shouldn't be a problem. > > Also metaparse only scans testcases/ directory during the build. The > lib/ directory is not parsed at all. @Cyril Could you help confirm following is the correct way use ? diff --git a/lib/newlib_tests/tst_filesystems01.c b/lib/newlib_tests/tst_filesystems01.c index 4eca0af0e..b2a2ce050 100644 --- a/lib/newlib_tests/tst_filesystems01.c +++ b/lib/newlib_tests/tst_filesystems01.c @@ -6,6 +6,12 @@ #include "tst_test.h" #include "tst_safe_stdio.h" +#define INODE_SIZE 128 +#define MKFS_SIZE_VAL 10240 + +#define __STR(x) #x +#define STR(x) __STR(x) + #define MOUNT_POINT "mount_test_filesystems" static int check_inode_size(unsigned int size) @@ -91,8 +97,8 @@ static struct tst_test test = { .filesystems = (struct tst_fs []) { { .type = "ext3", - .mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}, - .mkfs_size_opt = "10240", + .mkfs_opts = (const char *const []){"-I", STR(INODE_SIZE), "-b", "1024", NULL}, + .mkfs_size_opt = STR(MKFS_SIZE_VAL), }, { .type = "xfs", > > -- > Cyril Hrubis > chrubis@suse.cz -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v3 1/2] tst_filesystems01.c: Add test for .filesystems 2025-11-12 11:34 ` Wei Gao via ltp @ 2025-11-12 11:44 ` Cyril Hrubis 2025-11-12 12:14 ` Wei Gao via ltp 0 siblings, 1 reply; 33+ messages in thread From: Cyril Hrubis @ 2025-11-12 11:44 UTC (permalink / raw) To: Wei Gao; +Cc: ltp Hi! > > > Thanks for info. Sure, no problem. > > > > > > Cc Cyril in case it's worth to fix it in metaparse.c. > > > > The metaparse tool does macro expansion, that shouldn't be a problem. > > > > Also metaparse only scans testcases/ directory during the build. The > > lib/ directory is not parsed at all. > > @Cyril > Could you help confirm following is the correct way use ? Yes, forcing double pass for the macro preprocessor is the correct solution and We already have the same code in TST_TO_STR() in tst_common.h -- Cyril Hrubis chrubis@suse.cz -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v3 1/2] tst_filesystems01.c: Add test for .filesystems 2025-11-12 11:44 ` Cyril Hrubis @ 2025-11-12 12:14 ` Wei Gao via ltp 0 siblings, 0 replies; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-12 12:14 UTC (permalink / raw) To: Cyril Hrubis; +Cc: ltp On Wed, Nov 12, 2025 at 12:44:03PM +0100, Cyril Hrubis wrote: > Hi! > > > > Thanks for info. Sure, no problem. > > > > > > > > Cc Cyril in case it's worth to fix it in metaparse.c. > > > > > > The metaparse tool does macro expansion, that shouldn't be a problem. > > > > > > Also metaparse only scans testcases/ directory during the build. The > > > lib/ directory is not parsed at all. > > > > @Cyril > > Could you help confirm following is the correct way use ? > > Yes, forcing double pass for the macro preprocessor is the correct > solution and We already have the same code in TST_TO_STR() in > tst_common.h > Thanks Cyril / Petr, i will update it in next version. > -- > Cyril Hrubis > chrubis@suse.cz -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v3 1/2] tst_filesystems01.c: Add test for .filesystems 2025-11-12 10:32 ` Cyril Hrubis 2025-11-12 11:34 ` Wei Gao via ltp @ 2025-11-12 12:21 ` Petr Vorel 2025-11-13 1:28 ` Wei Gao via ltp 1 sibling, 1 reply; 33+ messages in thread From: Petr Vorel @ 2025-11-12 12:21 UTC (permalink / raw) To: Cyril Hrubis; +Cc: ltp > Hi! > > > > > +static void do_test(void) > > > > > +{ > > > > > + long fs_type; > > > > > + > > > > > + fs_type = tst_fs_type(MOUNT_POINT); > > > > > + > > > > > + if (fs_type == TST_EXT234_MAGIC) { > > > > > + TST_EXP_PASS((check_inode_size(128))); > > > > > + TST_EXP_PASS((check_mkfs_size_opt(10240))); > > > > very nit: I would personally add #define for 128 and 10240, but sure it's ok to > > > > keep it hardcoded on 2 places. > > > I thought also use #define but i found and can not replace it in > > > "mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}", > > > so i keep hardcoded number here. > > Thanks for info. Sure, no problem. > > Cc Cyril in case it's worth to fix it in metaparse.c. > The metaparse tool does macro expansion, that shouldn't be a problem. > Also metaparse only scans testcases/ directory during the build. The > lib/ directory is not parsed at all. @Cyril Ah, I'm sorry I forget it's a library test, not an ordinary test. @Wei I thought tested and see the problem, but you probably just suspect it would be a problem. Kind regards, Petr -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v3 1/2] tst_filesystems01.c: Add test for .filesystems 2025-11-12 12:21 ` Petr Vorel @ 2025-11-13 1:28 ` Wei Gao via ltp 0 siblings, 0 replies; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-13 1:28 UTC (permalink / raw) To: Petr Vorel; +Cc: ltp On Wed, Nov 12, 2025 at 01:21:26PM +0100, Petr Vorel wrote: > > Hi! > > > > > > +static void do_test(void) > > > > > > +{ > > > > > > + long fs_type; > > > > > > + > > > > > > + fs_type = tst_fs_type(MOUNT_POINT); > > > > > > + > > > > > > + if (fs_type == TST_EXT234_MAGIC) { > > > > > > + TST_EXP_PASS((check_inode_size(128))); > > > > > > + TST_EXP_PASS((check_mkfs_size_opt(10240))); > > > > > > very nit: I would personally add #define for 128 and 10240, but sure it's ok to > > > > > keep it hardcoded on 2 places. > > > > I thought also use #define but i found and can not replace it in > > > > "mkfs_opts = (const char *const []){"-I", "128", "-b", "1024", NULL}", > > > > so i keep hardcoded number here. > > > > Thanks for info. Sure, no problem. > > > > Cc Cyril in case it's worth to fix it in metaparse.c. > > > The metaparse tool does macro expansion, that shouldn't be a problem. > > > Also metaparse only scans testcases/ directory during the build. The > > lib/ directory is not parsed at all. > > @Cyril Ah, I'm sorry I forget it's a library test, not an ordinary test. > > @Wei I thought tested and see the problem, but you probably just suspect it > would be a problem. Sorry i have not deep checked, since i put "INODE_SIZE" into mkfs_opts and error report so i guess it not support it. > > Kind regards, > Petr -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* [LTP] [PATCH v3 2/2] tst_format_device.sh: Add e2fsprogs package for CI test 2025-11-01 1:20 ` [LTP] [PATCH v3 0/2] " Wei Gao via ltp 2025-11-01 1:20 ` [LTP] [PATCH v3 1/2] " Wei Gao via ltp @ 2025-11-01 1:20 ` Wei Gao via ltp 2025-11-11 12:22 ` Petr Vorel 2025-11-13 1:52 ` [LTP] [PATCH v4 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 2 siblings, 1 reply; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-01 1:20 UTC (permalink / raw) To: ltp For alpine platform we should mount /dev/loop device before df check. Otherwise following error will be triggered runtest TINFO: * shell/tst_format_device.sh tst_format_device 1 TINFO: Running: tst_format_device.sh tst_format_device 1 TINFO: Tested kernel: Linux 0ba9f024d6b7 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 Linux tst_format_device 1 TINFO: Using /tmp/LTP_tst_format_device.XXXXOajpgN as tmpdir (UNKNOWN filesystem) tst_device.c:98: TINFO: Found free device 0 '/dev/loop0' tst_format_device 1 TINFO: Formatting ext2 with opts='-b 1024 /dev/loop0 5m' tst_format_device 1 TINFO: timeout per run is 0h 5m 0s tst_format_device 1 TPASS: device formatted df: /dev/loop0: can't find mount point tst_format_device 2 TFAIL: df /dev/loop0 | grep -q /dev failed unexpectedly tst_format_device 3 TINFO: AppArmor enabled, this may affect test results tst_format_device 3 TINFO: it can be disabled with TST_DISABLE_APPARMOR=1 (requires super/root) tst_format_device 3 TINFO: loaded AppArmor profiles: none Signed-off-by: Wei Gao <wegao@suse.com> --- ci/alpine.sh | 1 + ci/debian.sh | 1 + ci/fedora.sh | 1 + ci/tumbleweed.sh | 1 + lib/newlib_tests/shell/tst_format_device.sh | 1 + 5 files changed, 5 insertions(+) diff --git a/ci/alpine.sh b/ci/alpine.sh index 254f4aaec..f3a1bf528 100755 --- a/ci/alpine.sh +++ b/ci/alpine.sh @@ -25,6 +25,7 @@ apk add \ musl-dev \ numactl-dev \ openssl-dev \ + e2fsprogs-extra \ pkgconfig cat /etc/os-release diff --git a/ci/debian.sh b/ci/debian.sh index 0445c92ec..767c9b985 100755 --- a/ci/debian.sh +++ b/ci/debian.sh @@ -33,6 +33,7 @@ pkg_minimal=" linux-libc-dev lsb-release pkg-config + e2fsprogs " pkg_nonessential=" diff --git a/ci/fedora.sh b/ci/fedora.sh index f57806ebf..f4482a1da 100755 --- a/ci/fedora.sh +++ b/ci/fedora.sh @@ -26,6 +26,7 @@ $yum \ libtirpc \ libtirpc-devel \ pkg-config \ + e2fsprogs \ redhat-lsb-core # CentOS 8 fixes diff --git a/ci/tumbleweed.sh b/ci/tumbleweed.sh index 8a30b02c2..8f23229df 100755 --- a/ci/tumbleweed.sh +++ b/ci/tumbleweed.sh @@ -30,6 +30,7 @@ while [ $i != 0 ]; do libtirpc-devel \ linux-glibc-devel \ lsb-release \ + e2fsprogs \ pkg-config ret=$? diff --git a/lib/newlib_tests/shell/tst_format_device.sh b/lib/newlib_tests/shell/tst_format_device.sh index dbe4ea9e7..bd4aa2ed9 100755 --- a/lib/newlib_tests/shell/tst_format_device.sh +++ b/lib/newlib_tests/shell/tst_format_device.sh @@ -3,6 +3,7 @@ # Copyright (c) 2022 Petr Vorel <pvorel@suse.cz> TST_FORMAT_DEVICE=1 +TST_MOUNT_DEVICE=1 TST_NEEDS_ROOT=1 TST_TESTFUNC=test TST_CNT=2 -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v3 2/2] tst_format_device.sh: Add e2fsprogs package for CI test 2025-11-01 1:20 ` [LTP] [PATCH v3 2/2] tst_format_device.sh: Add e2fsprogs package for CI test Wei Gao via ltp @ 2025-11-11 12:22 ` Petr Vorel 0 siblings, 0 replies; 33+ messages in thread From: Petr Vorel @ 2025-11-11 12:22 UTC (permalink / raw) To: Wei Gao; +Cc: ltp Hi Wei, > For alpine platform we should mount /dev/loop device before df check. > Otherwise following error will be triggered > runtest TINFO: * shell/tst_format_device.sh > tst_format_device 1 TINFO: Running: tst_format_device.sh > tst_format_device 1 TINFO: Tested kernel: Linux 0ba9f024d6b7 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 Linux > tst_format_device 1 TINFO: Using /tmp/LTP_tst_format_device.XXXXOajpgN as tmpdir (UNKNOWN filesystem) > tst_device.c:98: TINFO: Found free device 0 '/dev/loop0' > tst_format_device 1 TINFO: Formatting ext2 with opts='-b 1024 /dev/loop0 5m' > tst_format_device 1 TINFO: timeout per run is 0h 5m 0s > tst_format_device 1 TPASS: device formatted > df: /dev/loop0: can't find mount point > tst_format_device 2 TFAIL: df /dev/loop0 | grep -q /dev failed unexpectedly > tst_format_device 3 TINFO: AppArmor enabled, this may affect test results > tst_format_device 3 TINFO: it can be disabled with TST_DISABLE_APPARMOR=1 (requires super/root) > tst_format_device 3 TINFO: loaded AppArmor profiles: none I see busybox df implementation require mounting (unlike coreutils implementation). nit: As this is clearly completely unrelated change (but most of the git commit message is in the description) it would be clearer to have it as a separate change (as a previous commit, before adding packages). + mention in the commit message it's due busybox. The subject of commit with ci/* changes could have prefix 'ci' (it's due tst_format_device.sh, but you modify our CI). > --- > ci/alpine.sh | 1 + > ci/debian.sh | 1 + > ci/fedora.sh | 1 + > ci/tumbleweed.sh | 1 + > lib/newlib_tests/shell/tst_format_device.sh | 1 + > 5 files changed, 5 insertions(+) ... > diff --git a/lib/newlib_tests/shell/tst_format_device.sh b/lib/newlib_tests/shell/tst_format_device.sh > index dbe4ea9e7..bd4aa2ed9 100755 > --- a/lib/newlib_tests/shell/tst_format_device.sh > +++ b/lib/newlib_tests/shell/tst_format_device.sh > @@ -3,6 +3,7 @@ > # Copyright (c) 2022 Petr Vorel <pvorel@suse.cz> > TST_FORMAT_DEVICE=1 > +TST_MOUNT_DEVICE=1 nit: TST_MOUNT_DEVICE=1 implies TST_FORMAT_DEVICE=1 (not a mistake, but TST_FORMAT_DEVICE=1 is not necessary). Kind regards, Petr -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* [LTP] [PATCH v4 0/3] tst_filesystems01.c: Add test for .filesystems 2025-11-01 1:20 ` [LTP] [PATCH v3 0/2] " Wei Gao via ltp 2025-11-01 1:20 ` [LTP] [PATCH v3 1/2] " Wei Gao via ltp 2025-11-01 1:20 ` [LTP] [PATCH v3 2/2] tst_format_device.sh: Add e2fsprogs package for CI test Wei Gao via ltp @ 2025-11-13 1:52 ` Wei Gao via ltp 2025-11-13 1:52 ` [LTP] [PATCH v4 1/3] " Wei Gao via ltp ` (3 more replies) 2 siblings, 4 replies; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-13 1:52 UTC (permalink / raw) To: ltp v3->v4: - Use #define for 128 and 10240 - Change commit subject with ci prefix if ci related changed - Separate change which unrelated Wei Gao (3): tst_filesystems01.c: Add test for .filesystems ci: Add mount operation for busybox ci: Add e2fsprogs package for CI test ci/alpine.sh | 1 + ci/debian.sh | 1 + ci/fedora.sh | 1 + ci/tumbleweed.sh | 1 + lib/newlib_tests/runtest.sh | 1 + lib/newlib_tests/shell/tst_format_device.sh | 2 +- lib/newlib_tests/tst_filesystems01.c | 108 ++++++++++++++++++++ 7 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 lib/newlib_tests/tst_filesystems01.c -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* [LTP] [PATCH v4 1/3] tst_filesystems01.c: Add test for .filesystems 2025-11-13 1:52 ` [LTP] [PATCH v4 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp @ 2025-11-13 1:52 ` Wei Gao via ltp 2026-01-22 3:37 ` Li Wang via ltp 2025-11-13 1:52 ` [LTP] [PATCH v4 2/3] ci: Add mount operation for busybox Wei Gao via ltp ` (2 subsequent siblings) 3 siblings, 1 reply; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-13 1:52 UTC (permalink / raw) To: ltp Fixes: https://github.com/linux-test-project/ltp/issues/1243 Signed-off-by: Wei Gao <wegao@suse.com> Reviewed-by: Petr Vorel <petr.vorel@gmail.com> --- lib/newlib_tests/runtest.sh | 1 + lib/newlib_tests/tst_filesystems01.c | 108 +++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 lib/newlib_tests/tst_filesystems01.c diff --git a/lib/newlib_tests/runtest.sh b/lib/newlib_tests/runtest.sh index d87751c2f..71808ef8b 100755 --- a/lib/newlib_tests/runtest.sh +++ b/lib/newlib_tests/runtest.sh @@ -24,6 +24,7 @@ tst_checkpoint_wait_timeout tst_checkpoint_wake_timeout tst_device tst_expiration_timer +tst_filesystems01 tst_fuzzy_sync0[1-3] tst_needs_cmds0[1-36-8] tst_res_hexd diff --git a/lib/newlib_tests/tst_filesystems01.c b/lib/newlib_tests/tst_filesystems01.c new file mode 100644 index 000000000..dd24abca2 --- /dev/null +++ b/lib/newlib_tests/tst_filesystems01.c @@ -0,0 +1,108 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2025 Wei Gao <wegao@suse.com> + */ + +#include "tst_test.h" +#include "tst_safe_stdio.h" + +#define INODE_SIZE 128 +#define BLOCK_SIZE 1024 +#define MKFS_SIZE_VAL 10240 + +#define MOUNT_POINT "mount_test_filesystems" + +static int check_inode_size(unsigned int size) +{ + char path[PATH_MAX]; + char line[PATH_MAX]; + FILE *tune2fs; + char str_size[NAME_MAX]; + + snprintf(str_size, sizeof(str_size), "%u", size); + snprintf(path, sizeof(path), "tune2fs -l %s 2>&1", tst_device->dev); + tune2fs = SAFE_POPEN(path, "r"); + + while (fgets(line, PATH_MAX, tune2fs) != NULL) { + if (strstr(line, "Inode size:") && strstr(line, str_size)) + return 0; + } + + pclose(tune2fs); + return -1; +} + +static int check_mnt_data(char *opt) +{ + FILE *fp; + char line[PATH_MAX]; + + fp = SAFE_FOPEN("/proc/mounts", "r"); + + while (fgets(line, PATH_MAX, fp) != NULL) { + if (strstr(line, tst_device->dev) && strstr(line, opt)) + return 0; + } + SAFE_FCLOSE(fp); + return -1; +} + +static int check_mkfs_size_opt(unsigned int size) +{ + char path[PATH_MAX]; + char line[PATH_MAX]; + FILE *dumpe2fs; + char str_size[NAME_MAX]; + + snprintf(str_size, sizeof(str_size), "%u", size); + snprintf(path, sizeof(path), "dumpe2fs -h %s 2>&1", tst_device->dev); + dumpe2fs = SAFE_POPEN(path, "r"); + + while (fgets(line, PATH_MAX, dumpe2fs) != NULL) { + if (strstr(line, "Block count:") && strstr(line, str_size)) + return 0; + } + + pclose(dumpe2fs); + return -1; +} + +static void do_test(void) +{ + long fs_type; + + fs_type = tst_fs_type(MOUNT_POINT); + + if (fs_type == TST_EXT234_MAGIC) { + TST_EXP_PASS((check_inode_size(INODE_SIZE))); + TST_EXP_PASS((check_mkfs_size_opt(MKFS_SIZE_VAL))); + } + + if (fs_type == TST_XFS_MAGIC) + TST_EXP_PASS((check_mnt_data("usrquota"))); +} + +static struct tst_test test = { + .test_all = do_test, + .needs_root = 1, + .mntpoint = MOUNT_POINT, + .mount_device = 1, + .needs_cmds = (const char *[]) { + "tune2fs", + "dumpe2fs", + NULL + }, + .filesystems = (struct tst_fs []) { + { + .type = "ext3", + .mkfs_opts = (const char *const []){"-I", TST_TO_STR(INODE_SIZE), "-b", TST_TO_STR(BLOCK_SIZE), NULL}, + .mkfs_size_opt = TST_TO_STR(MKFS_SIZE_VAL), + }, + { + .type = "xfs", + .mnt_data = "usrquota", + }, + {} + }, + +}; -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v4 1/3] tst_filesystems01.c: Add test for .filesystems 2025-11-13 1:52 ` [LTP] [PATCH v4 1/3] " Wei Gao via ltp @ 2026-01-22 3:37 ` Li Wang via ltp 2026-01-22 8:02 ` Petr Vorel 0 siblings, 1 reply; 33+ messages in thread From: Li Wang via ltp @ 2026-01-22 3:37 UTC (permalink / raw) To: Wei Gao; +Cc: ltp > +static struct tst_test test = { > + .test_all = do_test, > + .needs_root = 1, > + .mntpoint = MOUNT_POINT, > + .mount_device = 1, > + .needs_cmds = (const char *[]) { > + "tune2fs", > + "dumpe2fs", > + NULL > + }, We need to adjust 'char*[]' to new 'struct tst_cmd[]' since commit 39a284442. Otherwise for the whole patchset: Reviewed-by: Li Wang <liwang@redhat.com> -- Regards, Li Wang -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v4 1/3] tst_filesystems01.c: Add test for .filesystems 2026-01-22 3:37 ` Li Wang via ltp @ 2026-01-22 8:02 ` Petr Vorel 2026-01-22 8:54 ` Wei Gao via ltp 0 siblings, 1 reply; 33+ messages in thread From: Petr Vorel @ 2026-01-22 8:02 UTC (permalink / raw) To: Li Wang; +Cc: ltp Hi all, > > + .needs_cmds = (const char *[]) { > > + "tune2fs", > > + "dumpe2fs", > > + NULL > > + }, > We need to adjust 'char*[]' to new 'struct tst_cmd[]' since commit 39a284442. Good point, Li. Wei, will you send v5? Also whole patchset LGTM. Reviewed-by: Petr Vorel <pvorel@suse.cz> Kind regards, Petr -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v4 1/3] tst_filesystems01.c: Add test for .filesystems 2026-01-22 8:02 ` Petr Vorel @ 2026-01-22 8:54 ` Wei Gao via ltp 0 siblings, 0 replies; 33+ messages in thread From: Wei Gao via ltp @ 2026-01-22 8:54 UTC (permalink / raw) To: Petr Vorel; +Cc: ltp On Thu, Jan 22, 2026 at 09:02:04AM +0100, Petr Vorel wrote: > Hi all, > > > > + .needs_cmds = (const char *[]) { > > > + "tune2fs", > > > + "dumpe2fs", > > > + NULL > > > + }, > > > We need to adjust 'char*[]' to new 'struct tst_cmd[]' since commit 39a284442. > > Good point, Li. Wei, will you send v5? Thansk Li, Petr Will sent it. > > Also whole patchset LGTM. > Reviewed-by: Petr Vorel <pvorel@suse.cz> > > Kind regards, > Petr -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* [LTP] [PATCH v4 2/3] ci: Add mount operation for busybox 2025-11-13 1:52 ` [LTP] [PATCH v4 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 2025-11-13 1:52 ` [LTP] [PATCH v4 1/3] " Wei Gao via ltp @ 2025-11-13 1:52 ` Wei Gao via ltp 2025-11-13 1:52 ` [LTP] [PATCH v4 3/3] ci: Add e2fsprogs package for CI test Wei Gao via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 3 siblings, 0 replies; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-13 1:52 UTC (permalink / raw) To: ltp Busybox df implementation require mounting (unlike coreutils implementation). Following error can be found during alpine ci: runtest TINFO: * shell/tst_format_device.sh tst_format_device 1 TINFO: Running: tst_format_device.sh tst_format_device 1 TINFO: Tested kernel: Linux 0ba9f024d6b7 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 Linux tst_format_device 1 TINFO: Using /tmp/LTP_tst_format_device.XXXXOajpgN as tmpdir (UNKNOWN filesystem) tst_device.c:98: TINFO: Found free device 0 '/dev/loop0' tst_format_device 1 TINFO: Formatting ext2 with opts='-b 1024 /dev/loop0 5m' tst_format_device 1 TINFO: timeout per run is 0h 5m 0s tst_format_device 1 TPASS: device formatted df: /dev/loop0: can't find mount point tst_format_device 2 TFAIL: df /dev/loop0 | grep -q /dev failed unexpectedly tst_format_device 3 TINFO: AppArmor enabled, this may affect test results tst_format_device 3 TINFO: it can be disabled with TST_DISABLE_APPARMOR=1 (requires super/root) tst_format_device 3 TINFO: loaded AppArmor profiles: none Signed-off-by: Wei Gao <wegao@suse.com> --- lib/newlib_tests/shell/tst_format_device.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/newlib_tests/shell/tst_format_device.sh b/lib/newlib_tests/shell/tst_format_device.sh index dbe4ea9e7..b7366517e 100755 --- a/lib/newlib_tests/shell/tst_format_device.sh +++ b/lib/newlib_tests/shell/tst_format_device.sh @@ -2,7 +2,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (c) 2022 Petr Vorel <pvorel@suse.cz> -TST_FORMAT_DEVICE=1 +TST_MOUNT_DEVICE=1 TST_NEEDS_ROOT=1 TST_TESTFUNC=test TST_CNT=2 -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [LTP] [PATCH v4 3/3] ci: Add e2fsprogs package for CI test 2025-11-13 1:52 ` [LTP] [PATCH v4 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 2025-11-13 1:52 ` [LTP] [PATCH v4 1/3] " Wei Gao via ltp 2025-11-13 1:52 ` [LTP] [PATCH v4 2/3] ci: Add mount operation for busybox Wei Gao via ltp @ 2025-11-13 1:52 ` Wei Gao via ltp 2025-12-18 13:49 ` Andrea Cervesato via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 3 siblings, 1 reply; 33+ messages in thread From: Wei Gao via ltp @ 2025-11-13 1:52 UTC (permalink / raw) To: ltp We should add e2fsprogs to ci env otherwise test cases which need tune2fs/dumpe2fs in ci will be skipped. For example following message: 2025-09-24T09:00:56.9304198Z tst_cmd.c:268: TCONF: Couldn't find 'tune2fs' in $PATH Signed-off-by: Wei Gao <wegao@suse.com> --- ci/alpine.sh | 1 + ci/debian.sh | 1 + ci/fedora.sh | 1 + ci/tumbleweed.sh | 1 + 4 files changed, 4 insertions(+) diff --git a/ci/alpine.sh b/ci/alpine.sh index 254f4aaec..f3a1bf528 100755 --- a/ci/alpine.sh +++ b/ci/alpine.sh @@ -25,6 +25,7 @@ apk add \ musl-dev \ numactl-dev \ openssl-dev \ + e2fsprogs-extra \ pkgconfig cat /etc/os-release diff --git a/ci/debian.sh b/ci/debian.sh index 0445c92ec..767c9b985 100755 --- a/ci/debian.sh +++ b/ci/debian.sh @@ -33,6 +33,7 @@ pkg_minimal=" linux-libc-dev lsb-release pkg-config + e2fsprogs " pkg_nonessential=" diff --git a/ci/fedora.sh b/ci/fedora.sh index f57806ebf..f4482a1da 100755 --- a/ci/fedora.sh +++ b/ci/fedora.sh @@ -26,6 +26,7 @@ $yum \ libtirpc \ libtirpc-devel \ pkg-config \ + e2fsprogs \ redhat-lsb-core # CentOS 8 fixes diff --git a/ci/tumbleweed.sh b/ci/tumbleweed.sh index 8a30b02c2..8f23229df 100755 --- a/ci/tumbleweed.sh +++ b/ci/tumbleweed.sh @@ -30,6 +30,7 @@ while [ $i != 0 ]; do libtirpc-devel \ linux-glibc-devel \ lsb-release \ + e2fsprogs \ pkg-config ret=$? -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v4 3/3] ci: Add e2fsprogs package for CI test 2025-11-13 1:52 ` [LTP] [PATCH v4 3/3] ci: Add e2fsprogs package for CI test Wei Gao via ltp @ 2025-12-18 13:49 ` Andrea Cervesato via ltp 2025-12-18 13:51 ` Andrea Cervesato via ltp 0 siblings, 1 reply; 33+ messages in thread From: Andrea Cervesato via ltp @ 2025-12-18 13:49 UTC (permalink / raw) To: Wei Gao, ltp Hi! The commit message talks about tune2fs/dumpe2fs, but I couldn't find tests using them. Am I missing something? -- Andrea Cervesato SUSE QE Automation Engineer Linux andrea.cervesato@suse.com -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v4 3/3] ci: Add e2fsprogs package for CI test 2025-12-18 13:49 ` Andrea Cervesato via ltp @ 2025-12-18 13:51 ` Andrea Cervesato via ltp 0 siblings, 0 replies; 33+ messages in thread From: Andrea Cervesato via ltp @ 2025-12-18 13:51 UTC (permalink / raw) To: Andrea Cervesato, Wei Gao, ltp Please ignore the following message, I missed the patch-series while doing `git am`. On Thu Dec 18, 2025 at 2:49 PM CET, Andrea Cervesato wrote: > Hi! > > The commit message talks about tune2fs/dumpe2fs, but I couldn't find > tests using them. > > Am I missing something? -- Andrea Cervesato SUSE QE Automation Engineer Linux andrea.cervesato@suse.com -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* [LTP] [PATCH v5 0/3] tst_filesystems01.c: Add test for .filesystems 2025-11-13 1:52 ` [LTP] [PATCH v4 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp ` (2 preceding siblings ...) 2025-11-13 1:52 ` [LTP] [PATCH v4 3/3] ci: Add e2fsprogs package for CI test Wei Gao via ltp @ 2026-01-23 2:36 ` Wei Gao via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 1/3] " Wei Gao via ltp ` (2 more replies) 3 siblings, 3 replies; 33+ messages in thread From: Wei Gao via ltp @ 2026-01-23 2:36 UTC (permalink / raw) To: ltp v4->v5: - Adjust 'char*[]' to new 'struct tst_cmd[]' since commit 39a284442 v3->v4: - Use #define for 128 and 10240 - Change commit subject with ci prefix if ci related changed - Separate change which unrelated Wei Gao (3): tst_filesystems01.c: Add test for .filesystems ci: Add mount operation for busybox ci: Add e2fsprogs package for CI test ci/alpine.sh | 1 + ci/debian.sh | 1 + ci/fedora.sh | 1 + ci/tumbleweed.sh | 1 + lib/newlib_tests/runtest.sh | 1 + lib/newlib_tests/shell/tst_format_device.sh | 2 +- lib/newlib_tests/tst_filesystems01.c | 108 ++++++++++++++++++++ 7 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 lib/newlib_tests/tst_filesystems01.c -- 2.52.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* [LTP] [PATCH v5 1/3] tst_filesystems01.c: Add test for .filesystems 2026-01-23 2:36 ` [LTP] [PATCH v5 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp @ 2026-01-23 2:36 ` Wei Gao via ltp 2026-01-28 0:49 ` Li Wang via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 2/3] ci: Add mount operation for busybox Wei Gao via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 3/3] ci: Add e2fsprogs package for CI test Wei Gao via ltp 2 siblings, 1 reply; 33+ messages in thread From: Wei Gao via ltp @ 2026-01-23 2:36 UTC (permalink / raw) To: ltp Fixes: https://github.com/linux-test-project/ltp/issues/1243 Signed-off-by: Wei Gao <wegao@suse.com> Reviewed-by: Petr Vorel <pvorel@suse.cz> Reviewed-by: Li Wang <liwang@redhat.com> --- lib/newlib_tests/runtest.sh | 1 + lib/newlib_tests/tst_filesystems01.c | 108 +++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 lib/newlib_tests/tst_filesystems01.c diff --git a/lib/newlib_tests/runtest.sh b/lib/newlib_tests/runtest.sh index d87751c2f..71808ef8b 100755 --- a/lib/newlib_tests/runtest.sh +++ b/lib/newlib_tests/runtest.sh @@ -24,6 +24,7 @@ tst_checkpoint_wait_timeout tst_checkpoint_wake_timeout tst_device tst_expiration_timer +tst_filesystems01 tst_fuzzy_sync0[1-3] tst_needs_cmds0[1-36-8] tst_res_hexd diff --git a/lib/newlib_tests/tst_filesystems01.c b/lib/newlib_tests/tst_filesystems01.c new file mode 100644 index 000000000..177ce1e33 --- /dev/null +++ b/lib/newlib_tests/tst_filesystems01.c @@ -0,0 +1,108 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2025 Wei Gao <wegao@suse.com> + */ + +#include "tst_test.h" +#include "tst_safe_stdio.h" + +#define INODE_SIZE 128 +#define BLOCK_SIZE 1024 +#define MKFS_SIZE_VAL 10240 + +#define MOUNT_POINT "mount_test_filesystems" + +static int check_inode_size(unsigned int size) +{ + char path[PATH_MAX]; + char line[PATH_MAX]; + FILE *tune2fs; + char str_size[NAME_MAX]; + + snprintf(str_size, sizeof(str_size), "%u", size); + snprintf(path, sizeof(path), "tune2fs -l %s 2>&1", tst_device->dev); + tune2fs = SAFE_POPEN(path, "r"); + + while (fgets(line, PATH_MAX, tune2fs) != NULL) { + if (strstr(line, "Inode size:") && strstr(line, str_size)) + return 0; + } + + pclose(tune2fs); + return -1; +} + +static int check_mnt_data(char *opt) +{ + FILE *fp; + char line[PATH_MAX]; + + fp = SAFE_FOPEN("/proc/mounts", "r"); + + while (fgets(line, PATH_MAX, fp) != NULL) { + if (strstr(line, tst_device->dev) && strstr(line, opt)) + return 0; + } + SAFE_FCLOSE(fp); + return -1; +} + +static int check_mkfs_size_opt(unsigned int size) +{ + char path[PATH_MAX]; + char line[PATH_MAX]; + FILE *dumpe2fs; + char str_size[NAME_MAX]; + + snprintf(str_size, sizeof(str_size), "%u", size); + snprintf(path, sizeof(path), "dumpe2fs -h %s 2>&1", tst_device->dev); + dumpe2fs = SAFE_POPEN(path, "r"); + + while (fgets(line, PATH_MAX, dumpe2fs) != NULL) { + if (strstr(line, "Block count:") && strstr(line, str_size)) + return 0; + } + + pclose(dumpe2fs); + return -1; +} + +static void do_test(void) +{ + long fs_type; + + fs_type = tst_fs_type(MOUNT_POINT); + + if (fs_type == TST_EXT234_MAGIC) { + TST_EXP_PASS((check_inode_size(INODE_SIZE))); + TST_EXP_PASS((check_mkfs_size_opt(MKFS_SIZE_VAL))); + } + + if (fs_type == TST_XFS_MAGIC) + TST_EXP_PASS((check_mnt_data("usrquota"))); +} + +static struct tst_test test = { + .test_all = do_test, + .needs_root = 1, + .mntpoint = MOUNT_POINT, + .mount_device = 1, + .needs_cmds = (struct tst_cmd[]) { + {.cmd = "tune2fs"}, + {.cmd = "dumpe2fs"}, + {} + }, + .filesystems = (struct tst_fs []) { + { + .type = "ext3", + .mkfs_opts = (const char *const []){"-I", TST_TO_STR(INODE_SIZE), "-b", TST_TO_STR(BLOCK_SIZE), NULL}, + .mkfs_size_opt = TST_TO_STR(MKFS_SIZE_VAL), + }, + { + .type = "xfs", + .mnt_data = "usrquota", + }, + {} + }, + +}; -- 2.52.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [LTP] [PATCH v5 1/3] tst_filesystems01.c: Add test for .filesystems 2026-01-23 2:36 ` [LTP] [PATCH v5 1/3] " Wei Gao via ltp @ 2026-01-28 0:49 ` Li Wang via ltp 0 siblings, 0 replies; 33+ messages in thread From: Li Wang via ltp @ 2026-01-28 0:49 UTC (permalink / raw) To: Wei Gao; +Cc: ltp Hi Wei, All, Patchset merged, thanks! -- Regards, Li Wang -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 33+ messages in thread
* [LTP] [PATCH v5 2/3] ci: Add mount operation for busybox 2026-01-23 2:36 ` [LTP] [PATCH v5 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 1/3] " Wei Gao via ltp @ 2026-01-23 2:36 ` Wei Gao via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 3/3] ci: Add e2fsprogs package for CI test Wei Gao via ltp 2 siblings, 0 replies; 33+ messages in thread From: Wei Gao via ltp @ 2026-01-23 2:36 UTC (permalink / raw) To: ltp Busybox df implementation require mounting (unlike coreutils implementation). Following error can be found during alpine ci: runtest TINFO: * shell/tst_format_device.sh tst_format_device 1 TINFO: Running: tst_format_device.sh tst_format_device 1 TINFO: Tested kernel: Linux 0ba9f024d6b7 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 Linux tst_format_device 1 TINFO: Using /tmp/LTP_tst_format_device.XXXXOajpgN as tmpdir (UNKNOWN filesystem) tst_device.c:98: TINFO: Found free device 0 '/dev/loop0' tst_format_device 1 TINFO: Formatting ext2 with opts='-b 1024 /dev/loop0 5m' tst_format_device 1 TINFO: timeout per run is 0h 5m 0s tst_format_device 1 TPASS: device formatted df: /dev/loop0: can't find mount point tst_format_device 2 TFAIL: df /dev/loop0 | grep -q /dev failed unexpectedly tst_format_device 3 TINFO: AppArmor enabled, this may affect test results tst_format_device 3 TINFO: it can be disabled with TST_DISABLE_APPARMOR=1 (requires super/root) tst_format_device 3 TINFO: loaded AppArmor profiles: none Signed-off-by: Wei Gao <wegao@suse.com> Reviewed-by: Petr Vorel <pvorel@suse.cz> Reviewed-by: Li Wang <liwang@redhat.com> --- lib/newlib_tests/shell/tst_format_device.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/newlib_tests/shell/tst_format_device.sh b/lib/newlib_tests/shell/tst_format_device.sh index dbe4ea9e7..b7366517e 100755 --- a/lib/newlib_tests/shell/tst_format_device.sh +++ b/lib/newlib_tests/shell/tst_format_device.sh @@ -2,7 +2,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (c) 2022 Petr Vorel <pvorel@suse.cz> -TST_FORMAT_DEVICE=1 +TST_MOUNT_DEVICE=1 TST_NEEDS_ROOT=1 TST_TESTFUNC=test TST_CNT=2 -- 2.52.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [LTP] [PATCH v5 3/3] ci: Add e2fsprogs package for CI test 2026-01-23 2:36 ` [LTP] [PATCH v5 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 1/3] " Wei Gao via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 2/3] ci: Add mount operation for busybox Wei Gao via ltp @ 2026-01-23 2:36 ` Wei Gao via ltp 2 siblings, 0 replies; 33+ messages in thread From: Wei Gao via ltp @ 2026-01-23 2:36 UTC (permalink / raw) To: ltp We should add e2fsprogs to ci env otherwise test cases which need tune2fs/dumpe2fs in ci will be skipped. For example following message: 2025-09-24T09:00:56.9304198Z tst_cmd.c:268: TCONF: Couldn't find 'tune2fs' in $PATH Signed-off-by: Wei Gao <wegao@suse.com> Reviewed-by: Petr Vorel <pvorel@suse.cz> Reviewed-by: Li Wang <liwang@redhat.com> --- ci/alpine.sh | 1 + ci/debian.sh | 1 + ci/fedora.sh | 1 + ci/tumbleweed.sh | 1 + 4 files changed, 4 insertions(+) diff --git a/ci/alpine.sh b/ci/alpine.sh index 254f4aaec..f3a1bf528 100755 --- a/ci/alpine.sh +++ b/ci/alpine.sh @@ -25,6 +25,7 @@ apk add \ musl-dev \ numactl-dev \ openssl-dev \ + e2fsprogs-extra \ pkgconfig cat /etc/os-release diff --git a/ci/debian.sh b/ci/debian.sh index 0445c92ec..767c9b985 100755 --- a/ci/debian.sh +++ b/ci/debian.sh @@ -33,6 +33,7 @@ pkg_minimal=" linux-libc-dev lsb-release pkg-config + e2fsprogs " pkg_nonessential=" diff --git a/ci/fedora.sh b/ci/fedora.sh index f57806ebf..f4482a1da 100755 --- a/ci/fedora.sh +++ b/ci/fedora.sh @@ -26,6 +26,7 @@ $yum \ libtirpc \ libtirpc-devel \ pkg-config \ + e2fsprogs \ redhat-lsb-core # CentOS 8 fixes diff --git a/ci/tumbleweed.sh b/ci/tumbleweed.sh index 8a30b02c2..8f23229df 100755 --- a/ci/tumbleweed.sh +++ b/ci/tumbleweed.sh @@ -30,6 +30,7 @@ while [ $i != 0 ]; do libtirpc-devel \ linux-glibc-devel \ lsb-release \ + e2fsprogs \ pkg-config ret=$? -- 2.52.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 33+ messages in thread
end of thread, other threads:[~2026-01-28 0:50 UTC | newest] Thread overview: 33+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-05-29 10:51 [LTP] [PATCH v1] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 2025-09-16 11:02 ` Petr Vorel 2025-09-24 8:42 ` [LTP] [PATCH v2] " Wei Gao via ltp 2025-10-30 20:17 ` Petr Vorel 2025-10-31 6:33 ` Wei Gao via ltp 2025-10-31 9:13 ` Petr Vorel 2025-11-01 1:20 ` [LTP] [PATCH v3 0/2] " Wei Gao via ltp 2025-11-01 1:20 ` [LTP] [PATCH v3 1/2] " Wei Gao via ltp 2025-11-11 12:06 ` Petr Vorel 2025-11-12 6:51 ` Wei Gao via ltp 2025-11-12 9:22 ` Petr Vorel 2025-11-12 10:32 ` Cyril Hrubis 2025-11-12 11:34 ` Wei Gao via ltp 2025-11-12 11:44 ` Cyril Hrubis 2025-11-12 12:14 ` Wei Gao via ltp 2025-11-12 12:21 ` Petr Vorel 2025-11-13 1:28 ` Wei Gao via ltp 2025-11-01 1:20 ` [LTP] [PATCH v3 2/2] tst_format_device.sh: Add e2fsprogs package for CI test Wei Gao via ltp 2025-11-11 12:22 ` Petr Vorel 2025-11-13 1:52 ` [LTP] [PATCH v4 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 2025-11-13 1:52 ` [LTP] [PATCH v4 1/3] " Wei Gao via ltp 2026-01-22 3:37 ` Li Wang via ltp 2026-01-22 8:02 ` Petr Vorel 2026-01-22 8:54 ` Wei Gao via ltp 2025-11-13 1:52 ` [LTP] [PATCH v4 2/3] ci: Add mount operation for busybox Wei Gao via ltp 2025-11-13 1:52 ` [LTP] [PATCH v4 3/3] ci: Add e2fsprogs package for CI test Wei Gao via ltp 2025-12-18 13:49 ` Andrea Cervesato via ltp 2025-12-18 13:51 ` Andrea Cervesato via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 0/3] tst_filesystems01.c: Add test for .filesystems Wei Gao via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 1/3] " Wei Gao via ltp 2026-01-28 0:49 ` Li Wang via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 2/3] ci: Add mount operation for busybox Wei Gao via ltp 2026-01-23 2:36 ` [LTP] [PATCH v5 3/3] ci: Add e2fsprogs package for CI test Wei Gao via ltp
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.