From patchwork Tue Jan 4 09:08:12 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: yangsheng X-Patchwork-Id: 77427 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 486D7B70A3 for ; Tue, 4 Jan 2011 20:09:02 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752112Ab1ADJIf (ORCPT ); Tue, 4 Jan 2011 04:08:35 -0500 Received: from mail-pw0-f46.google.com ([209.85.160.46]:59922 "EHLO mail-pw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752087Ab1ADJId (ORCPT ); Tue, 4 Jan 2011 04:08:33 -0500 Received: by pwj3 with SMTP id 3so1839518pwj.19 for ; Tue, 04 Jan 2011 01:08:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer; bh=zHnvLgiPbsqDDkq4MP6VugunIWc02kpke8HImTSbNkc=; b=rzYwqQ7LXFTU2KW5kkTn0PscmEI2nHj7Z5bOmuVRap6xVIEv+u5OW89eMa19KXA8jP A56N4AsCZ3/oWVVeEXwni3q6UoimudXhDFI7tT2P/fGdWEhrIQcaAR4InKXKqn+xBX/q Qc7YHaVFaXAGSk32XJD8hTjDZxALgPI6Fb9x0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; b=hC7tbQXaJmASNJh6Z5VGNxq6q58kZbriBhssa6zFypZYjluIU6KjGUHMRp0ojrqmUT VCr1ZM6j6Jk9IzUfodu0DFgoRyUcQ4mLgpZfBlo7yUUGtZXU8dVGIyYD47za5BBDs2rc i2P/e53eIzPICrs+sr8YGmI4eIF2DUy8C7nFo= Received: by 10.142.143.20 with SMTP id q20mr17242569wfd.388.1294132112743; Tue, 04 Jan 2011 01:08:32 -0800 (PST) Received: from localhost.localdomain ([114.243.103.213]) by mx.google.com with ESMTPS id w14sm30559708wfd.6.2011.01.04.01.08.25 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 04 Jan 2011 01:08:31 -0800 (PST) From: yangsheng To: linux-kernel@vger.kernel.org Cc: adilger@dilger.ca, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, swhiteho@redhat.com, yangsheng Subject: [PATCH] Update atime from future. Date: Tue, 4 Jan 2011 17:08:12 +0800 Message-Id: <1294132092-4423-1-git-send-email-sickamd@gmail.com> X-Mailer: git-send-email 1.7.2.3 Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org If atime has been wrong set to future, then it cannot be updated back to current time. Signed-off-by: sickamd@gmail.com Reviewed-by: adilger@dilger.ca --- fs/inode.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/fs/inode.c b/fs/inode.c index da85e56..d92779f 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -1446,6 +1446,8 @@ sector_t bmap(struct inode *inode, sector_t block) } EXPORT_SYMBOL(bmap); +#define RELATIME_MARGIN (24 * 60 * 60) + /* * 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 @@ -1469,10 +1471,16 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode, return 1; /* + * Is the previous atime value in future? If yes, + * update atime: + */ + if ((long)(now.tv_sec - inode->i_atime.tv_sec) < -RELATIME_MARGIN) + return 1; + /* * Is the previous atime value older than a day? If yes, * update atime: */ - if ((long)(now.tv_sec - inode->i_atime.tv_sec) >= 24*60*60) + if ((long)(now.tv_sec - inode->i_atime.tv_sec) >= RELATIME_MARGIN) return 1; /* * Good, we can skip the atime update: