From: Chris Murphy <lists@colorremedies.com>
To: Nikolay Borisov <nborisov@suse.com>
Cc: Chris Murphy <lists@colorremedies.com>, Su Yue <l@damenly.su>,
Qu Wenruo <quwenruo.btrfs@gmx.com>, Qu Wenruo <wqu@suse.com>,
Btrfs BTRFS <linux-btrfs@vger.kernel.org>
Subject: Re: 5.14.9 aarch64 OOPS Workqueue: btrfs-delalloc btrfs_work_helper
Date: Wed, 27 Oct 2021 14:22:04 -0400 [thread overview]
Message-ID: <CAJCQCtQT22cdBPZ+d03m8c_sCtdVaM_Oz705T37v2XPx26SWFg@mail.gmail.com> (raw)
In-Reply-To: <b03fb30f-3d4b-413c-0227-6655ffeba75d@suse.com>
On Tue, Oct 26, 2021 at 3:14 AM Nikolay Borisov <nborisov@suse.com> wrote:
> I think I identified a race that could cause the crash, can you apply the
> following diff and re-run the tests and leave them for a couple of days.
> Preferably apply it on 5.4.10 so that there is the highest chance to reproduce:
>
> diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c
> index 309516e6a968..a3d788dcbd34 100644
> --- a/fs/btrfs/async-thread.c
> +++ b/fs/btrfs/async-thread.c
> @@ -234,6 +234,11 @@ static void run_ordered_work(struct __btrfs_workqueue *wq,
> ordered_list);
> if (!test_bit(WORK_DONE_BIT, &work->flags))
> break;
> + /*
> + * Orders all subsequent loads after WORK_DONE_BIT, paired with
> + * the smp_mb__before_atomic in btrfs_work_helper
> + */
> + smp_rmb();
>
> /*
> * we are going to call the ordered done function, but
> @@ -317,6 +322,12 @@ static void btrfs_work_helper(struct work_struct *normal_work)
> thresh_exec_hook(wq);
> work->func(work);
> if (need_order) {
> + /*
> + * Ensures all вритес done in ->func are ordered before
> + * setting the WORK_DONE_BIT making them visible to ordered
> + * func
> + */
> + smp_mb__before_atomic();
> set_bit(WORK_DONE_BIT, &work->flags);
> run_ordered_work(wq, work);
> } else {
>
So far this appears to be working well - thanks!
https://bugzilla.redhat.com/show_bug.cgi?id=2011928#c54
--
Chris Murphy
next prev parent reply other threads:[~2021-10-27 18:22 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-12 0:59 5.14.9 aarch64 OOPS Workqueue: btrfs-delalloc btrfs_work_helper Chris Murphy
2021-10-12 5:25 ` Nikolay Borisov
2021-10-12 6:47 ` Qu Wenruo
2021-10-12 14:30 ` Chris Murphy
2021-10-12 21:24 ` Chris Murphy
2021-10-12 23:55 ` Qu Wenruo
2021-10-13 12:14 ` Chris Murphy
2021-10-13 12:18 ` Qu Wenruo
2021-10-13 12:27 ` Chris Murphy
2021-10-13 12:29 ` Nikolay Borisov
2021-10-13 12:43 ` Chris Murphy
2021-10-13 12:46 ` Nikolay Borisov
2021-10-13 12:55 ` Chris Murphy
2021-10-13 19:21 ` Chris Murphy
2021-10-18 1:57 ` Chris Murphy
2021-10-18 11:32 ` Su Yue
2021-10-18 13:28 ` Qu Wenruo
2021-10-18 14:49 ` Chris Murphy
2021-10-18 18:24 ` Chris Murphy
2021-10-19 1:24 ` Su Yue
2021-10-19 18:26 ` Chris Murphy
2021-10-19 23:42 ` Su Yue
2021-10-20 1:21 ` Qu Wenruo
2021-10-20 1:25 ` Chris Murphy
2021-10-20 23:55 ` Chris Murphy
2021-10-21 0:29 ` Su Yue
2021-10-21 0:37 ` Qu Wenruo
2021-10-21 0:46 ` Su Yue
2021-10-21 14:43 ` Chris Murphy
2021-10-21 14:48 ` Chris Murphy
2021-10-21 14:51 ` Nikolay Borisov
2021-10-21 14:55 ` Chris Murphy
2021-10-21 15:01 ` Nikolay Borisov
2021-10-21 15:06 ` Chris Murphy
2021-10-21 15:32 ` Chris Murphy
2021-10-21 18:07 ` Chris Murphy
2021-10-21 5:56 ` Nikolay Borisov
2021-10-22 2:36 ` Chris Murphy
2021-10-22 6:02 ` Nikolay Borisov
2021-10-22 6:17 ` Su Yue
2021-10-22 10:44 ` Nikolay Borisov
2021-10-22 11:43 ` Nikolay Borisov
2021-10-22 17:18 ` Chris Murphy
2021-10-23 10:09 ` Nikolay Borisov
2021-10-25 14:48 ` Chris Murphy
2021-10-25 18:34 ` Chris Murphy
2021-10-25 19:40 ` Chris Murphy
2021-10-26 7:14 ` Nikolay Borisov
2021-10-26 12:51 ` Chris Murphy
2021-10-26 13:05 ` Nikolay Borisov
2021-10-26 18:08 ` Chris Murphy
2021-10-26 18:14 ` Nikolay Borisov
2021-10-26 18:26 ` Chris Murphy
2021-10-26 18:31 ` Chris Murphy
2021-10-26 18:35 ` Nikolay Borisov
2021-10-27 18:22 ` Chris Murphy [this message]
2021-10-28 5:36 ` Nikolay Borisov
2021-11-02 14:23 ` Chris Murphy
2021-11-02 14:25 ` Nikolay Borisov
2021-11-05 16:12 ` Chris Murphy
2021-11-07 9:11 ` Nikolay Borisov
2021-10-19 1:25 ` Qu Wenruo
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=CAJCQCtQT22cdBPZ+d03m8c_sCtdVaM_Oz705T37v2XPx26SWFg@mail.gmail.com \
--to=lists@colorremedies.com \
--cc=l@damenly.su \
--cc=linux-btrfs@vger.kernel.org \
--cc=nborisov@suse.com \
--cc=quwenruo.btrfs@gmx.com \
--cc=wqu@suse.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 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).