Received: by 10.192.165.156 with SMTP id m28csp2078878imm; Thu, 12 Apr 2018 08:16:06 -0700 (PDT) X-Google-Smtp-Source: AIpwx49b65vjY9O/UrPzWJD3Wlh0g07a2Svuxi1sZWVPxphpdS0S02q53/iaYvgJqUk6kWyNMwWb X-Received: by 10.101.77.67 with SMTP id j3mr1058461pgt.210.1523546166030; Thu, 12 Apr 2018 08:16:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523546165; cv=none; d=google.com; s=arc-20160816; b=ZmimMG+aA9UPFLHPvcgqnICF9VKUwBNtveZNGozJ73ha/WKUpbuJoynhoDBnNRgC2r ru47MVMc11CMPLzaT3rE9vgBeM2BuE5259K6J/x33bGG4T8Y2odJeQ2N5qZzTa4x68Tm qFv683wtPhveqboqIdgbEoUM5XNj7kdmHS2n1W2v0E8SaX1cOwPiX5RMaHUe3WCnSS1/ Ameqfh7NBcAgwnYbFPQyYf9Si9RPJDd/4nAK6OBPZkrgW8DtuM0SWW8rMtzJxdEWNcHT fKu+Q0jvRoR/D+ZfxLssfJaUGRaQ3POWQ07Zuvw/yDkfuv8YmxDNpGxwEqmf8XMgpAWq m4Kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=NxDaJJ3L7j1UjdnpSv1zQOvW9Du9/OZLH0M5Mi5ON6k=; b=nULq+DaCEuenac1s4Zv3Q42s/YHCE9guFb+sJrU9xKYQWcRAOeGa+/5uhrRQwzJnTm Qc8a1ih1zCoP4sKq8h81GUWD/wMZ+0zluz2ERRkDyvVT3Pgz5sslodwIs5EdYdP2nf9r 2T6feahPnbbGLE/nLdUUkjUgvBF+RiaFWSQkyMYMdX09Jte3hwR5mM2fca4sZ+fAFuI3 WvI9AmPwPH8BX/jWy0ykKLk1+CuIpxpEc2hP9LtLpyHZpVCS68KYZ+ucFYuvZ/SDg55u /+y50d1NvaTwtIPSmajyYB/GiRCLVyEDE9K/iOKMJLu/Ugx5SMzb2XlyBJVcjUKy4AM4 2u9g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f14si2529779pgr.486.2018.04.12.08.15.28; Thu, 12 Apr 2018 08:16:05 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753711AbeDLPJH (ORCPT + 99 others); Thu, 12 Apr 2018 11:09:07 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:36816 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753638AbeDLPJC (ORCPT ); Thu, 12 Apr 2018 11:09:02 -0400 Received: by mail-wr0-f193.google.com with SMTP id q13so2037201wre.3 for ; Thu, 12 Apr 2018 08:09:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=NxDaJJ3L7j1UjdnpSv1zQOvW9Du9/OZLH0M5Mi5ON6k=; b=czxak1NvQCsU6nyK94SJdJlf7qqxJqBNxos330QvlhHIn9tLaIZeFqXVqZ4aQLPkaB CpMjBR7qjeDPoIkP11leggJ4v3yf97UUxbQyh8xpffn9YqJOX0oifeXn9A3k5VbbJLrH pNCp8iYJDq3kJfecEMaSaxpNIyEHcWHPTxIPU48lLstL6d/DFKlwUwwt33MQ/9GP1xZy 6bjNEwqG+X7+Oc4ass4/DVrMgmZM8IkvK4Aj+/AVLpuujcMks7KMUjm5mvrpKkcoRGxa bdbem5geDV9WAdYF703ptBQxB6hd62kumYERPE9PiJ+2RoBDBRv/MRUCvCJrwfZSf522 fe3g== X-Gm-Message-State: ALQs6tD38hxYP55/IRToMxst48yd8MsvC50Xvte9hFq56z1spiT80rXF wCFN0BoOGi3FYORBvBmv0UXJGw== X-Received: by 10.223.225.4 with SMTP id d4mr1082840wri.24.1523545740795; Thu, 12 Apr 2018 08:09:00 -0700 (PDT) Received: from veci.piliscsaba.redhat.com (catv-176-63-54-97.catv.broadband.hu. [176.63.54.97]) by smtp.gmail.com with ESMTPSA id p197sm2621783wme.43.2018.04.12.08.08.59 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 12 Apr 2018 08:09:00 -0700 (PDT) From: Miklos Szeredi To: linux-unionfs@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 25/35] Revert "vfs: update ovl inode before relatime check" Date: Thu, 12 Apr 2018 17:08:16 +0200 Message-Id: <20180412150826.20988-26-mszeredi@redhat.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180412150826.20988-1-mszeredi@redhat.com> References: <20180412150826.20988-1-mszeredi@redhat.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This reverts commit 598e3c8f72f5b77c84d2cb26cfd936ffb3cfdbaa. Overlayfs no longer relies on the vfs correct atime handling. Signed-off-by: Miklos Szeredi --- fs/inode.c | 33 ++++++--------------------------- fs/internal.h | 7 ------- fs/namei.c | 2 +- include/linux/fs.h | 1 + 4 files changed, 8 insertions(+), 35 deletions(-) diff --git a/fs/inode.c b/fs/inode.c index 163715de8cb2..4832a2b47f65 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -1564,37 +1564,17 @@ sector_t bmap(struct inode *inode, sector_t block) } EXPORT_SYMBOL(bmap); -/* - * Update times in overlayed inode from underlying real inode - */ -static void update_ovl_inode_times(struct dentry *dentry, struct inode *inode, - bool rcu) -{ - if (!rcu) { - struct inode *realinode = d_real_inode(dentry); - - if (unlikely(inode != realinode) && - (!timespec_equal(&inode->i_mtime, &realinode->i_mtime) || - !timespec_equal(&inode->i_ctime, &realinode->i_ctime))) { - inode->i_mtime = realinode->i_mtime; - inode->i_ctime = realinode->i_ctime; - } - } -} - /* * With relative atime, only update atime if the previous atime is * earlier than either the ctime or mtime or if at least a day has * passed since the last atime update. */ -static int relatime_need_update(const struct path *path, struct inode *inode, - struct timespec now, bool rcu) +static int relatime_need_update(struct vfsmount *mnt, struct inode *inode, + struct timespec now) { - if (!(path->mnt->mnt_flags & MNT_RELATIME)) + if (!(mnt->mnt_flags & MNT_RELATIME)) return 1; - - update_ovl_inode_times(path->dentry, inode, rcu); /* * Is mtime younger than atime? If yes, update atime: */ @@ -1665,8 +1645,7 @@ static int update_time(struct inode *inode, struct timespec *time, int flags) * This function automatically handles read only file systems and media, * as well as the "noatime" flag and inode specific "noatime" markers. */ -bool __atime_needs_update(const struct path *path, struct inode *inode, - bool rcu) +bool atime_needs_update(const struct path *path, struct inode *inode) { struct vfsmount *mnt = path->mnt; struct timespec now; @@ -1692,7 +1671,7 @@ bool __atime_needs_update(const struct path *path, struct inode *inode, now = current_time(inode); - if (!relatime_need_update(path, inode, now, rcu)) + if (!relatime_need_update(mnt, inode, now)) return false; if (timespec_equal(&inode->i_atime, &now)) @@ -1707,7 +1686,7 @@ void touch_atime(const struct path *path) struct inode *inode = d_inode(path->dentry); struct timespec now; - if (!__atime_needs_update(path, inode, false)) + if (!atime_needs_update(path, inode)) return; if (!sb_start_write_trylock(inode->i_sb)) diff --git a/fs/internal.h b/fs/internal.h index d5108d9c6a2f..f0eaa33890d9 100644 --- a/fs/internal.h +++ b/fs/internal.h @@ -127,13 +127,6 @@ extern long prune_icache_sb(struct super_block *sb, struct shrink_control *sc); extern void inode_add_lru(struct inode *inode); extern int dentry_needs_remove_privs(struct dentry *dentry); -extern bool __atime_needs_update(const struct path *, struct inode *, bool); -static inline bool atime_needs_update_rcu(const struct path *path, - struct inode *inode) -{ - return __atime_needs_update(path, inode, true); -} - /* * fs-writeback.c */ diff --git a/fs/namei.c b/fs/namei.c index cafa365eeb70..2b3931bf5fb4 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1009,7 +1009,7 @@ const char *get_link(struct nameidata *nd) if (!(nd->flags & LOOKUP_RCU)) { touch_atime(&last->link); cond_resched(); - } else if (atime_needs_update_rcu(&last->link, inode)) { + } else if (atime_needs_update(&last->link, inode)) { if (unlikely(unlazy_walk(nd))) return ERR_PTR(-ECHILD); touch_atime(&last->link); diff --git a/include/linux/fs.h b/include/linux/fs.h index e28a2cf50fa7..5e5dd484937f 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2062,6 +2062,7 @@ enum file_time_flags { S_VERSION = 8, }; +extern bool atime_needs_update(const struct path *, struct inode *); extern void touch_atime(const struct path *); static inline void file_accessed(struct file *file) { -- 2.14.3