From: Zorro Lang via ltp <ltp@lists.linux.it>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v2] syscalls/stat04&lstat03: remove fs block size related code
Date: Fri, 14 Nov 2025 00:22:17 +0800 [thread overview]
Message-ID: <20251113162217.1077332-1-zlang@kernel.org> (raw)
The st_blksize isn't equivalent to the filesystem block size. The
stat(3) manual describe st_blksize as:
"This field gives the "preferred" block size for efficient filesystem I/O."
So the st_blksize is the "preferred" block size for "efficient" fs
I/O, extN might think the "preferred" block size is fs block size.
But not all filesystems think same with extN. For example, xfs thinks
the "preferred" block size is:
max_t(uint32_t, PAGE_SIZE, mp->m_sb.sb_blocksize)
So you might get st_blksize=4096, no matter on 1k blocksize xfs or 4k
blocksize xfs. We shouldn't expect to use a different blocksize mkfs
option to get a different st_blksize. This part of code is useless,
except causing unexpected test failures on other filesystems (e.g.
xfs, btrfs and so on).
Signed-off-by: Zorro Lang <zlang@kernel.org>
---
Hi,
I tried to fix the mkfs problem last year:
https://lists.linux.it/pipermail/ltp/2024-December/041038.html
Now I got a chance to look back this test failure, I think it's not a mkfs
option problem, but the test case misunderstood the st_blksize.
Except we limit this test only run on extN, or we don't need to make
fs with a different block size, especially shouldn't expect to get
a different st_blksize from that.
Thanks,
Zorro
testcases/kernel/syscalls/lstat/lstat03.c | 12 +-----------
testcases/kernel/syscalls/stat/stat04.c | 11 +----------
2 files changed, 2 insertions(+), 21 deletions(-)
diff --git a/testcases/kernel/syscalls/lstat/lstat03.c b/testcases/kernel/syscalls/lstat/lstat03.c
index 9438e2920..7d9d01ad1 100644
--- a/testcases/kernel/syscalls/lstat/lstat03.c
+++ b/testcases/kernel/syscalls/lstat/lstat03.c
@@ -34,7 +34,6 @@ static void run(void)
TST_EXP_EXPR(file_stat->st_gid != symb_stat->st_gid);
TST_EXP_EXPR(file_stat->st_size != symb_stat->st_size);
TST_EXP_EXPR(file_stat->st_blocks != symb_stat->st_blocks);
- TST_EXP_EXPR(file_stat->st_blksize != symb_stat->st_blksize);
TST_EXP_EXPR(file_stat->st_atime != symb_stat->st_atime);
TST_EXP_EXPR(file_stat->st_mtime != symb_stat->st_mtime);
TST_EXP_EXPR(file_stat->st_ctime != symb_stat->st_ctime);
@@ -42,18 +41,9 @@ static void run(void)
static void setup(void)
{
- char opt_bsize[32];
- const char *const fs_opts[] = {opt_bsize, NULL};
- struct stat sb;
- int pagesize;
int fd;
- /* change st_blksize / st_dev */
- SAFE_STAT(".", &sb);
- pagesize = sb.st_blksize == 4096 ? 1024 : 4096;
-
- snprintf(opt_bsize, sizeof(opt_bsize), "-b %i", pagesize);
- SAFE_MKFS(tst_device->dev, tst_device->fs_type, fs_opts, NULL);
+ SAFE_MKFS(tst_device->dev, tst_device->fs_type, NULL, NULL);
SAFE_MOUNT(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, 0);
SAFE_TOUCH(FILENAME, 0777, NULL);
diff --git a/testcases/kernel/syscalls/stat/stat04.c b/testcases/kernel/syscalls/stat/stat04.c
index 09a9a6823..3c233df51 100644
--- a/testcases/kernel/syscalls/stat/stat04.c
+++ b/testcases/kernel/syscalls/stat/stat04.c
@@ -41,21 +41,12 @@ static void run(void)
static void setup(void)
{
- char opt_bsize[32];
- const char *const fs_opts[] = {opt_bsize, NULL};
- struct stat sb;
- int pagesize;
int fd;
file_path = tst_tmpdir_genpath(FILENAME);
symb_path = tst_tmpdir_genpath(SYMBNAME);
- /* change st_blksize / st_dev */
- SAFE_STAT(".", &sb);
- pagesize = sb.st_blksize == 4096 ? 1024 : 4096;
-
- snprintf(opt_bsize, sizeof(opt_bsize), "-b %i", pagesize);
- SAFE_MKFS(tst_device->dev, tst_device->fs_type, fs_opts, NULL);
+ SAFE_MKFS(tst_device->dev, tst_device->fs_type, NULL, NULL);
SAFE_MOUNT(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, 0);
SAFE_TOUCH(FILENAME, 0777, NULL);
--
2.51.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next reply other threads:[~2025-11-13 16:22 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-13 16:22 Zorro Lang via ltp [this message]
2025-12-18 13:36 ` [LTP] [PATCH v2] syscalls/stat04&lstat03: remove fs block size related code Andrea Cervesato via ltp
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251113162217.1077332-1-zlang@kernel.org \
--to=ltp@lists.linux.it \
--cc=zlang@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.