• Eryu Guan's avatar
    ext4: fix fdatasync(2) after fallocate(2) operation · c894aa97
    Eryu Guan authored
    Currently, fallocate(2) with KEEP_SIZE followed by a fdatasync(2)
    then crash, we'll see wrong allocated block number (stat -c %b), the
    blocks allocated beyond EOF are all lost. fstests generic/468
    exposes this bug.
    
    Commit 67a7d5f5 ("ext4: fix fdatasync(2) after extent
    manipulation operations") fixed all the other extent manipulation
    operation paths such as hole punch, zero range, collapse range etc.,
    but forgot the fallocate case.
    
    So similarly, fix it by recording the correct journal tid in ext4
    inode in fallocate(2) path, so that ext4_sync_file() will wait for
    the right tid to be committed on fdatasync(2).
    
    This addresses the test failure in xfstests test generic/468.
    Signed-off-by: default avatarEryu Guan <eguan@redhat.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Cc: stable@vger.kernel.org
    c894aa97
extents.c 163 KB