• Benjamin Marzinski's avatar
    GFS2: dirty inode correctly in gfs2_write_end · 0c901809
    Benjamin Marzinski authored
    GFS2 was only setting I_DIRTY_DATASYNC on files that it wrote to, when
    it actually increased the file size.  If gfs2_fsync was called without
    I_DIRTY_DATASYNC set, it didn't flush the incore data to the log before
    returning, so any metadata or journaled data changes were not getting
    fsynced. This meant that writes to the middle of files were not always
    getting fsynced properly.
    
    This patch makes gfs2 set I_DIRTY_DATASYNC whenever metadata has been
    updated during a write. It also make gfs2_sync flush the incore log
    if I_DIRTY_PAGES is set, and the file is using data journalling. This
    will make sure that all incore logged data gets written to disk before
    returning from a fsync.
    Signed-off-by: default avatarBenjamin Marzinski <bmarzins@redhat.com>
    Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
    0c901809
aops.c 28.8 KB