public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
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

  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