All of lore.kernel.org
 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 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.