• Christoph Hellwig's avatar
    xfs: fix xfs_mark_inode_dirty during umount · 866e4ed7
    Christoph Hellwig authored
    During umount we do not add a dirty inode to the lru and wait for it to
    become clean first, but force writeback of data and metadata with
    I_WILL_FREE set.  Currently there is no way for XFS to detect that the
    inode has been redirtied for metadata operations, as we skip the
    mark_inode_dirty call during teardown.  Fix this by setting i_update_core
    nanually in that case, so that the inode gets flushed during inode reclaim.
    
    Alternatively we could enable calling mark_inode_dirty for inodes in
    I_WILL_FREE state, and let the VFS dirty tracking handle this.  I decided
    against this as we will get better I/O patterns from reclaim compared to
    the synchronous writeout in write_inode_now, and always marking the inode
    dirty in some way from xfs_mark_inode_dirty is a better safetly net in
    either case.
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
    (cherry picked from commit da6742a5a4cc844a9982fdd936ddb537c0747856)
    Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
    866e4ed7
xfs_iops.c 29.2 KB