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