From patchwork Thu Jul 11 11:08:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13730393 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 1DCE4C3DA41 for ; Thu, 11 Jul 2024 11:08:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A7E156B009F; Thu, 11 Jul 2024 07:08:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A04EF6B00A1; Thu, 11 Jul 2024 07:08:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 87FA26B00A2; Thu, 11 Jul 2024 07:08:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 645406B009F for ; Thu, 11 Jul 2024 07:08:55 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 1C96A1A053F for ; Thu, 11 Jul 2024 11:08:55 +0000 (UTC) X-FDA: 82327199430.25.F11CDFB Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf11.hostedemail.com (Postfix) with ESMTP id B39EF4002E for ; Thu, 11 Jul 2024 11:08:52 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=PIYSBlDz; spf=pass (imf11.hostedemail.com: domain of jlayton@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720696116; a=rsa-sha256; cv=none; b=cEA2rLy6KuF/lKQjCI76VNc2Uaq40VF8Sa05+bOWACla/NHKMh5P/eckPIL1LhkUK5kDEH qRFH+d16I2EcJv2oqfW+p0sE4G2OpEbDmnZp2yEjDGMFi9zkVtUeNQMfQq1/DBGINt44yg WPlqzcvGC5HUAnRmrWzaeJnBAtnzKxM= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=PIYSBlDz; spf=pass (imf11.hostedemail.com: domain of jlayton@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720696116; 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=5vMS/3B7M9AXRjhPTEbSrlkhwACcn/9XxJJqb8Ng0DE=; b=AxQhWOzxp4e+vfZTy0ZsZgVkGapDPiaEABto/QXCpKTb59l+ZHmdStHReQTWJy7SKgx0mW Gt0mbh+FVzIAhE59box3G552pjGDvi5jW0wyl4aMkJqZHM5IAIbEoGINgzj9vf9o+YGUW/ c4kZDDpOuvh/JPj7tQOm4pg25CEkw5k= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id B9874CE18C1; Thu, 11 Jul 2024 11:08:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 690D2C4AF0A; Thu, 11 Jul 2024 11:08:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720696129; bh=xTk9IFiZeoZdqPbR7bcsVc6tPLRLkOIJYDVl81q/MME=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PIYSBlDzi3izlhhsIih/pyOcBS1LMKHlSVybt8iwDKMCT/KuB+uwW5ZH/4UDnvHt2 iQmqRu9FPZfscB4x1O8ANDwsFpStacAQn1MZcv3WRPTRtaX73PHMYQyQFGyYQGHiSD uVU0KS+6pKts00oAL3Oad3Sdrxu58b4u/W8mOZNypM4ig/boWOPsrXhK79SRxP+ror Vi0p96D0J6Xep6j+EXS9SFWrtblFyvbZV6WHVx8Rvyoiqw9M0WX/4w55T4qbJ/Ghkc ufKRaU4Ci/y52xxGlR2i1JJsMXG0lQDkq+SsEElni0wujfCUS4LA2B8yXhSG4Ifr2+ 70sfbdd2Cqs1Q== From: Jeff Layton Date: Thu, 11 Jul 2024 07:08:12 -0400 Subject: [PATCH v5 8/9] btrfs: convert to multigrain timestamps MIME-Version: 1.0 Message-Id: <20240711-mgtime-v5-8-37bb5b465feb@kernel.org> References: <20240711-mgtime-v5-0-37bb5b465feb@kernel.org> In-Reply-To: <20240711-mgtime-v5-0-37bb5b465feb@kernel.org> To: Alexander Viro , Christian Brauner , Jan Kara , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Chandan Babu R , "Darrick J. Wong" , Theodore Ts'o , Andreas Dilger , Chris Mason , Josef Bacik , David Sterba , Hugh Dickins , Andrew Morton , Jonathan Corbet Cc: Dave Chinner , Andi Kleen , Christoph Hellwig , Uros Bizjak , Kent Overstreet , Arnd Bergmann , Randy Dunlap , kernel-team@fb.com, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-doc@vger.kernel.org, Jeff Layton X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2583; i=jlayton@kernel.org; h=from:subject:message-id; bh=xTk9IFiZeoZdqPbR7bcsVc6tPLRLkOIJYDVl81q/MME=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBmj70lhNewWHh61CO1bt11704SMJNMRrO6Etw2W 30QskLPOVmJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZo+9JQAKCRAADmhBGVaC FWr4D/9/BKDDLNpeTxoxJKR9NnOB0Mj4UHHvSvM5FydPU9wm1TtZNljZG5FdmhRnlVA/EU3EXzh jf/KKNDLSi/SkxpUOyQcE/LCWROpGNQa8YBQVBIrykpJkAuUaTSB/x3HeDxG1iNhLnyZOP6wmv7 CKV77Ru+Ii2wwDEoVcJ5lK/s9p0eidSnOxpZhJLK+yjjY5n64i+NVh/Is5z0+bCWVJC/Wkm1RH+ tNa1TaLjw+meKTwcACY4E5sbvvFtJJAboc11Ga/shYG8MEikSL+PEnLXpy5qovDMn0a+o2f0Ym7 k64mPNcEDEbQA+pq0VFMER0k2zzjogtxHfVDP8CPHs44giEoqX+5QRMSB4qlvElDZJeYfOfNkCL h6CgItnEYUOg7obynfz1AKOmd5WeuEpHoH32KDvJGcr8u+wNqFW2bjON7JpfxXdiNQg67aOX3i7 cqM2H4I2b+Owt1/0khoFpTec36REaIYLbwYzuJl9I7knlouHgymKaeJNYKdKPQUrPgBa6h9PzRd r8gQtiz/H1OwqeSyKf7WhIqGVAa/TI7+AkAH4tyAEzG3AUdzNctz4o5MbhhGkRzOGJSTa3wkQiH iZ1RyliJcivTulNvI+EYYJoflW+3qIliMy3wtk5seaDzPMrlZJO7+uQTJBw7YAlp1Y8S9F7YbXU acGupOaNKLqwSnw== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 X-Stat-Signature: mets8yoog7xginb7hwzmzegbq6bjdakq X-Rspamd-Queue-Id: B39EF4002E X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1720696132-399776 X-HE-Meta: U2FsdGVkX197ohIi4QYpy45OQV8ESFZOV+M6smh8CU9KJ6c8R9jt4sZU4YSz+QeODSE/5XK+YjYiSwjf1za0xBz0lEpQ4I9RWdUfg9li/rsgmKHzXBriStbSAVHKE2Rq2/aBrJMaRiykKxrImQlgFZJ5YWcYINvOAkOauuwWHkDY4wHmcw1RWl1nTt2TzCMy7pQdAmRw21/ZD7BiNQmruA4v5p8L5z4IOjYKiq8RCFacFAtWKzFmpsD7P5zK3DwHcHI54TRMLVAjpzQYUjSM0NuGdN9RrOMSYfaooIUqtpCfha34C6kF/HRAEghE9+kDgPkDOLr2e7z3k/648sJKBfmWG10hn6cTTfHfOXm9FijHWw6gFjRMDwDapBIZTlHj3MPuaRG2n9Za5tGuorPfrmOmQ53w6i0uYh+O/Ctg3C8BukvT1N3MRIXlBCP/VZNCZkXAvFU/egCfogpnSJZ4QjNF0Vlk1V4FnSv0kDF/UDoHdi0oW5Y1ZKO6km7qOZ3TvuB1VQDrViVn3vzPKW+Uh7Zs3TEWyjj7PrIqPzDANPeYonpmdwatdtdGr8w+vGizZtJ8kQFUoRzuyfL6sAHIWgLMECxbMM6hsbRntgVPBEV/XHi2yzjShMa7rMwjufmrZE7wwgPAXtIjfIH+ZIkdFLwamjLFKUxJlVRyS5QurYEGrg5lOAoVriYnxT6KQIfZ9ElD2SNH8ckrFOGiJI0cpW+izRUZ6pjjfc3r+yTweaAOzhmmG3/G/4KAHGFY8JuaFeir6sT/trbxHjraglWi1XXzhWvZgILY0NyaExGgX+ZUHcPrSrnt0GBt5Q1OnLdaEU+NOdCPHLOlyF7YTQikyuKa/8H/rSESKN0i2nx8hljexFYcYlECLTT4GHe/HjOHyH3GgPdvYYCnjchVfMlD/jQh5ARrsKibrt0P++AeHgimIdP8AkKTHvcT2k7jyyvKwzUqtnRfYrPXQeiyXKJ IyB2+yJ5 yc7IVVwC8e41Kgd5D8w8cFB5x8ebV//juLXRSCKRmVHB5NVOUwXQAPZJfho7gY8TLfomcfJbLLdK9z5sFLkSOHGOpMKkbK7rrDWJZEYuNuVrkACVRb17d2h5KBDfyq4YhoTWO7PpErgHiCWTV4tJaYp02qVNbnPQnh+LlThm/wYVCpDXpp6RHYLiz2Ef8AqBt0QBVsB3bUhWtdVhzy9NW+He0XZQEo1zwaimvuW9y++PWizPaCT+IBWU7jUlc9lAEOuFarmVHgZG9kGaTHdqYHVcK/iRk1J1T7T6HJUn3WZcmRZtI/iDpogWsqI4HC1aA8/Q7YhPJsXh2+88pRkexSkFnW3mKUxyVk55ocgEzaZFV6J8= 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. 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 d90138683a0a..409628c0c3cc 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); -} - static int btrfs_write_check(struct kiocb *iocb, struct iov_iter *from, size_t count) { @@ -1171,7 +1151,10 @@ static int btrfs_write_check(struct kiocb *iocb, struct iov_iter *from, * 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 f05cce7c8b8d..1cd50293b98d 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -2173,7 +2173,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");