Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp3863579pxb; Tue, 17 Nov 2020 05:41:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJzwl9grfWj9MSEfGclpeXw7fO2RR3m51BhZ/ftlmcNqUyiiMG8UMj6jAW5rSgR8UA/EKWN/ X-Received: by 2002:a05:6402:22c6:: with SMTP id dm6mr20903789edb.139.1605620466684; Tue, 17 Nov 2020 05:41:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605620466; cv=none; d=google.com; s=arc-20160816; b=nYwlelwuYBjjGAczIFQ61frUTBcUZXr8FuUTQ/xhqXZUCmlpky1lYe53ifG6gLeJRC iRT7GnZjGbJBqQxNXuwaUOICpElvWQ1Wb5vLBbsVkW30gWaUwx9rANFL/dARov/hGEkz mr8poDNFh0il4yifymU4/dc8uKzxDFwEySqNC05ikGvVFjejLSpJX4QPlTMYrbDxEVWe 8N4BzpY2JMf/8ZpNsmUgSapMBnc+3ZdzIVnJAl6gKDNJUnmhHx2fcT6OL+pnc5SgDe1K SaJffRzSAroiEcDVNbEcEE7JUjfXfaiQVtlpxZOYCkoTPPKldrCBOPh4YGiPWqJktxf7 3/pA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=zs1NsbxZUREusDR8vD2IFJlhAHaoUR5qXJ8h4CaRfWo=; b=St7n0UZuhTRRuZYIICUubYpOlCsrEl3kDDUi2M0ttoJ1uDtcR7sc2m2hMvBq8OBI/7 YgPe2SQyvg+hfa+f1Y4/w0uENoNWr7ZS1QRypC8yH0mnO6G+65NWeSN1gl0wIcSVaqN8 PvpcTS2jfcjk5MfqAJ2u/VREEO81fOKyiNW9LgciLNJgyez627E2dZQbIlHWbnzaXTJ4 ubJ1BvO+KxlZBzcZunS18nqrrL/agDiYQNQpadGqU2qyQu+RdhoM2cmFHagtHhiuIyoZ OFSV1tmbVUAcWUJj2S289VnzQGyrLAe3PLnAfcBODkJaFDllMCJfzZ55UQTNtv7C6Ln3 GCeA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=fQBufI9J; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u8si2899578edd.34.2020.11.17.05.40.39; Tue, 17 Nov 2020 05:41:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=fQBufI9J; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732652AbgKQNjQ (ORCPT + 99 others); Tue, 17 Nov 2020 08:39:16 -0500 Received: from mail.kernel.org ([198.145.29.99]:50500 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732609AbgKQNjA (ORCPT ); Tue, 17 Nov 2020 08:39:00 -0500 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id AE9FE207BC; Tue, 17 Nov 2020 13:38:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1605620339; bh=3fntGhdmntGkANo1Skyjo7G96MAFJgTdfCEIu2/0TQA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fQBufI9JhagG6GhH/vMsEF4KJigSsRQdlDJwW2vB1aAoRuuBa2QvoqGga1wVsjBFH C//E4EbuVAT3jubydl26cQfkP9aJ1+4Mx1V3UHe7QYb1kCkwoK21mUooXvwJAXfrHe yIO9d+ZbPvMFUEDVwWKAYoiwyYHmWcBRlhVSZFFc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, nl6720 , Chao Yu , Gao Xiang Subject: [PATCH 5.9 184/255] erofs: derive atime instead of leaving it empty Date: Tue, 17 Nov 2020 14:05:24 +0100 Message-Id: <20201117122147.876891371@linuxfoundation.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201117122138.925150709@linuxfoundation.org> References: <20201117122138.925150709@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Gao Xiang commit d3938ee23e97bfcac2e0eb6b356875da73d700df upstream. EROFS has _only one_ ondisk timestamp (ctime is currently documented and recorded, we might also record mtime instead with a new compat feature if needed) for each extended inode since EROFS isn't mainly for archival purposes so no need to keep all timestamps on disk especially for Android scenarios due to security concerns. Also, romfs/cramfs don't have their own on-disk timestamp, and squashfs only records mtime instead. Let's also derive access time from ondisk timestamp rather than leaving it empty, and if mtime/atime for each file are really needed for specific scenarios as well, we can also use xattrs to record them then. Link: https://lore.kernel.org/r/20201031195102.21221-1-hsiangkao@aol.com [ Gao Xiang: It'd be better to backport for user-friendly concern. ] Fixes: 431339ba9042 ("staging: erofs: add inode operations") Cc: stable # 4.19+ Reported-by: nl6720 Reviewed-by: Chao Yu Signed-off-by: Gao Xiang Signed-off-by: Greg Kroah-Hartman --- fs/erofs/inode.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) --- a/fs/erofs/inode.c +++ b/fs/erofs/inode.c @@ -107,11 +107,9 @@ static struct page *erofs_read_inode(str i_gid_write(inode, le32_to_cpu(die->i_gid)); set_nlink(inode, le32_to_cpu(die->i_nlink)); - /* ns timestamp */ - inode->i_mtime.tv_sec = inode->i_ctime.tv_sec = - le64_to_cpu(die->i_ctime); - inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec = - le32_to_cpu(die->i_ctime_nsec); + /* extended inode has its own timestamp */ + inode->i_ctime.tv_sec = le64_to_cpu(die->i_ctime); + inode->i_ctime.tv_nsec = le32_to_cpu(die->i_ctime_nsec); inode->i_size = le64_to_cpu(die->i_size); @@ -149,11 +147,9 @@ static struct page *erofs_read_inode(str i_gid_write(inode, le16_to_cpu(dic->i_gid)); set_nlink(inode, le16_to_cpu(dic->i_nlink)); - /* use build time to derive all file time */ - inode->i_mtime.tv_sec = inode->i_ctime.tv_sec = - sbi->build_time; - inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec = - sbi->build_time_nsec; + /* use build time for compact inodes */ + inode->i_ctime.tv_sec = sbi->build_time; + inode->i_ctime.tv_nsec = sbi->build_time_nsec; inode->i_size = le32_to_cpu(dic->i_size); if (erofs_inode_is_data_compressed(vi->datalayout)) @@ -167,6 +163,11 @@ static struct page *erofs_read_inode(str goto err_out; } + inode->i_mtime.tv_sec = inode->i_ctime.tv_sec; + inode->i_atime.tv_sec = inode->i_ctime.tv_sec; + inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec; + inode->i_atime.tv_nsec = inode->i_ctime.tv_nsec; + if (!nblks) /* measure inode.i_blocks as generic filesystems */ inode->i_blocks = roundup(inode->i_size, EROFS_BLKSIZ) >> 9;