From patchwork Sat Sep 14 17:07:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13804450 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 22B95C021A7 for ; Sat, 14 Sep 2024 17:07:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 50B986B00A0; Sat, 14 Sep 2024 13:07:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 494956B00A2; Sat, 14 Sep 2024 13:07:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 30CCC6B00A3; Sat, 14 Sep 2024 13:07:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 0B7686B00A0 for ; Sat, 14 Sep 2024 13:07:53 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id BEEDEA99C3 for ; Sat, 14 Sep 2024 17:07:52 +0000 (UTC) X-FDA: 82563975984.23.CA5E941 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf18.hostedemail.com (Postfix) with ESMTP id 09BD71C0008 for ; Sat, 14 Sep 2024 17:07:50 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=OnsaXc9Y; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf18.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726333591; a=rsa-sha256; cv=none; b=ACJXz2iXkKR99HRYWArKYXjle0hYJQTMwoeaHIav0fEvx3bTFVAz3VQPLRP6wazNtbsThA 1CY5DmsBLYYj8nPV2BRBWF3CeR3mMWWIToZX2OOf4SSts0Zlpa9I0kHjoXuP00Y0Hct3CY 8pGtuMLQ5T8gj6qIfXgV5fuJoyVnYuA= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=OnsaXc9Y; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf18.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1726333591; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=2H4/vlHZRyTOK6xofuc69OL+vSngUgFvaslFJHzZIMo=; b=bebyTqeqsdTJ60InTBGIqqcE8FYzKqfS9U/7KHnMfxCt771x1IMlj+JIxpCrUm70v+0C1l WEn+E2uniGTpMdgADwV6oq+Hm1rxbZV0d8Mvj3asWS4+A/3kjgqjN5JaRz2GZw+ezMigHV aehJ8Z2wQTMfaIgw1+UREBYVgSc4PsE= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 9D1C65C5ACD; Sat, 14 Sep 2024 17:07:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 64294C4CECF; Sat, 14 Sep 2024 17:07:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1726333670; bh=gD0wNq7Gu5j1JVptVjT60GA5HV2tmuyZD0KoREfuUWw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OnsaXc9Ymk3RYfHMoFlLfXvNdkNLPJT/nCCxRvBL04+CscVmYlVBuqxqN52CHdmZq rS++6tGhQj3jHFzyPbPjWZz60BE3gbH55x26rwO5tlfsF/Oy6ua//id7CsKu8XobYh XsyTGeKDPE9GQOa6pebLQ5hcvMqGTv743a/9EA7n6F578YF5ADhWllJWaCFs3ahd94 4G7wC+3BmpbRo179YYT9jFBP1j7K283dTrDdRUb8SKm+hEJdqDm9Iw7LZTIXza9b4Y Hy2/y7j2vFxVnXRqpTxnXQF3KFr34hNAELx6wKUpGn5vJFSPI1OcEq4FIAOYgFVVja DUQfrqF54ZGDw== From: Jeff Layton Date: Sat, 14 Sep 2024 13:07:23 -0400 Subject: [PATCH v8 10/11] btrfs: convert to multigrain timestamps MIME-Version: 1.0 Message-Id: <20240914-mgtime-v8-10-5bd872330bed@kernel.org> References: <20240914-mgtime-v8-0-5bd872330bed@kernel.org> In-Reply-To: <20240914-mgtime-v8-0-5bd872330bed@kernel.org> To: John Stultz , Thomas Gleixner , Stephen Boyd , Alexander Viro , Christian Brauner , Jan Kara , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Jonathan Corbet , Chandan Babu R , "Darrick J. Wong" , Theodore Ts'o , Andreas Dilger , Chris Mason , Josef Bacik , David Sterba , Hugh Dickins , Andrew Morton , Chuck Lever , Vadim Fedorenko Cc: Randy Dunlap , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-xfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-nfs@vger.kernel.org, linux-mm@kvack.org, Jeff Layton X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2660; i=jlayton@kernel.org; h=from:subject:message-id; bh=gD0wNq7Gu5j1JVptVjT60GA5HV2tmuyZD0KoREfuUWw=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBm5cLGDFBDcopNy/21OHrXrCajnq3tvWydZqq9f oWLLLJG7hyJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZuXCxgAKCRAADmhBGVaC FbCsEADDSDCuLOkoBu17JJLTtSg9T7tYQSu30N5o6tKAz5hfYb3oqONtgrosynqevuMTPya4ygi j2u7OXW8FNsPhJbFFfD7RYKB1bha7dDz9BXy1qJep8KB06FA4/ZZKqGo9Rtfo/S564yYOmrMtD1 LCCfM9ZMexmEjLRbE/6qQk9LKHL4RUkw/Uus8ZQw0m4pti5eQVEsZMvIyqDEKhzySyvg0Xgaqds k4SDLA4lRPxKpMm+kTdJ3nhEGNPL6AL8lzF0lzeT8rtq6HnV951MCwIbBPnAcGzXZH11GFmSwGh /r/HxQsBLNwqwXFzB+lqbp9403WElBb+E0J9Sj/6zQf7jA3CicYASW4ojXLpgxzzZGeSAfs2lkz RrQ8mEhezpMeVrn+HaorHAqEH7FzMvYSGJNE+Mxss0+hqBH/sJ7kja46tMW+5rzZ0SwjmNuue2W 1WyYbsohvdObP6z6hREpQ1OO7D9VQ6QoH0lOnOWGF4re20/p1yp7uclcGu7qe6UgMDtWCpjetRo 2DKRnag68WIlLO/hcUlJpg7HRhzU+kIB0YTG61GKnVdydjW2GQJScOLK8PxJJczGuWiesH9seJk hJB65WmjibjgT8/tq+g5CPdXoKRvGkyDBcSWcFPDeyO7uFLuDqqAFFH5S/OVgK9syKPrMNpx+te xeyJbodV8Mp6iSg== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 X-Rspamd-Queue-Id: 09BD71C0008 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: r8qygiw7nciujps66mxbogm6sexb3z4g X-HE-Tag: 1726333670-644287 X-HE-Meta: U2FsdGVkX1+4ijqra6C2YSztWUKV0W+e7hFwdUFOiTRubw62Xjyjl7aTeU5lJreHK6u3wmi31eloaF2vLBSRqK0N14RNZgUFktQN6nqoudIWr4meYDjL2AYDsSQ3uMuwWZNkrFJRPV9NC8Jnnfq5E1q9H/i+WrYNVCxuBdioeXRoBQDNHykgLwQLz3WHUxZ2y0WWFcT4KPrMbbqyQl7TGbXqYEi98lmHJm+NjhWJLT38nNRdRXSe/5kR5oLbJt1SRdfPHi0kflpSWs95evqrdc94yWEKlwhFdezLfhxOP0IS3hVEAfU7AESIZCtCSZjeyrllbVdysE8jxPwvIgvheuSSaGQe34rZKFm8Kbzej12Gi1BsnG+MC0y/UQ2V2pqqZ9vf+XpVp4rhooag9/tRpoG6L1hKVQF5Od0dzAqzl3caNqY6aXldhJPOKfLqyjRc/O7jgSVDMq3s3eSnUzA06I4rUDfUbBmxlNSPBgIzpsEDo8PisqEiCc6M06+gQV71oQ/XPuyWfHYloGB6Xny/IOz6U6uPtSP0IFcuFER889PsxjTZYPAPytQw41Iq8FqOLHX2kZ8+QzlFV5ySZ3Uep3k6RsH/rYERTg10/7pFkWOxLeKmnQkWhpX84NJ3BNhdnvx+grnun7UV+9Yxc15nS8hmGMS3w9xzzqySuBUQdNhVweXL60HtJuMW8fSADErLk5jVNpaY7s33b0sooDW+UQC3NlzCDMifobS5VlaA1q+do0HAgOh/k7IBF70F+OWyHjuFfl4fQAKr524dgExQovnNT6gKr0Ziv5e6rJqTaKc9fWXhJ6TlhxRFSQIjDxVMQnrTB4BPOR26SNWOk0Vihydbn4H1WbUi0CSvxZZXRA1kfxRRkGlgc1mtY7SK5L+j7Db2kwb7T6TNiqwHV7dANb2LrQU3Qmkw35O/9i9k0lJ4uSHdN28RhPsia5ep1dFGvY0PECWcHqRjq+NznFD BfGcJJNH LPxDBqv/Hu5el4nZikpKnJJCniR7OYD5dn03vmhuWrA/DQwdrUtxLOQCDeqh+WdibZ38Rlui+G3BQDOSSAxZr3tvt2t7eJAyUN3n4Z6mObNFFrq6XedfWvMFg/28Fs9VdJs591RUdLgpY7sxHzWmWuK8d3Xuavhxv8KM9L5YdjMMH+7e6moifUOtOt1iHf4POmD2AUqxbJmk/2wRfe+HhT4oq62J2we8+HLT8r0CI2DkHVkUF9DqD108rPfkrYFfgBucvBjHo+ZU1KCK4pQS7XxsRz6MwGY8ISfmEXBH5RPFAdLNfqk2wUu7YMZWluv18tuWYMKhW+Lq6uBfiGzeUZI2b6KMAObqO6xUFMnzj1iGqNETbAk80Tbo0TcSbdpZYJ7zU7ZLS6x2IaxNxizfdeI8at4M/6ZxTO+idU8NMlS2qrj65Txxo/VrzzQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Enable multigrain timestamps, which should ensure that there is an apparent change to the timestamp whenever it has been written after being actively observed via getattr. Beyond enabling the FS_MGTIME flag, this patch eliminates update_time_for_write, which goes to great pains to avoid in-memory stores. Just have it overwrite the timestamps unconditionally. Note that this also drops the IS_I_VERSION check and unconditionally bumps the change attribute, since SB_I_VERSION is always set on btrfs. Reviewed-by: Josef Bacik Signed-off-by: Jeff Layton --- fs/btrfs/file.c | 25 ++++--------------------- fs/btrfs/super.c | 3 ++- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 2aeb8116549c..1656ad7498b8 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -1120,26 +1120,6 @@ void btrfs_check_nocow_unlock(struct btrfs_inode *inode) btrfs_drew_write_unlock(&inode->root->snapshot_lock); } -static void update_time_for_write(struct inode *inode) -{ - struct timespec64 now, ts; - - if (IS_NOCMTIME(inode)) - return; - - now = current_time(inode); - ts = inode_get_mtime(inode); - if (!timespec64_equal(&ts, &now)) - inode_set_mtime_to_ts(inode, now); - - ts = inode_get_ctime(inode); - if (!timespec64_equal(&ts, &now)) - inode_set_ctime_to_ts(inode, now); - - if (IS_I_VERSION(inode)) - inode_inc_iversion(inode); -} - int btrfs_write_check(struct kiocb *iocb, struct iov_iter *from, size_t count) { struct file *file = iocb->ki_filp; @@ -1170,7 +1150,10 @@ int btrfs_write_check(struct kiocb *iocb, struct iov_iter *from, size_t count) * need to start yet another transaction to update the inode as we will * update the inode when we finish writing whatever data we write. */ - update_time_for_write(inode); + if (!IS_NOCMTIME(inode)) { + inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode)); + inode_inc_iversion(inode); + } start_pos = round_down(pos, fs_info->sectorsize); oldsize = i_size_read(inode); diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 98fa0f382480..d423acfe11d0 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -2198,7 +2198,8 @@ static struct file_system_type btrfs_fs_type = { .init_fs_context = btrfs_init_fs_context, .parameters = btrfs_fs_parameters, .kill_sb = btrfs_kill_super, - .fs_flags = FS_REQUIRES_DEV | FS_BINARY_MOUNTDATA | FS_ALLOW_IDMAP, + .fs_flags = FS_REQUIRES_DEV | FS_BINARY_MOUNTDATA | + FS_ALLOW_IDMAP | FS_MGTIME, }; MODULE_ALIAS_FS("btrfs");