On Wed, Oct 02, 2019 at 05:30:21PM +0900, Daegyu Han wrote: > Hi linux file system experts, > > I'm so sorry that I've asked again the general question about Linux > file systems. > > For example, if there is a file a.txt in the path /foo/ bar, > what should I do to completely evict(remove) the inode of bar > directory from memory and read the inode via disk access? > > A few weeks ago. I asked a question about dentry and Ted told me that > there is a negative dentry on Linux. > > I tried to completely evict(remove) the dentry cache using FS API in > include/fs.h and dcache.h, and also evict the inode from memory, but I > failed. > > The FS API I used is: > dput() // to drop usage count and remove from dentry cache > iput() // to drop usage count and remove from inode cache. > > To be honest, I'm confused about which API to cope with my question. > > As far as I know, even though metadata is released from the file > system cache, it is managed as an LRU list. > > I also saw some code related to CPU cacheline. > When I look at the superblock structure, there are also inodes, dcache > lists, and LRUs. > > How can I completely evict the inode from memory and make disk access > as mentioned above? In general you simply can't. Not if there is anyone who'd opened the file in question. As long as the sucker is opened, struct inode *WILL* remain in memory. What are you trying to achieve?