• L
    [XFS] avoid race in sync_inodes() that can fail to write out all dirty data · e893bffd
    Lachlan McIlroy 提交于
    In xfs_fs_sync_super() treat a sync the same as a filesystem freeze. This
    is needed to force the log to disk for inodes which are not marked dirty
    in the Linux inode (the inodes are marked dirty on completion of the log
    I/O) and so sync_inodes() will not flush them.
    
    In xfs_fs_write_inode() a synchronous flush will not get an EAGAIN from
    xfs_inode_flush() and if an asynchronous flush returns EAGAIN we should
    pass it on to the caller. If we get an error while flushing the inode then
    re-dirty it so we can try again later.
    
    SGI-PV: 971670
    SGI-Modid: xfs-linux-melb:xfs-kern:29860a
    Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
    Signed-off-by: NDavid Chinner <dgc@sgi.com>
    Signed-off-by: NTim Shimmin <tes@sgi.com>
    e893bffd
xfs_super.c 21.6 KB