From: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
To: Sidong Yang <realwakka@gmail.com>
Cc: "linux-btrfs@vger.kernel.org" <linux-btrfs@vger.kernel.org>,
"fstests@vger.kernel.org" <fstests@vger.kernel.org>,
Filipe Manana <fdmanana@kernel.org>,
"dsterba@suse.cz" <dsterba@suse.cz>
Subject: Re: [PATCH] btrfs: add test for enable/disable quota and create/destroy qgroup repeatedly
Date: Wed, 2 Mar 2022 04:43:35 +0000 [thread overview]
Message-ID: <20220302044334.ojz2crbcc6eapvex@shindev> (raw)
In-Reply-To: <20220301151930.1315-1-realwakka@gmail.com>
Hi Sidong,
I tried this patch and observed that it recreates the hang and confirms the fix.
Thanks. Here's my comments for improvements.
On Mar 01, 2022 / 15:19, Sidong Yang wrote:
> Test enabling/disable quota and creating/destroying qgroup repeatedly
nit: gerund (...ing) and base form are mixed. Base form would be the better to
be same as the code comment.
> in asynchronous and confirm it does not cause kernel hang. This is a
> regression test for the problem reported to linux-btrfs list [1].
>
> The hang was recreated using the test case and fixed by kernel patch
> titled
>
> btrfs: qgroup: fix deadlock between rescan worker and remove qgroup
>
> [1] https://lore.kernel.org/linux-btrfs/20220228014340.21309-1-realwakka@gmail.com/
>
> Signed-off-by: Sidong Yang <realwakka@gmail.com>
> ---
> tests/btrfs/262 | 54 +++++++++++++++++++++++++++++++++++++++++++++
> tests/btrfs/262.out | 2 ++
> 2 files changed, 56 insertions(+)
> create mode 100755 tests/btrfs/262
> create mode 100644 tests/btrfs/262.out
>
> diff --git a/tests/btrfs/262 b/tests/btrfs/262
> new file mode 100755
> index 00000000..9be380f9
> --- /dev/null
> +++ b/tests/btrfs/262
> @@ -0,0 +1,54 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2022 YOUR NAME HERE. All Rights Reserved.
It's the better to put your name there :)
> +#
> +# FS QA Test 262
> +#
> +# Test the deadlock between qgroup and quota commands
> +#
> +. ./common/preamble
> +_begin_fstest auto qgroup
> +
> +# Import common functions.
> +. ./common/filter
> +
> +# real QA test starts here
> +
> +# Modify as appropriate.
Can we remove this comment?
> +_supported_fs btrfs
> +
> +_require_scratch
> +
> +# Run command that enable/disable quota and create/destroy qgroup asynchronously
> +qgroup_deadlock_test()
> +{
> + _scratch_mkfs > /dev/null 2>&1
> + _scratch_mount
> + echo "=== qgroup deadlock test ===" >> $seqres.full
> +
> + pids=()
> + for ((i = 0; i < 200; i++)); do
> + $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT 2>> $seqres.full &
> + pids+=($!)
> + $BTRFS_UTIL_PROG qgroup create 1/0 $SCRATCH_MNT 2>> $seqres.full &
> + pids+=($!)
> + $BTRFS_UTIL_PROG qgroup destroy 1/0 $SCRATCH_MNT 2>> $seqres.full &
> + pids+=($!)
> + $BTRFS_UTIL_PROG quota disable $SCRATCH_MNT 2>> $seqres.full &
> + pids+=($!)
Trailing tabs in the line above.
> + done
> +
> + for pid in "${pids[@]}"; do
> + wait $pid
> + done
I think simple "wait" command does what the for loop does.
> +
> + _scratch_unmount
> + _check_scratch_fs
I think _scratch_unmount and _check_scratch_fs are required only when
the test case repeats scratch mount and unmount. This test case looks
simple for me and the qgroup_deadlock_test function may not be necessary.
> +}
> +
> +qgroup_deadlock_test
> +
> +# success, all done
> +echo "Silence is golden"
> +status=0
> +exit
> diff --git a/tests/btrfs/262.out b/tests/btrfs/262.out
> new file mode 100644
> index 00000000..404badc3
> --- /dev/null
> +++ b/tests/btrfs/262.out
> @@ -0,0 +1,2 @@
> +QA output created by 262
> +Silence is golden
> --
> 2.25.1
>
--
Best Regards,
Shin'ichiro Kawasaki
next prev parent reply other threads:[~2022-03-02 4:43 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-01 15:19 [PATCH] btrfs: add test for enable/disable quota and create/destroy qgroup repeatedly Sidong Yang
2022-03-02 4:43 ` Shinichiro Kawasaki [this message]
2022-03-02 6:26 ` Sidong Yang
2022-03-02 8:24 ` Shinichiro Kawasaki
2022-03-02 13:47 ` Sidong Yang
2022-03-02 12:10 ` Filipe Manana
2022-03-02 13:43 ` Sidong Yang
2022-03-02 15:12 ` Filipe Manana
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=20220302044334.ojz2crbcc6eapvex@shindev \
--to=shinichiro.kawasaki@wdc.com \
--cc=dsterba@suse.cz \
--cc=fdmanana@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=realwakka@gmail.com \
/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.