On Tue, Apr 21, 2020 at 01:25:19PM -0700, Darrick J. Wong wrote: > On Tue, Apr 21, 2020 at 12:17:51PM -0700, ira.weiny@xxxxxxxxx wrote: > > From: Ira Weiny <ira.weiny@xxxxxxxxx> > > > > DCACHE_DONTCACHE indicates a dentry should not be cached on final > > dput(). > > > > Also add a helper function to mark DCACHE_DONTCACHE on all dentries > > pointing to a specific inode when that inode is being set I_DONTCACHE. > > > > This facilitates dropping dentry references to inodes sooner which > > require eviction to swap S_DAX mode. > > > > Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > > Signed-off-by: Ira Weiny <ira.weiny@xxxxxxxxx> > > > > --- [snip] > > diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c > > index de76f7f60695..3c8f44477804 100644 > > --- a/fs/xfs/xfs_icache.c > > +++ b/fs/xfs/xfs_icache.c > > @@ -559,7 +559,7 @@ xfs_iget_cache_miss( > > */ > > iflags = XFS_INEW; > > if (flags & XFS_IGET_DONTCACHE) > > - VFS_I(ip)->i_state |= I_DONTCACHE; > > + mark_inode_dontcache(VFS_I(ip)); > > ip->i_udquot = NULL; > > ip->i_gdquot = NULL; > > ip->i_pdquot = NULL; > > diff --git a/include/linux/dcache.h b/include/linux/dcache.h > > index c1488cc84fd9..56b1482d9223 100644 > > --- a/include/linux/dcache.h > > +++ b/include/linux/dcache.h > > @@ -177,6 +177,8 @@ struct dentry_operations { > > > > #define DCACHE_REFERENCED 0x00000040 /* Recently used, don't discard. */ > > > > +#define DCACHE_DONTCACHE 0x00000080 /* don't cache on final dput() */ > > "Purge from memory on final dput()"? Sounds good to me, Ira > > --D >