All of lore.kernel.org
 help / color / mirror / Atom feed
* Why doesn't disk io occur to read file system metadata despite clearing dentry and inode with drop_cache command?
@ 2019-09-11  6:27 Daegyu Han
  2019-10-17 15:32 ` Jan Kara
  0 siblings, 1 reply; 2+ messages in thread
From: Daegyu Han @ 2019-09-11  6:27 UTC (permalink / raw)
  To: linux-ext4

I am confused about "echo # >/proc/sys/vm/drop_caches" and blockdev --flushbufs.
According to OSStep book written by Remzi,If the target inodes are not
cached in memory, disk IO should be occur to readthe inode, which will
make a dentry data structure on memory.
To my knowledge, echo 3 >/proc/sys/vm/drop_caches is to drop(clear)
page cahche, inodes and dentry. I have experimented with blktrace to
figure out whether disk io is really occurring to read the inode.

1. echo 3 > /proc/sys/vm/drop_caches
However, there is no disk io to read inode. I can only see the disk io
to read 16KB data block.
2. echo 3 > /proc/sys/vm/drop_caches` and `blockdev --flushbufs
/dev/nvme0n1I found block access (+8(512*8=4KB)) to read inode.

A quick look at how blockdev --flushbufs works in the kernel code
shows that it clears the superblock.
Why doesn't disk io occur to read inodes with drop_cache alone?
The kernel book called ULK says that inodes and superblocks are cached
in buffer-cache.Is this the reason for this?
I infer as follows:Is the buffer_head data structure not flushed to
disk by drop_cache alone because the storage device is still mapped in
memory?

Thank you

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Why doesn't disk io occur to read file system metadata despite clearing dentry and inode with drop_cache command?
  2019-09-11  6:27 Why doesn't disk io occur to read file system metadata despite clearing dentry and inode with drop_cache command? Daegyu Han
@ 2019-10-17 15:32 ` Jan Kara
  0 siblings, 0 replies; 2+ messages in thread
From: Jan Kara @ 2019-10-17 15:32 UTC (permalink / raw)
  To: Daegyu Han; +Cc: linux-ext4

Hello,

On Wed 11-09-19 15:27:07, Daegyu Han wrote:
> I am confused about "echo # >/proc/sys/vm/drop_caches" and blockdev
> --flushbufs.  According to OSStep book written by Remzi,If the target
> inodes are not cached in memory, disk IO should be occur to readthe
> inode, which will make a dentry data structure on memory.  To my
> knowledge, echo 3 >/proc/sys/vm/drop_caches is to drop(clear) page
> cahche, inodes and dentry. I have experimented with blktrace to figure
> out whether disk io is really occurring to read the inode.
> 
> 1. echo 3 > /proc/sys/vm/drop_caches
> However, there is no disk io to read inode. I can only see the disk io
> to read 16KB data block.
> 2. echo 3 > /proc/sys/vm/drop_caches` and `blockdev --flushbufs
> /dev/nvme0n1I found block access (+8(512*8=4KB)) to read inode.
> 
> A quick look at how blockdev --flushbufs works in the kernel code shows
> that it clears the superblock.  Why doesn't disk io occur to read inodes
> with drop_cache alone?  The kernel book called ULK says that inodes and
> superblocks are cached in buffer-cache.Is this the reason for this?  I
> infer as follows:Is the buffer_head data structure not flushed to disk by
> drop_cache alone because the storage device is still mapped in memory?

Yes, I guess that's what happened. Note that drop_caches drop only clean
and unreferenced inodes, dentries & page cache. So if the inode is dirty
(e.g. due to atime update pending), drop caches won't free it. Another
effect may be that something (e.g. the jbd2 journal) holds onto the buffer
caching the inode table block with the inode.

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-10-17 15:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-11  6:27 Why doesn't disk io occur to read file system metadata despite clearing dentry and inode with drop_cache command? Daegyu Han
2019-10-17 15:32 ` Jan Kara

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.