flowchart TD
A[inode_inc_dirty_pages]-->B[atomic_inc]
C[inode_dec_dirty_pages]-->D[atomic_dec]
E[get_dirty_pages]-->F[atomic_read]
B-->G["&F2FS_I(inode)->dirty_pages"]
D-->G
F-->G
H[.set_page_dirty]-->I[f2fs_set_data_page_dirty]
I-->J[hmfs_update_dirty_page]
J-->A
可以看出这个值的作用是记录该文件中脏数据页的数量。不是node。
global dirty list,是一个链表的中间件,表示当前inode是否在文件系统全局脏inode链表中
flowchart
A[hmfs_inode_dirtied]-->B[list_add_tail]
C[hmfs_inode_synced]-->D[list_del_init]
B-->E["&F2FS_I(inode)->gdirty_list"]
D-->E
该文件是否保存在内存中?
用于原子写。因为文件原子写的文件必须一次性落盘,所以在落盘之前只能在内存中。
flowchart
A[hmfs_register_inmem_page]-->B[list_add_tail]-->C[inmem_pages]
D[f2fs_set_data_page_dirty]-->A
如果某个脏页属于原子写文件,则通过hmfs_register_inmem_page将其加入inmem_pages链表中。