• Curt Wohlgemuth's avatar
    ext4: sync the directory inode in ext4_sync_parent() · 0893ed45
    Curt Wohlgemuth authored
    ext4 has taken the stance that, in the absence of a journal,
    when an fsync/fdatasync of an inode is done, the parent
    directory should be sync'ed if this inode entry is new.
    ext4_sync_parent(), which implements this, does indeed sync
    the dirent pages for parent directories, but it does not
    sync the directory *inode*.  This patch fixes this.
    
    Also now return error status from ext4_sync_parent().
    
    I tested this using a power fail test, which panics a
    machine running a file server getting requests from a
    client.  Without this patch, on about every other test run,
    the server is missing many, many files that had been synced.
    With this patch, on > 6 runs, I see zero files being lost.
    
    Google-Bug-Id: 4179519
    Signed-off-by: default avatarCurt Wohlgemuth <curtw@google.com>
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    0893ed45
fsync.c 7.18 KB