From: Mateusz Guzik <mjguzik@gmail.com>
To: Al Viro <viro@zeniv.linux.org.uk>
Cc: Max Kellermann <max.kellermann@ionos.com>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Linux Memory Management List <linux-mm@kvack.org>,
ceph-devel@vger.kernel.org
Subject: Re: Need advice with iput() deadlock during writeback
Date: Wed, 17 Sep 2025 22:39:22 +0200 [thread overview]
Message-ID: <CAGudoHGDW9yiROidHio8Ow-yZb8uY7wMBjx94fJ7zTkL+rVAFg@mail.gmail.com> (raw)
In-Reply-To: <20250917203435.GA39973@ZenIV>
On Wed, Sep 17, 2025 at 10:34 PM Al Viro <viro@zeniv.linux.org.uk> wrote:
>
> On Wed, Sep 17, 2025 at 10:23:00PM +0200, Mateusz Guzik wrote:
>
> > This should be equivalent to some random piece of code holding onto a
> > reference for a time.
>
> As in "Busy inodes after unmount"?
>
Where I'm from (the BSD land) vnodes (the "inode" equivalent) are the
base object if you will.
If there are busy inodes and you want to unmount, it fails. If you
force an unmount, there is some shenanigans, but it ultimately waits
for inodes to disappear.
Linux has to have something of the sort for dentries, otherwise the
current fput stuff would not be safe. I find it surprising to learn
inodes are treated differently.
> > I would expect whatever unmount/other teardown would proceed after it
> > gets rid of it.
>
> Gets rid of it how, exactly?
>
In this context I mean whatever code holding onto it stopped.
> > Although for the queue at hand something can force flush it.
>
> Suppose two threads do umount() on two different filesystems. The first
> one to flush picks *everything* you've delayed and starts handling that.
> The second sees nothing to do and proceeds to taking the filesystem
> it's unmounting apart, right under the nose of the first thread doing
> work on both filesystems...
Per the above, the assumption was unmount would stall waiting for
these inodes to get processed.
next prev parent reply other threads:[~2025-09-17 20:39 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-17 8:07 Max Kellermann
2025-09-17 8:23 ` Mateusz Guzik
2025-09-17 8:38 ` Max Kellermann
2025-09-17 8:59 ` Mateusz Guzik
2025-09-17 9:20 ` Max Kellermann
2025-09-17 9:32 ` Mateusz Guzik
2025-09-17 12:48 ` Max Kellermann
2025-09-17 20:14 ` Al Viro
2025-09-17 20:19 ` Max Kellermann
2025-09-17 20:29 ` Al Viro
2025-09-17 20:32 ` Max Kellermann
2025-09-17 20:23 ` Mateusz Guzik
2025-09-17 20:34 ` Al Viro
2025-09-17 20:36 ` Max Kellermann
2025-09-17 21:10 ` Al Viro
2025-09-17 21:19 ` Max Kellermann
2025-09-17 21:20 ` Mateusz Guzik
2025-09-17 20:39 ` Mateusz Guzik [this message]
2025-09-17 21:02 ` Al Viro
2025-09-17 21:18 ` Mateusz Guzik
2025-09-17 21:42 ` Al Viro
2025-09-17 22:58 ` Mateusz Guzik
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=CAGudoHGDW9yiROidHio8Ow-yZb8uY7wMBjx94fJ7zTkL+rVAFg@mail.gmail.com \
--to=mjguzik@gmail.com \
--cc=ceph-devel@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=max.kellermann@ionos.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox