zfs/tests/zfs-tests/include
LOLi fedc1d96a8 Fix truncate(2) mtime and ctime handling
On Linux, ftruncate(2) always changes the file timestamps, even if the
file size is not changed. However, in case of a successfull
truncate(2), the timestamps are updated only if the file size changes.
This translates to the VFS calling the ZFS Posix Layer "setattr"
function (zpl_setattr) with ATTR_MTIME and ATTR_CTIME unconditionally
set on the iattr mask only when doing a ftruncate(2), while the
truncate(2) is left to the filesystem implementation to be dealt with.

This behaviour is consistent with POSIX:2004/SUSv3 specifications
where there's no explicit requirement for file size changes to update
the timestamps only for ftruncate(2):

http://pubs.opengroup.org/onlinepubs/009695399/functions/truncate.html
http://pubs.opengroup.org/onlinepubs/009695399/functions/ftruncate.html

This has been later updated in POSIX:2008/SUSv4 where, for both
truncate(2)/ftruncate(2), there's no mention of this size change
requirement:

http://austingroupbugs.net/view.php?id=489
http://pubs.opengroup.org/onlinepubs/9699919799/functions/truncate.html
http://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html

Unfortunately the Linux VFS is still calling into the ZPL without
ATTR_MTIME/ATTR_CTIME set in the truncate(2) case: we fix this by
explicitly updating the timestamps when detecting the ATTR_SIZE bit,
which is always set in do_truncate(), on the iattr mask.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
Closes #6811
Closes #6819
2017-11-21 13:11:29 -06:00
..
.gitignore Add zpool events tests 2017-05-22 12:34:42 -04:00
Makefile.am Add zpool events tests 2017-05-22 12:34:42 -04:00
commands.cfg Fix volume WR_INDIRECT log replay (#6620) 2017-09-13 16:04:16 -07:00
default.cfg.in Add zpool events tests 2017-05-22 12:34:42 -04:00
libtest.shlib Fix chattr/cleanup failure 2017-10-17 16:48:58 -07:00
math.shlib Fix truncate(2) mtime and ctime handling 2017-11-21 13:11:29 -06:00
properties.shlib Disable nbmand tests on kernels w/o support 2017-07-24 11:03:50 -07:00
zpool_script.shlib Prebaked scripts for zpool status/iostat -c 2017-04-21 09:27:04 -07:00