From: Matthew Wilcox <willy@infradead.org>
To: Dave Chinner <david@fromorbit.com>
Cc: Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
Jeff Layton <jlayton@kernel.org>,
linux-kernel@vger.kernel.org, David Howells <dhowells@redhat.com>,
Alexander Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel@vger.kernel.org, netfs@lists.linux.dev,
linux-erofs@lists.ozlabs.org
Subject: Re: [PATCH] vfs: Fix potential circular locking through setxattr() and removexattr()
Date: Wed, 24 Jul 2024 03:42:19 +0100 [thread overview]
Message-ID: <ZqBqCwuUtD1guNsC@casper.infradead.org> (raw)
In-Reply-To: <ZqBaQS7IUTsU3ePs@dread.disaster.area>
On Wed, Jul 24, 2024 at 11:34:57AM +1000, Dave Chinner wrote:
> This is to prevent the deadlocks on upper->lower->upper and
> lower->upper->lower filesystem recursion via GFP_KERNEL memory
> allocation and reclaim recursing between the two filesystems. This
> is especially relevant for filesystems with ->writepage methods that
> can be called from direct reclaim. Hence allocations in this path
> need to be at least NOFS to prevent recursion back into the upper
> filesystem from writeback into the lower filesystem.
FYI, we're making good progress on removing ->writepage.
$ git grep '\.writepage\>.*='
fs/ceph/addr.c: .writepage = ceph_writepage,
fs/ecryptfs/mmap.c: .writepage = ecryptfs_writepage,
fs/f2fs/checkpoint.c: .writepage = f2fs_write_meta_page,
fs/f2fs/data.c: .writepage = f2fs_write_data_page,
fs/f2fs/node.c: .writepage = f2fs_write_node_page,
fs/gfs2/aops.c: .writepage = gfs2_jdata_writepage,
fs/gfs2/meta_io.c: .writepage = gfs2_aspace_writepage,
fs/gfs2/meta_io.c: .writepage = gfs2_aspace_writepage,
fs/hostfs/hostfs_kern.c: .writepage = hostfs_writepage,
fs/nilfs2/inode.c: .writepage = nilfs_writepage,
fs/nilfs2/mdt.c: .writepage = nilfs_mdt_write_page,
fs/orangefs/inode.c: .writepage = orangefs_writepage,
fs/vboxsf/file.c: .writepage = vboxsf_writepage,
mm/shmem.c: .writepage = shmem_writepage,
mm/swap_state.c: .writepage = swap_writepage,
so mostly just the usual stragglers. I sent a series to fix up gfs2
earlier this week:
https://lore.kernel.org/linux-fsdevel/20240719175105.788253-1-willy@infradead.org/
WARNING: multiple messages have this Message-ID (diff)
From: Matthew Wilcox <willy@infradead.org>
To: Dave Chinner <david@fromorbit.com>
Cc: Jan Kara <jack@suse.cz>, David Howells <dhowells@redhat.com>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>,
Jeff Layton <jlayton@kernel.org>, Gao Xiang <xiang@kernel.org>,
netfs@lists.linux.dev, linux-erofs@lists.ozlabs.org,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] vfs: Fix potential circular locking through setxattr() and removexattr()
Date: Wed, 24 Jul 2024 03:42:19 +0100 [thread overview]
Message-ID: <ZqBqCwuUtD1guNsC@casper.infradead.org> (raw)
In-Reply-To: <ZqBaQS7IUTsU3ePs@dread.disaster.area>
On Wed, Jul 24, 2024 at 11:34:57AM +1000, Dave Chinner wrote:
> This is to prevent the deadlocks on upper->lower->upper and
> lower->upper->lower filesystem recursion via GFP_KERNEL memory
> allocation and reclaim recursing between the two filesystems. This
> is especially relevant for filesystems with ->writepage methods that
> can be called from direct reclaim. Hence allocations in this path
> need to be at least NOFS to prevent recursion back into the upper
> filesystem from writeback into the lower filesystem.
FYI, we're making good progress on removing ->writepage.
$ git grep '\.writepage\>.*='
fs/ceph/addr.c: .writepage = ceph_writepage,
fs/ecryptfs/mmap.c: .writepage = ecryptfs_writepage,
fs/f2fs/checkpoint.c: .writepage = f2fs_write_meta_page,
fs/f2fs/data.c: .writepage = f2fs_write_data_page,
fs/f2fs/node.c: .writepage = f2fs_write_node_page,
fs/gfs2/aops.c: .writepage = gfs2_jdata_writepage,
fs/gfs2/meta_io.c: .writepage = gfs2_aspace_writepage,
fs/gfs2/meta_io.c: .writepage = gfs2_aspace_writepage,
fs/hostfs/hostfs_kern.c: .writepage = hostfs_writepage,
fs/nilfs2/inode.c: .writepage = nilfs_writepage,
fs/nilfs2/mdt.c: .writepage = nilfs_mdt_write_page,
fs/orangefs/inode.c: .writepage = orangefs_writepage,
fs/vboxsf/file.c: .writepage = vboxsf_writepage,
mm/shmem.c: .writepage = shmem_writepage,
mm/swap_state.c: .writepage = swap_writepage,
so mostly just the usual stragglers. I sent a series to fix up gfs2
earlier this week:
https://lore.kernel.org/linux-fsdevel/20240719175105.788253-1-willy@infradead.org/
next prev parent reply other threads:[~2024-07-24 2:42 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-23 8:59 [PATCH] vfs: Fix potential circular locking through setxattr() and removexattr() David Howells
2024-07-23 8:59 ` David Howells
2024-07-23 10:45 ` Jan Kara
2024-07-23 10:45 ` Jan Kara
2024-07-23 11:11 ` Christian Brauner
2024-07-23 11:11 ` Christian Brauner
2024-07-23 12:32 ` Jan Kara
2024-07-23 12:32 ` Jan Kara
2024-07-23 13:57 ` David Howells
2024-07-23 13:57 ` David Howells
2024-07-23 15:40 ` Christian Brauner
2024-07-23 15:40 ` Christian Brauner
2024-07-24 13:30 ` Jan Kara
2024-07-24 13:30 ` Jan Kara
2024-07-29 15:28 ` Christian Brauner
2024-07-29 15:28 ` Christian Brauner
2024-07-31 18:16 ` Jan Kara
2024-07-31 18:16 ` Jan Kara
2024-07-31 18:27 ` Matthew Wilcox
2024-07-31 18:27 ` Matthew Wilcox
2024-07-31 18:55 ` Jan Kara
2024-07-31 18:55 ` Jan Kara
2024-07-24 1:34 ` Dave Chinner via Linux-erofs
2024-07-24 1:34 ` Dave Chinner
2024-07-24 2:42 ` Matthew Wilcox [this message]
2024-07-24 2:42 ` Matthew Wilcox
2024-07-23 12:57 ` Jan Kara
2024-07-23 12:57 ` Jan Kara
2024-07-24 8:11 ` David Howells
2024-07-24 8:11 ` David Howells
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=ZqBqCwuUtD1guNsC@casper.infradead.org \
--to=willy@infradead.org \
--cc=brauner@kernel.org \
--cc=david@fromorbit.com \
--cc=dhowells@redhat.com \
--cc=jack@suse.cz \
--cc=jlayton@kernel.org \
--cc=linux-erofs@lists.ozlabs.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netfs@lists.linux.dev \
--cc=viro@zeniv.linux.org.uk \
/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.