I_DIRTY_SYNC与I_DIRTY_DATASYNC
浏览minix_sync_file时,被inode中I_DIRTY_SYNC与I_DIRTY_DATASYNC这两个标志弄糊涂了。一直在纳闷,同步metadata为什么还用两个标记?
int minix_sync_file(struct file * file, struct dentry *dentry, int datasync)
{
struct inode *inode = dentry->d_inode;
int err;
err = sync_mapping_buffers(inode->i_mapping);
if (!(inode->i_state & I_DIRTY))
return err;
if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
return err;
err |= minix_sync_inode(inode);
return

这篇博客探讨了在Minix系统中,I_DIRTY_SYNC和I_DIRTY_DATASYNC两个文件状态标志的含义。它们用于区分同步文件元数据的不同情况。fsync同步文件数据及元数据,而fdatasync仅同步数据,必要时更新元数据。I_DIRTY_DATASYNC标志用于标记元数据中存在重要变更,当该标志被设置,fdatasync会意识到需要立即回写元数据,以确保关键信息的同步,从而提高系统效率。
最低0.47元/天 解锁文章
599

被折叠的 条评论
为什么被折叠?



