From: fdmanana@kernel.org
To: linux-btrfs@vger.kernel.org
Cc: josef@toxicpanda.com, Filipe Manana <fdmanana@suse.com>
Subject: [PATCH 0/2] btrfs: fix races between clone, fallocate and memory mapped writes
Date: Mon, 14 Dec 2020 09:56:40 +0000 [thread overview]
Message-ID: <cover.1607939569.git.fdmanana@suse.com> (raw)
From: Filipe Manana <fdmanana@suse.com>
For a very long time there's been a race between clone/dedupe and memory
mapped writes as well as between fallocate and memory mapped writes. For
both cases the consequence of the race is that it can makes us deadlock
when we are low on available metadata space, since clone/dedupe/fallocate
start a transaction while holding file ranges locked, and allocating the
metadata can result in the async reclaim task to flush the inodes being
used by clone/dedupe/fallocate, if a memory mapped write happened before
we locked the file ranges.
For the dedupe case, Josef's recent fix [1] ("btrfs: fix race between dedupe
and mmap") happens to fix this deadlock problem as well. The first patch
in this patchset fixes the issue for both clone and dedupe, as it's centered
on the shared extent locking function, and it is independent of Josef's fix
(works both with and without that fix).
[1] https://lore.kernel.org/linux-btrfs/afdc2109f83fff1a925d7a66a6a047d4400721d4.1607724668.git.josef@toxicpanda.com/
Filipe Manana (2):
btrfs: fix race between cloning and memory mapped writes leading to
deadlock
btrfs: fix race between fallocate and memory mapped writes leading to
deadlock
fs/btrfs/extent_io.c | 2 +-
fs/btrfs/file.c | 38 +++++---------------------------
fs/btrfs/inode.c | 4 ++--
fs/btrfs/ordered-data.c | 48 ++++++++++++++++++++++++++++++++---------
fs/btrfs/ordered-data.h | 6 +++---
fs/btrfs/reflink.c | 28 ++++++++++++++++++------
6 files changed, 71 insertions(+), 55 deletions(-)
--
2.28.0
next reply other threads:[~2020-12-14 9:57 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-14 9:56 fdmanana [this message]
2020-12-14 9:56 ` [PATCH 1/2] btrfs: fix race between cloning and memory mapped writes leading to deadlock fdmanana
2020-12-14 9:56 ` [PATCH 2/2] btrfs: fix race between fallocate " fdmanana
2020-12-17 15:02 ` [PATCH 0/2] btrfs: fix races between clone, fallocate and memory mapped writes David Sterba
2020-12-17 15:11 ` Filipe Manana
2020-12-17 16:10 ` David Sterba
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=cover.1607939569.git.fdmanana@suse.com \
--to=fdmanana@kernel.org \
--cc=fdmanana@suse.com \
--cc=josef@toxicpanda.com \
--cc=linux-btrfs@vger.kernel.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