HomeFreeBSD

Fix atime handling.

Description

Fix atime handling.

Previously, the atime-modifying vnops called ZFS_ACCESSTIME_STAMP()
followed by zfs_inode_update() to update the atime. However, since atimes
are cached in the znode for delayed writing, the zfs_inode_update()
function would effectively ignore the cached atime by reading it from
the SA.

This commit moves the updating of the atime in the inode into
zfs_tstamp_update_setup() which is called by the ZFS_ACCESSTIME_STAMP()
macro and eliminates the call to zfs_inode_update() in the atime-modifying
vnops.

It's possible the same thing could have been done directly in
zfs_inode_update() but I wasn't sure that it was safe in all cases where
it is called.

The effect is that atime handling is as if "strictatime" were selected;
even if the filesystem is mounted with "relatime".

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #1949

Details

Provenance
Tim Chase <tim@chase2k.com>Authored on Dec 10 2013, 10:36 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Dec 12 2013, 6:23 PM
Parents
rG5cb65efe2c3d: Fix zstream_t incorrect type
Branches
Unknown
Tags
Unknown

Event Timeline

Brian Behlendorf <behlendorf1@llnl.gov> committed rG84b0aac5fdab: Fix atime handling. (authored by Tim Chase <tim@chase2k.com>).Dec 12 2013, 6:23 PM