summaryrefslogtreecommitdiff
path: root/fs/inode.c
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@redhat.com>2018-07-18 15:44:43 +0200
committerMiklos Szeredi <mszeredi@redhat.com>2018-07-18 15:44:43 +0200
commit88059de155d4db817a3a78ba899cb3b7f4de0fb0 (patch)
tree21e666328a80e7069439565cca55c37387f42a47 /fs/inode.c
parenta6795a585929d94ca3e931bc8518f8deb8bbe627 (diff)
downloadlwn-88059de155d4db817a3a78ba899cb3b7f4de0fb0.tar.gz
lwn-88059de155d4db817a3a78ba899cb3b7f4de0fb0.zip
Revert "ovl: fix relatime for directories"
This reverts commit cd91304e7190b4c4802f8e413ab2214b233e0260. Overlayfs no longer relies on the vfs correct atime handling. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/inode.c')
-rw-r--r--fs/inode.c21
1 files changed, 4 insertions, 17 deletions
diff --git a/fs/inode.c b/fs/inode.c
index 2c300e981796..7ef6f1942757 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -1560,24 +1560,11 @@ EXPORT_SYMBOL(bmap);
static void update_ovl_inode_times(struct dentry *dentry, struct inode *inode,
bool rcu)
{
- struct dentry *upperdentry;
+ if (!rcu) {
+ struct inode *realinode = d_real_inode(dentry);
- /*
- * Nothing to do if in rcu or if non-overlayfs
- */
- if (rcu || likely(!(dentry->d_flags & DCACHE_OP_REAL)))
- return;
-
- upperdentry = d_real(dentry, NULL, 0, D_REAL_UPPER);
-
- /*
- * If file is on lower then we can't update atime, so no worries about
- * stale mtime/ctime.
- */
- if (upperdentry) {
- struct inode *realinode = d_inode(upperdentry);
-
- if ((!timespec64_equal(&inode->i_mtime, &realinode->i_mtime) ||
+ if (unlikely(inode != realinode) &&
+ (!timespec64_equal(&inode->i_mtime, &realinode->i_mtime) ||
!timespec64_equal(&inode->i_ctime, &realinode->i_ctime))) {
inode->i_mtime = realinode->i_mtime;
inode->i_ctime = realinode->i_ctime;