All of lore.kernel.org
 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 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.