Received: by 10.192.165.148 with SMTP id m20csp2825090imm; Mon, 7 May 2018 01:41:42 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqzYeAuU6BtGxq8qpt8oFzs5uSTVHw3cD1TbZPYL93b17pfLSegs388LKjSJNKQHOkcwrmp X-Received: by 2002:a17:902:bf0a:: with SMTP id bi10-v6mr36675266plb.235.1525682502739; Mon, 07 May 2018 01:41:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525682502; cv=none; d=google.com; s=arc-20160816; b=aGqcoui3XUEB0FR/uHmTAZxlEI9k7vUO1Y/wS+qO14cQeqVBs8TDDry/R8/u4cxoez TAMUvm4nbrH5kllr0KlM6ZBp9CGuuJOmkRX1sqifKESFKbQxInThwvV6ALmYvJdd1Plu p2CgDKb+ILTKonSNUmuozIyVQEyasPwSXNaveAwkBOhCZ/GhCVf8ny+7yC7aZu2jGnhr 8vQlcI6NMlF6jbWqGaZ7chJkvoSjFLUjefVlRkTcAfmLEZUDZTs9TXnRIq6GahHBqht4 kAZOHJD2WftwIr5DzJduI9fj8Bdu+BcdjMJAshV4twUsdZCj+8KI2hO8BK2jrVGlTdh0 HigQ== 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=8Cb61rzMp4yfBZrioy3Nkq/UEebQX/y/fkeSSSWl1aM=; b=e4DoTfXoD8XEOmH7VR+9piCx8l1JwW/m2PJD1jt7buWaVRP4qRQWd1Kkc8mUZWdyjW ETHD3Ovg2CTh82/MOGzLohrn1Y70gHTwwfBJVPLxdUDcHbievPSUtWhzdTAZ3n3cR4ca ZUDbib0BmbqBmn0ImUcGpMvQEEoXVN7pOOh0iCbksWfQKeLjeo1RTfs+eOmM4Y1F+BiE v9wYrXIUDs97cBWdCzaeXPycWU0T4Le8tKC0VvDZOWoyr0b8ZhK9u5/ZqcNt0bCcgQDJ 0j06GDXbwXvGXXhoCyfWwGjACUUcBwYxBCFFae6Dypi5Kxx1bbBvhw+IcBc6ie+UaIbd gkfw== 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 f11-v6si22298586plj.58.2018.05.07.01.41.28; Mon, 07 May 2018 01:41:42 -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 S1752367AbeEGIj1 (ORCPT + 99 others); Mon, 7 May 2018 04:39:27 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:39086 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752113AbeEGIiq (ORCPT ); Mon, 7 May 2018 04:38:46 -0400 Received: by mail-wm0-f66.google.com with SMTP id f8-v6so13832231wmc.4 for ; Mon, 07 May 2018 01:38:46 -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=8Cb61rzMp4yfBZrioy3Nkq/UEebQX/y/fkeSSSWl1aM=; b=JHsrBe524zppmK1UoFywNjKph1YUoRwVVNSsnHdwFRSmJ9SZB5TKQtowmyUTH4nj1h nrGJU8snVJZbtVUR68blhGfZXj/10RoRMtQRNoc3OweZ+9jLrzP+76sEzChKuDHrQhxZ 8FvVOVFzDF7mnWn9tEgdsCIkHuD4txwhggWWl19PC2Xjqk9u8AVwdw+4XNX4rRIKF5cc Da6uyeSODDmH15gLNT1o8C3YDB4nOnVrsI7VfXwRsbOVEN58//0pR8U/Q++vhOQ2fMm4 jw3pqWZwpivK+KXq0620q3Zet8nde3ETcPrGTmCk5r9GtYbAM2hnlwxurl9uWs9iwBsl 1Qpw== X-Gm-Message-State: ALKqPwc1VtEMM/+9lFPMEpoFPe3j2x5Q2XlYIQ9kXybeQtjuiCv3zRYB Ady+Jfse76SQqh9Lbdx/XljeRA== X-Received: by 10.28.104.3 with SMTP id d3mr195194wmc.70.1525682325558; Mon, 07 May 2018 01:38:45 -0700 (PDT) Received: from veci.piliscsaba.redhat.com (C2B0E321.catv.pool.telekom.hu. [194.176.227.33]) by smtp.gmail.com with ESMTPSA id h8-v6sm5908050wmc.16.2018.05.07.01.38.44 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 07 May 2018 01:38:45 -0700 (PDT) From: Miklos Szeredi To: linux-unionfs@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Al Viro Subject: [PATCH v2 29/35] Revert "vfs: update ovl inode before relatime check" Date: Mon, 7 May 2018 10:38:01 +0200 Message-Id: <20180507083807.28792-30-mszeredi@redhat.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180507083807.28792-1-mszeredi@redhat.com> References: <20180507083807.28792-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 e97d0193221d..9818c0f48cfa 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -1567,37 +1567,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: */ @@ -1668,8 +1648,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; @@ -1695,7 +1674,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)) @@ -1710,7 +1689,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 c85a8059f038..ebe311541873 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