ext4: fix fdatasync(2) after extent manipulation operations
authorJan Kara <jack@suse.cz>
Mon, 29 May 2017 17:24:55 +0000 (13:24 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 29 May 2017 17:24:55 +0000 (13:24 -0400)
commit67a7d5f561f469ad2fa5154d2888258ab8e6df7c
treeaa5b273ba62c4a0301dae73d13978a5e8217e16c
parenta056bdaae7a181f7dcc876cfab2f94538e508709
ext4: fix fdatasync(2) after extent manipulation operations

Currently, extent manipulation operations such as hole punch, range
zeroing, or extent shifting do not record the fact that file data has
changed and thus fdatasync(2) has a work to do. As a result if we crash
e.g. after a punch hole and fdatasync, user can still possibly see the
punched out data after journal replay. Test generic/392 fails due to
these problems.

Fix the problem by properly marking that file data has changed in these
operations.

CC: stable@vger.kernel.org
Fixes: a4bb6b64e39abc0e41ca077725f2a72c868e7622
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/extents.c
fs/ext4/inode.c