Re: [External] : Re: [WIP RFC PATCH] fs: retire I_WILL_FREE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 3, 2025 at 5:16 PM Mateusz Guzik <mjguzik@xxxxxxxxx> wrote:
>
> On Wed, Sep 3, 2025 at 4:03 PM Mark Tinguely <mark.tinguely@xxxxxxxxxx> wrote:
> >
> > On 9/2/25 10:44 PM, Matthew Wilcox wrote:
> > > On Tue, Sep 02, 2025 at 04:54:28PM +0200, Mateusz Guzik wrote:
> > >> Following up on my response to the refcount patchset, here is a churn
> > >> patch to retire I_WILL_FREE.
> > >>
> > >> The only consumer is the drop inode routine in ocfs2.
> > >
> > > If the only consumer is ocfs2 ... then you should cc the ocfs2 people,
> > > right?
> > >
>
> Fair point, I just copy pasted the list from the patchset, too sloppy.
>
> > >> For the life of me I could not figure out if write_inode_now() is legal
> > >> to call in ->evict_inode later and have no means to test, so I devised a
> > >> hack: let the fs set I_FREEING ahead of time. Also note iput_final()
> > >> issues write_inode_now() anyway but only for the !drop case, which is the
> > >> opposite of what is being returned.
> > >>
> > >> One could further hack around it by having ocfs2 return *DON'T* drop but
> > >> also set I_DONTCACHE, which would result in both issuing the write in
> > >> iput_final() and dropping. I think the hack I did implement is cleaner.
> > >> Preferred option is ->evict_inode from ocfs handling the i/o, but per
> > >> the above I don't know how to do it.
> >
> > I am a lurker in this series and ocfs2. My history has been mostly in
> > XFS/CXFS/DMAPI. I removed the other CC entries because I did not want
> > to blast my opinion unnecessaially.
> >
>
> Hello Mark,
>
> This needs the opinion of the vfs folk though, so I'm adding some of
> the cc list back. ;)
>
> > The flushing in ocfs2_drop_inode() predates the I_DONTCACHE addition.
> > IMO, it would be safest and best to maintain to let ocfs2_drop_inode()
> > return 0 and set I_DONTCACHE and let iput_final() do the correct thing.
> >
>

wow, I'm sorry for really bad case of engrish in the mail. some of it
gets slightly corrected below.

> For now that would indeed work in the sense of providing the expected
> behavior, but there is the obvious mismatch of the filesystem claiming
> the inode should not be dropped (by returning 0) and but using a side
> indicator to drop it anyway. This looks like a split-brain scenario
> and sooner or later someone is going to complain about it when they do
> other work in iput_final(). If I was maintaining the layer I would
> reject the idea, but if the actual gatekeepers are fine with it...
>
> The absolute best thing to do long run is to move the i/o in
> ->evict_inode, but someone familiar with the APIs here would do the
> needful(tm) and that's not me.

I mean the best thing to do in the long run is to move the the write
to ->evict_inode, but I don't know how to do it and don't have any
means to test ocfs2 anyway. Hopefully the ocfs2 folk will be willing
to sort this out?

-- 
Mateusz Guzik <mjguzik gmail.com>





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux