summaryrefslogtreecommitdiff
path: root/fs/namei.c
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@redhat.com>2016-09-16 12:44:20 +0200
committerMiklos Szeredi <mszeredi@redhat.com>2016-09-16 12:44:20 +0200
commit598e3c8f72f5b77c84d2cb26cfd936ffb3cfdbaa (patch)
tree485f1dd152279acde134219e011f3f1dadbe5495 /fs/namei.c
parentf2b20f6ee842313a0d681dbbf7f87b70291a6a3b (diff)
downloadlwn-598e3c8f72f5b77c84d2cb26cfd936ffb3cfdbaa.tar.gz
lwn-598e3c8f72f5b77c84d2cb26cfd936ffb3cfdbaa.zip
vfs: update ovl inode before relatime check
On overlayfs relatime_need_update() needs inode times to be correct on overlay inode. But i_mtime and i_ctime are updated by filesystem code on underlying inode only, so they will be out-of-date on the overlay inode. This patch copies the times from the underlying inode if needed. This can't be done if called from RCU lookup (link following) but link m/ctime are not updated by fs, so this is all right. This patch doesn't change functionality for anything but overlayfs. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/namei.c')
-rw-r--r--fs/namei.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/namei.c b/fs/namei.c
index adb04146df09..4bbcae1ba58e 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1015,7 +1015,7 @@ const char *get_link(struct nameidata *nd)
if (!(nd->flags & LOOKUP_RCU)) {
touch_atime(&last->link);
cond_resched();
- } else if (atime_needs_update(&last->link, inode)) {
+ } else if (atime_needs_update_rcu(&last->link, inode)) {
if (unlikely(unlazy_walk(nd, NULL, 0)))
return ERR_PTR(-ECHILD);
touch_atime(&last->link);