/* For flag in struct node_info */
enum {
IS_CHECKPOINTED, /* is it checkpointed before? */
HAS_FSYNCED_INODE, /* is the inode fsynced before? */
HAS_LAST_FSYNC, /* has the latest node fsync mark? */
IS_DIRTY, /* this nat entry is dirty? */
IS_PREALLOC, /* nat entry is preallocated */
};
flowchart
A[set_node_addr]-->B[set_nat_flag]
C[__write_node_page]--is_fsync_dnode-->A
其中#define is_fsync_dnode(page) is_node(page, FSYNC_BIT_SHIFT)
在通过fsync刷写node的时候,会在node page上打FSYNC_BIT_SHIFT标记
在写某个node page的时候,如果page上有FSYNC_BIT_SHIFT标记,则同时在其nat cache表项中设置HAS_LAST_FSYNC标记