From: Al Viro <viro@ZenIV.linux.org.uk>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 4/4] fs: kill I_WILL_FREE
Date: Tue, 26 Oct 2010 20:18:28 +0100 [thread overview]
Message-ID: <20101026191828.GZ19804@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20101024174058.GD2718@lst.de>
On Sun, Oct 24, 2010 at 07:40:58PM +0200, Christoph Hellwig wrote:
> - writeback_single_inode skips all list manipulations for I_FREEING,
> but not for I_WILL_FREE. We don't care about which list an
> I_WILL_FREE inode is on, because we will remove it from the list
> a little bit later.
> - __mark_inode_dirty skips I_FREEING inodes but not I_WILL_FREE
> inodes. This only matters for filesystem that re-dirty the inode
> during writeback and then use the I_DIRTY flags inside ->evict_inode.
> The formers is done by XFS, but it uses it's internal state to flush
> the inode. I could not find any filesystem that looks at I_DIRTY
> inside ->evict_inode either.
>
> Besides cleaning up the code removing I_WILL_FREE will allow us to
> avoid one i_lock roundtrip once inode_lock is split and keep iput_final
> more logic. This includes removing the __remove_inode_hash call in
> iput_final, given that we never drop the protection from lookups now
> that I_FREEING is set earlier.
The thing is, the code is really brittle in that area. What we rely upon
is
* due to sync_filesystem() done just before there won't be anything
dirty during invalidate_inodes() (OK, evict_inodes() now) run.
* for final iput done during ->put_super() we won't redirty the
inode. Note that we used to loop in write_one_inode() until the sucker
got clean. Not anymore (since 2002 or so).
* XFS does redirty, but then it does explicit write of those guys
itself (from ->put_super()).
Let's leave that alone for now; I remember quite well how much PITA has
that area caused us in the past (my fuckup in 2.4.15, etc.) and I'd rather
not mix revisiting that fun place with other non-trivial work.
next prev parent reply other threads:[~2010-10-26 19:18 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-24 17:40 [PATCH 1/4] fs: do not drop inode_lock in dispose_list Christoph Hellwig
2010-10-24 17:40 ` [PATCH 2/4] fs: fold invalidate_list into invalidate_inodes Christoph Hellwig
2010-10-24 21:45 ` Christian Stroetmann
2010-10-24 17:40 ` [PATCH 3/4] fs: skip I_FREEING inodes in writeback_sb_inodes Christoph Hellwig
2010-10-24 21:46 ` Christian Stroetmann
2010-10-24 17:40 ` [PATCH 4/4] fs: kill I_WILL_FREE Christoph Hellwig
2010-10-24 21:46 ` Christian Stroetmann
2010-10-24 21:50 ` Christian Stroetmann
2010-10-26 1:28 ` Al Viro
2010-10-26 19:18 ` Al Viro [this message]
2010-10-25 5:33 ` [PATCH 1/4] fs: do not drop inode_lock in dispose_list Dave Chinner
2010-10-25 5:46 ` Dave Chinner
2010-10-25 9:20 ` Dave Chinner
2010-10-25 10:07 ` Christoph Hellwig
2010-10-25 23:07 ` Dave Chinner
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=20101026191828.GZ19804@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=hch@lst.de \
--cc=linux-fsdevel@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;
as well as URLs for NNTP newsgroup(s).