public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [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

* [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 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 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

* 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 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

* [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

* 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 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

* [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

* 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

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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox