From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-stable@nongnu.org, "Alex Bennée" <alex.bennee@linaro.org>
Subject: Re: [PATCH] tests/tcg/multiarch/linux/linux-test: Don't try to test atime update
Date: Thu, 16 Oct 2025 11:41:43 +0100 [thread overview]
Message-ID: <CAFEAcA_KzHLCV4GsHWAKSN-p6018HGLCCFuPZNOia4B_+oWDRw@mail.gmail.com> (raw)
In-Reply-To: <20251010121435.3885228-1-peter.maydell@linaro.org>
Ping for review?
thanks
-- PMM
On Fri, 10 Oct 2025 at 13:14, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> The linux-test test includes an attempt to check the utime and stat
> syscalls by setting the atime and mtime of a file to specific values,
> and then calling stat() to check that the values read back correctly.
>
> Unfortunately this is flaky, as it will fail if some other process
> (for instance a virus scanner, backup program, etc) gets in and reads
> the file between the utime() and stat() call, resulting in a host
> syscall sequence like this:
>
> utimensat(AT_FDCWD, "file2",
> [{tv_sec=1001, tv_nsec=0} /* 1970-01-01T01:16:41+0100 */,
> {tv_sec=1000, tv_nsec=0} /* 1970-01-01T01:16:40+0100 */], 0) = 0
> # successfully set atime to 1001 and mtime to 1000
> statx(AT_FDCWD, "file2", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT,
> STATX_BASIC_STATS,
> {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID,
> stx_blksize=4096, stx_attributes=0, stx_nlink=1, stx_uid=32808,
> stx_gid=32808, stx_mode=S_IFREG|0600, stx_ino=21659016,
> stx_size=100, stx_blocks=8,
> stx_attributes_mask=STATX_ATTR_COMPRESSED|STATX_ATTR_IMMUTABLE|
> STATX_ATTR_APPEND|STATX_ATTR_NODUMP|STATX_ATTR_ENCRYPTED|
> STATX_ATTR_AUTOMOUNT|STATX_ATTR_MOUNT_ROOT|STATX_ATTR_VERITY|
> STATX_ATTR_DAX,
> stx_atime={tv_sec=1760091862, tv_nsec=63509009} /* 2025-10-10T11:24:22.063509009+0100 */,
> stx_ctime={tv_sec=1760091862, tv_nsec=63509009} /* 2025-10-10T11:24:22.063509009+0100 */,
> stx_mtime={tv_sec=1000, tv_nsec=0} /* 1970-01-01T01:16:40+0100 */,
> stx_rdev_major=0, stx_rdev_minor=0, stx_dev_major=252,
> stx_dev_minor=0, stx_mnt_id=0x1f}) = 0
> # but when we statx the file, we get back an mtime of 1000
> # but an atime corresponding to when the other process read it
>
> and which will cause the test program to fail with the error
> message "stat time".
>
> In theory we could defend against this by e.g. operating on files in
> a dummy loopback mount filesystem which we mounted as 'noatime', but
> this isn't worth the hassle. Just drop the check on atime.
>
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> The failure happens to me occasionally on my local system.
> ---
> tests/tcg/multiarch/linux/linux-test.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/tests/tcg/multiarch/linux/linux-test.c b/tests/tcg/multiarch/linux/linux-test.c
> index 64f57cb287e..bf6e0fda262 100644
> --- a/tests/tcg/multiarch/linux/linux-test.c
> +++ b/tests/tcg/multiarch/linux/linux-test.c
> @@ -155,9 +155,14 @@ static void test_file(void)
> error("stat mode");
> if ((st.st_mode & 0777) != 0600)
> error("stat mode2");
> - if (st.st_atime != 1001 ||
> - st.st_mtime != 1000)
> + /*
> + * Only check mtime, not atime: other processes such as
> + * virus scanners might race with this test program and get
> + * in and update the atime, causing random failures.
> + */
> + if (st.st_mtime != 1000) {
> error("stat time");
> + }
>
> chk_error(stat(tmpdir, &st));
> if (!S_ISDIR(st.st_mode))
> --
> 2.43.0
next prev parent reply other threads:[~2025-10-16 10:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-10 12:14 [PATCH] tests/tcg/multiarch/linux/linux-test: Don't try to test atime update Peter Maydell
2025-10-16 10:41 ` Peter Maydell [this message]
2025-10-16 12:08 ` Thomas Huth
2025-10-16 12:11 ` Peter Maydell
2025-10-16 14:34 ` Alex Bennée
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=CAFEAcA_KzHLCV4GsHWAKSN-p6018HGLCCFuPZNOia4B_+oWDRw@mail.gmail.com \
--to=peter.maydell@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.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;
as well as URLs for NNTP newsgroup(s).