Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3495508imm; Tue, 29 May 2018 08:12:01 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqttxiJdfnbDk+HHyAplWasLk/se7r8Nx+EkSgVy8DGzp9ToFojmznazN6gjGd+EPSMZAO0 X-Received: by 2002:a62:4cca:: with SMTP id e71-v6mr17551780pfj.171.1527606721766; Tue, 29 May 2018 08:12:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527606721; cv=none; d=google.com; s=arc-20160816; b=KXM91RPnyPr68ckLRK5kcIqDGFi+1LAC3o0l+mQCG98VXILiNiXzt78wtaE50qzuYe n8eBNMuTQXMibGqOFuqnQauwEAEDV0VsFROWZ1zFDJa6zjeUEk5IiYTmOdKRFMikqDie Eeey+FkacmXdqw5KMRaKOV+TpHL2jquGwfgpMkO/oeoP4/h8jzvDng+6UUkmqmnq3E5+ HUY/WmLtuJKE65PmhXCiDJggRE0smzYjv9eWII6OfS+VfFsB5EATnYnyOXRALhy8QsSO pmarVVjJDnO04TSajiDUd9x1y+IU0dI11DZTJBmDK7Eyt4CdvOH853lTmfl3SjdlgYQn HwDw== 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=jCFws2rqQUxrKvMPMCA7+czJRQs1dTwvOC8R0dotg1o=; b=uRhZGktebtI8CKB8CUKh6wnvkIJ/oq7vNrCJRAEgL57g+8LuNxwkhqo6LmMikJeyoG azCWO6l/H2Feavz4vg99cF25KDlrKijS4vwoyaYP9xXm90DTIn7cKf7t58lQPKUVz6fQ XSZi9z1XQ+fbxtUX70ZfBj/wNjX/N4Jt9ELlUbB22tCVkXSSafqYdg81nWmX6UFywo1Q ZGFL5hRBsllx8arGoJm3LJcdgK/cy1SIifkY59mZoG+spsemLBSVRFUU6ATu9N3VUICC Qch6B7yqK8bfOw3XNU2enO6jsETDq/lgTdFHzTHOhLmMi8EFE6r0qXYyRSGAQre8RWwP EJmw== 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 g2-v6si33832150pli.48.2018.05.29.08.11.47; Tue, 29 May 2018 08:12:01 -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 S936447AbeE2PJE (ORCPT + 99 others); Tue, 29 May 2018 11:09:04 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:32957 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935830AbeE2OoY (ORCPT ); Tue, 29 May 2018 10:44:24 -0400 Received: by mail-wm0-f65.google.com with SMTP id x12-v6so48327736wmc.0 for ; Tue, 29 May 2018 07:44:24 -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=jCFws2rqQUxrKvMPMCA7+czJRQs1dTwvOC8R0dotg1o=; b=U5USvWDc0tho2PZHMOnDrVdrQHCTkxr1QXjSwDtlGdnyFIZlOsvoReZkL3jNvdG1+v 7h4qXC9KSMDry8GfncdsYjk7482rc7265sgdoee4V8NJiSQiBcMAN2FtH9ycFDdkogHw JLlxTXhp4cZS5jScA/HDyTDNzzn1P7vza3uP6Wd77Y2mR1Dvjg6p4+JQUe9cuJK8smli Gjm+u1I+MymniBQ6nAq4Gn9itKvnYrNV0kHbSOwucMmYUcTC/iRiOezfcJDlC5BNAtUw uFLunwEcSgOtsjCfhJ0xZTuS7z0rHa8sfQrHLlz/HN0Oyyb/3ZZ/qCD+YBPe49dEzF9d JP4A== X-Gm-Message-State: ALKqPwdNRUwu67YeMX2aI4JalbirNUBIf8nljHnjdUjzNt0mzQF8bgqG j7iarrOAf/52CaAf05/VR/g3wA== X-Received: by 2002:a1c:ca:: with SMTP id 193-v6mr10406600wma.99.1527605063373; Tue, 29 May 2018 07:44:23 -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 t198-v6sm18834422wmt.23.2018.05.29.07.44.22 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 29 May 2018 07:44:22 -0700 (PDT) From: Miklos Szeredi To: linux-unionfs@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 34/39] Revert "vfs: update ovl inode before relatime check" Date: Tue, 29 May 2018 16:43:34 +0200 Message-Id: <20180529144339.16538-35-mszeredi@redhat.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180529144339.16538-1-mszeredi@redhat.com> References: <20180529144339.16538-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 ad0259bafe2d..348e93f468cc 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -1553,37 +1553,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: */ @@ -1654,8 +1634,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; @@ -1681,7 +1660,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)) @@ -1696,7 +1675,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 29c9a2fab592..6ada1f356da6 100644 --- a/fs/internal.h +++ b/fs/internal.h @@ -138,13 +138,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 186bd2464fd5..54ab8ccb8d6d 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1013,7 +1013,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 6961feda6915..96a4b9fd1f5f 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2066,6 +2066,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