From: Cyril Hrubis <chrubis@suse.cz>
To: Martin Doucha <mdoucha@suse.cz>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH] syscalls: Check for leftover partition info in loopdev ioctl tests
Date: Mon, 25 Apr 2022 17:21:39 +0200 [thread overview]
Message-ID: <Yma8g4NUSRAIvMAW@yuki> (raw)
In-Reply-To: <20220406110837.14773-1-mdoucha@suse.cz>
Hi!
> Due to a kernel bug, successful ioctl09 and ioctl_loop01 test runs
> sometimes leave behind stale partition info on the loop device they used,
> which then causes mkfs.vfat to fail in later tests. Check that partition
> info was properly removed in cleanup.
>
> Signed-off-by: Martin Doucha <mdoucha@suse.cz>
> ---
>
> This does not fix the mkfs.vfat failures but it makes the true cause visible.
> We could add a workaround for the mkfs.vfat failures by simply initializing
> the loop device with the LO_FLAGS_PARTSCAN flag by default, or at least when
> stale partition info is found by tst_find_free_loopdev().
I guess that it would be cleaner to put the stale partition info
detection into the loop library. We can print a warning there and then
do the workaround.
Also do we want to add a regression test for the stale partition info?
Should be easy enough. Or at least add the hash of the kernel commit
that fixed it to the ioctl tests?
> testcases/kernel/syscalls/ioctl/ioctl09.c | 12 +++++++++++-
> testcases/kernel/syscalls/ioctl/ioctl_loop01.c | 6 ++++++
> 2 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/testcases/kernel/syscalls/ioctl/ioctl09.c b/testcases/kernel/syscalls/ioctl/ioctl09.c
> index 9728ecb9c..09867a5c5 100644
> --- a/testcases/kernel/syscalls/ioctl/ioctl09.c
> +++ b/testcases/kernel/syscalls/ioctl/ioctl09.c
> @@ -19,7 +19,7 @@
> ({ value ? TST_RETVAL_EQ0(x) : TST_RETVAL_NOTNULL(x); })
>
> static char dev_path[1024];
> -static int dev_num, attach_flag, dev_fd;
> +static int dev_num = -1, attach_flag, dev_fd;
> static char loop_partpath[1026], sys_loop_partpath[1026];
>
> static void change_partition(const char *const cmd[])
> @@ -102,6 +102,16 @@ static void cleanup(void)
> SAFE_CLOSE(dev_fd);
> if (attach_flag)
> tst_detach_device(dev_path);
> +
> + if (dev_num < 0)
> + return;
> +
> + sprintf(sys_loop_partpath, "/sys/block/loop%d/loop%dp1", dev_num,
> + dev_num);
> + sprintf(loop_partpath, "%sp1", dev_path);
> +
> + if (!access(sys_loop_partpath, F_OK) || !access(loop_partpath, F_OK))
> + tst_res(TWARN, "Partition info was not cleared from loop dev");
> }
>
> static struct tst_test test = {
> diff --git a/testcases/kernel/syscalls/ioctl/ioctl_loop01.c b/testcases/kernel/syscalls/ioctl/ioctl_loop01.c
> index 734d803d5..17168ae04 100644
> --- a/testcases/kernel/syscalls/ioctl/ioctl_loop01.c
> +++ b/testcases/kernel/syscalls/ioctl/ioctl_loop01.c
> @@ -135,6 +135,12 @@ static void cleanup(void)
> SAFE_CLOSE(dev_fd);
> if (attach_flag)
> tst_detach_device(dev_path);
> +
> + if (!*sys_loop_partpath || !*loop_partpath)
> + return;
> +
> + if (!access(sys_loop_partpath, F_OK) || !access(loop_partpath, F_OK))
> + tst_res(TWARN, "Partition info was not cleared from loop dev");
> }
>
> static struct tst_test test = {
> --
> 2.35.1
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
--
Cyril Hrubis
chrubis@suse.cz
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2022-04-25 15:19 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-06 11:08 [LTP] [PATCH] syscalls: Check for leftover partition info in loopdev ioctl tests Martin Doucha
2022-04-19 7:09 ` Petr Vorel
2022-04-25 15:21 ` Cyril Hrubis [this message]
2022-04-26 16:14 ` Martin Doucha
2022-10-10 10:29 ` Richard Palethorpe
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=Yma8g4NUSRAIvMAW@yuki \
--to=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
--cc=mdoucha@suse.cz \
/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