From patchwork Fri Sep 13 13:54:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13803496 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 587CBFA3757 for ; Fri, 13 Sep 2024 13:54:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BAF5C8D0007; Fri, 13 Sep 2024 09:54:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B10568D0003; Fri, 13 Sep 2024 09:54:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 93C768D0007; Fri, 13 Sep 2024 09:54:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 6E8008D0003 for ; Fri, 13 Sep 2024 09:54:51 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 2CD511C6D4E for ; Fri, 13 Sep 2024 13:54:51 +0000 (UTC) X-FDA: 82559860782.14.45FA30B Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf19.hostedemail.com (Postfix) with ESMTP id 757FD1A0011 for ; Fri, 13 Sep 2024 13:54:49 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=YV9h2BHP; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf19.hostedemail.com: domain of jlayton@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=jlayton@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726235660; a=rsa-sha256; cv=none; b=uZwutSVSiPgdzYU3n4zDKibzi2zKapDh6vZ7o3NL8jesHCqIDiZkH2ZcH+R1E5n2bcBqJb srQbH/VvDzwSbtS430AAdUcRc1RxGeyGJJ83Gf6XkNDPDLQAnf5B1GnWE2USu/i30oPSYk K+SqTsLt+Ru0DTCPaNDG71w8EvdJevc= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=YV9h2BHP; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf19.hostedemail.com: domain of jlayton@kernel.org designates 147.75.193.91 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=1726235660; 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=CcK5gXZHFTygIoeMdMrBPbMQcalLekOdhRCqUiefQXxvnagfjHOpFO7/Pb+S7gXGtMVEN7 kVUjM74XaSpEXKQcTUN17qXsVg6wKFNqYCiJJOnhAWrsmSwIGFCW3GbYRXoioKFQtYV/SE 21Nuv1fq1PlIxNGljIT5JBrv7rXO1TI= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 12686A44782; Fri, 13 Sep 2024 13:54:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D67F4C4CEC7; Fri, 13 Sep 2024 13:54:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1726235688; bh=gD0wNq7Gu5j1JVptVjT60GA5HV2tmuyZD0KoREfuUWw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YV9h2BHPgRdlUgYO3F/CqZJt1Rc/2kCQcYi69lZ21K5cNlZZts+4iWAGlgUUTCoEv X3ewd9YOJGoyXgtot3C5RATvBsQMfiA8U+bY2D6M2qE5IoSDEUqnPRlFkIweuqZ/PJ p6edHrAfSGy/gWeiV1jyM678J00iCIu4ZfkPezDpqy0iiN2Y20rrMZjWUPBOMvfi3J oxtD9Cx7nCkicldPZdtC1GDNSYPk/YV+IUiN4kOYKZZobWqVk+lY4XWOfNMmqYQ8HG R/xFCBfIim+nQ8u8mt/T2s/WQQ4BpIahixAaZEp/mKbF/Bzyg95VsbaGRUQtmGcW4S FB+JjuV+ZVzvQ== From: Jeff Layton Date: Fri, 13 Sep 2024 09:54:19 -0400 Subject: [PATCH v7 10/11] btrfs: convert to multigrain timestamps MIME-Version: 1.0 Message-Id: <20240913-mgtime-v7-10-92d4020e3b00@kernel.org> References: <20240913-mgtime-v7-0-92d4020e3b00@kernel.org> In-Reply-To: <20240913-mgtime-v7-0-92d4020e3b00@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: 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/ZANAwAIAQAOaEEZVoIVAcsmYgBm5EQJki37/yNYFfRJD0xfVng3Rl9sd2OKealIZ wgN8YU7mDSJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZuRECQAKCRAADmhBGVaC FfCyEADHfVc2KbEBjV91v6AyHwyXWTddhIFLhoAxtZI3VehsvHLino/KQ15ml1Ehn1umOKyoJHb gY+BrYSpB2tTAaHIhBIdR0SJFSGZ/uJ3rD+KMcLIoLZB9GynRVKT8WLFf5/QAkuXYemXgVi7Mvk M0PyfSTPIUSkm1nEz6R7/fy7xv1zeYiX7AaW9y5JKwarbS0IA2/GEIfyyKiW3QhG0ynu60JX/lZ ECCXJWF1GG/7Rb4DBGb8UUMYNaxZ8aguK5eNDBG0NSsxUQg8zrTFKbg8HJ9ZAZ3bbYqLcRwJJ1E Db2ReX2fFW/iP5bZCikSTb2hxmA4/RGdDHSdURzG0r6Al5UbP2D7SuoUtztPW7AUq4WDKGQfXgZ F/E9+m02g7WPTNyM31BsAqkjWVBAX6MQpLU1mKyB6s++j0DFdPwo2OWwSnhR9HIqUxiyhDkZ0V/ ulmMZN+bjwIpUQ09rEzRmzL+1464X4wNk788Qosy+eceKV3wZKDgKSX14nVFiyWdbKQohlkRNPK Q+awpe8E+yDMrIFOtc/HIdvUKgq1zAkMF7IV1lfYMCAmp1bcsnLSQQOWKjWM9Kr6IywPztPFerL kZRpfsYr5QYY7quhuja5CbrvHJER8N666wveTyecwDl1wcChHfX8HQD+6wrpNoqO/5lffPcR5q7 hpIwg4Kem0wxJ5g== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 X-Rspam-User: X-Rspamd-Queue-Id: 757FD1A0011 X-Rspamd-Server: rspam01 X-Stat-Signature: c4qo3mypzuh7dzd6fiprmn6c5opd7rkk X-HE-Tag: 1726235689-666599 X-HE-Meta: U2FsdGVkX1//skHMfuynhVU5vdyH6SMvlDslc2v3ACCffZJ5ndWW62huzN3MbJuOkCw1yoIAlVpLY1MnDN8U94aARHqhh62rpI4QJgc44Y3KdNtvAIzxLxkOT0uVuNN27RLtz3fMJf0LDjSqiUWuL/7y1p3A3Sm6zejdeFUeuVpzJciDMqzxn1EBCuRTCyzl8Syp8aSmF0/Gdd6qfPF6jpteJvREgLTKu8zPEUU+ze46a1N5ufHNBPtINMgo1NVaFwvWQWB4NdSYmSjhq0ifsSRPxfzYAYbOw0Ar7/sOJCeOXOcj3VqCE7CGs9bd9My3qXsLetZ5glTsRPQrmnNXgI61bdInr63WpqW8tk0Hn3pRmujB01zctcuVkQAOAIIvdcEVw5qQHLd4NHd8BmYamPePJutCi+HaYi5QZ2T35FueyO/WMf1CQMtlwFX803A7oGhaSsDWnxFI7X9BlnXoN3oPwtTqO1Iy0YnkpFdsyizYBr3Hk74lBhRdLPwZxC42KuTaZLCvNXpVDM3ndCBcizsGqGUOWKhEcM50KO9SnA1KkmRf3eiXLVWJJCW8bV2YmpRNRMsob+kLGWh8U4bB9jXDOwjuFhEBX91V/fS+vFvCC9ugLH7lcOsYnzNco27U+ClGc7NekDCmY2udTK7Qif/T6Z9do8elL2uJ5EQlOJsGijTvxuUw6myqRHP6hHfm58oO3oaRVB/rmUuriFGnaHIWZL3eTd5+vWIfzJPjG0+88BOC2s2SqQjvf5s+K/vNwOeA5upLeOWkkzjyV5dKTWMH6u6DO88yui7uLSzhyR8f16T6R/vJk2KkTqBxOdbM+xwjrHgMH3vRaox97v+sMPD1/p6BcJoHOSVnGynI1egKCRLYpCX0aMIovPfprX28+TEM8mT1/XOi1b/MPsBg8dQKT4L9mFbCCDJR34MAbO5gV5ZUavVN/p5pHZvGSN3GcGD4IyXAuYXj6BBrYbI CGxrIdWC cAKHRYYuP2SLo3Fg9EaGfCJbt+JzRjVBwQr7JKXd+r8mwI3q1aZwxXqbreCn1//AAvm+D8uTW2DlMFUMTpS7uPfpDSF54NMRFLiBs1iL5bTRkD1RejEoP3q1W6HDBaN/ihs1NsYzHRJz6yTTXeB2dfJIUA2a65RCBpj1cEOffL7aacLkBin0dEYQZgY0e+osC5o8g0oMVe4WT/3qQLozs/L6xa2PKGKMjMwDwb58+5Abm21SQ1+aLLNiFuBdHq4viTtc++y2rC1JYLB5uZVURLRLBVttq81eVLw71ppVZ0W/F0al3mUPuWl8KYA== 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");