From: Josef Bacik <josef@redhat.com>
To: Mitch Harder <mitch.harder@sabayonlinux.org>
Cc: miaox@cn.fujitsu.com, Chris Mason <chris.mason@oracle.com>,
Linux Btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: [PATCH 2/2] btrfs: fix deadlock when doing reservation
Date: Thu, 16 Jun 2011 10:52:14 -0400 [thread overview]
Message-ID: <4DFA189E.8020606@redhat.com> (raw)
In-Reply-To: <BANLkTikPyw1tFcXvF9+eKWXjJdSYTxWU5A@mail.gmail.com>
On 06/16/2011 10:36 AM, Mitch Harder wrote:
> 2011/6/15 Josef Bacik <josef@redhat.com>:
>> On 06/15/2011 06:47 AM, Miao Xie wrote:
>>> The following deadlock may happen when doing reservation for metadata:
>>>
>>> Task0 Flush thread Task1
>>> start_transaction()
>>> shrink_delalloc()
>>> writeback_inodes_sb_nr()
>>> wait for flush thread
>>> end.
>>> btrfs_writepages()
>>> cow_file_range()
>>> btrfs_commit_transaction
>>> wait num_writer == 1
>>> (wait Task0 end
>>> transaction)
>>> start_transaction()
>>> wait trans commit
>>> end
>>>
>>> Task0 -> Flush thread -> Task1 -> Task0
>>>
>>> Fix the above deadlock by doing reservation before the trans handle has
>>> been joined into the transaction.
>>>
>>> Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
>>
>> I've already taken care of this in
>>
>> [PATCH 1/2] Btrfs: do transaction space reservation before joining the
>> transaction
>>
>> Thanks,
>>
>> Josef
>
> I've been trying to run down an issue with btrfs freezing with the
> 3.0_rc btrfs patch set. I've found a test case that repeatably
> freezes up on my system, and have been surveying the patches on the
> list to see if the issue has already been resolved.
>
> I've been successful in addressing the deadlock by applying Miao Xie's
> patches (I've tested with both "[1/2] btrfs: fix wrong reservation
> when doing delayed inode operations" and "[2/2] btrfs: fix deadlock
> when doing reservation").
>
> I've only been partially successful in running my test case with Josef
> Bacik's patches (the deadlock is cleared; however, now I'm running
> into a premature ENOSPC).
>
> When evaluating Josef's patches, I've applied:
> Btrfs: account for space reservations properly V2
> Btrfs: fix btrfs_update_reserved_bytes usage
> [1/2] Btrfs: do transaction space reservation before joining the transaction
> [2/2] Btrfs: serialize flushers in reserve_metadata_bytes
>
So drop those first 2, they are wrong and why they are giving you early
enospc. The last two are what you want and should fix your deadlock.
Thanks,
JOsef
next prev parent reply other threads:[~2011-06-16 14:52 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-15 10:47 [PATCH 2/2] btrfs: fix deadlock when doing reservation Miao Xie
2011-06-15 13:44 ` Josef Bacik
2011-06-16 14:36 ` Mitch Harder
2011-06-16 14:52 ` Josef Bacik [this message]
2011-06-16 17:17 ` Mitch Harder
2011-06-16 17:17 ` Josef Bacik
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=4DFA189E.8020606@redhat.com \
--to=josef@redhat.com \
--cc=chris.mason@oracle.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=miaox@cn.fujitsu.com \
--cc=mitch.harder@sabayonlinux.org \
/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).