• Frank Mayhar's avatar
    ext4: Make non-journal fsync work properly · f43808b8
    Frank Mayhar authored
    Teach ext4_write_inode() and ext4_do_update_inode() about non-journal
    mode:  If we're not using a journal, ext4_write_inode() now calls
    ext4_do_update_inode() (after getting the iloc via ext4_get_inode_loc())
    with a new "do_sync" parameter.  If that parameter is nonzero _and_ we're
    not using a journal, ext4_do_update_inode() calls sync_dirty_buffer()
    instead of ext4_handle_dirty_metadata().
    
    This problem was found in power-fail testing, checking the amount of
    loss of files and blocks after a power failure when using fsync() and
    when not using fsync().  It turned out that using fsync() was actually
    worse than not doing so, possibly because it increased the likelihood
    that the inodes would remain unflushed and would therefore be lost at
    the power failure.
    Signed-off-by: default avatarFrank Mayhar <fmayhar@google.com>
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    f43808b8
inode.c 155 KB