From patchwork Fri Apr 18 01:59:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14056543 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 49D82C369CF for ; Fri, 18 Apr 2025 01:59:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EDD996B02A4; Thu, 17 Apr 2025 21:59:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E3D0B6B02A5; Thu, 17 Apr 2025 21:59:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BC6E96B02A7; Thu, 17 Apr 2025 21:59:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 97CB36B02A4 for ; Thu, 17 Apr 2025 21:59:40 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id A10A51CBBF9 for ; Fri, 18 Apr 2025 01:59:41 +0000 (UTC) X-FDA: 83345508162.23.256C6DA Received: from tiger.tulip.relay.mailchannels.net (tiger.tulip.relay.mailchannels.net [23.83.218.248]) by imf06.hostedemail.com (Postfix) with ESMTP id 65D4A180005 for ; Fri, 18 Apr 2025 01:59:39 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=aP42K654; spf=pass (imf06.hostedemail.com: domain of dave@stgolabs.net designates 23.83.218.248 as permitted sender) smtp.mailfrom=dave@stgolabs.net; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744941579; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=zEOAmzE+sZv90XpMJsEcv1fdnAY2ZyFOCOVC4uAZkCE=; b=GSsSKaDgNtEWsR+lKk7/sAZcxORKI6Q+1VXbWtWieQxcCOdctLWNyaKZK18Spjh8IW4nBA SR61GiPgCVS1Z2NQK6ejADOZ6OoQkPfXpP2aInnePwKbeOuOQ3ZpEIHBLhiBJzLej1+h5u Fv/nO314UXSPUb/p7Vf/6I9hkpHkmK0= ARC-Authentication-Results: i=2; imf06.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=aP42K654; spf=pass (imf06.hostedemail.com: domain of dave@stgolabs.net designates 23.83.218.248 as permitted sender) smtp.mailfrom=dave@stgolabs.net; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744941579; a=rsa-sha256; cv=pass; b=a3ImJSoz6fwGcl+LnQ6Vau4SRgJiCWIexqlKrH7/stqFii+/GWCE8Mwh735ixbxb5CuSA9 u3He/1yS0o8V+VKy6T2iYiiDflcQCUtuAMLHrXWOTs1y3YXa6rYiXvEFjAbq9N9UW6EllY uDa0M2jt+VdJbKAK+KRQ+KS+qP6Ed90= X-Sender-Id: dreamhost|x-authsender|dave@stgolabs.net Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 550DD1A39AF; Fri, 18 Apr 2025 01:59:38 +0000 (UTC) Received: from pdx1-sub0-mail-a285.dreamhost.com (trex-8.trex.outbound.svc.cluster.local [100.110.156.188]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id E74541A41CB; Fri, 18 Apr 2025 01:59:37 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744941578; a=rsa-sha256; cv=none; b=0WM6aWy1czVlh004anQ08oBZzarf7qbIHK49l2C0PNci6u4idl/fYd2oOL7O3Y8RB+5IT5 eIRenJTXjk8ecCuiP9++rvOKQYT8Grmm8CfwitFMCmo9TXfd1nPI57+1dCq0AMFiyAB7aS wzvrvImtI6kRz9vIOHtNFleXwqkjRJHvsGOGso3Ui1r3E5Tf7zWH2pmhDGYAgFU598ckla kJT6mlhVKwK3YMyYyPYbabwGXgV5V8vJAVMRSKUSul7rZI7B/ssvimUI87/gOHLX6eW+3g A575Y8ARzjTwFNjIQCZjZTMNH7GrZNtuy0TOBL6h317OW4xSBoiEMCBg3a45vQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744941578; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=zEOAmzE+sZv90XpMJsEcv1fdnAY2ZyFOCOVC4uAZkCE=; b=PU/jGGb/J/pdwkoeDhPVnnQ4+TkiUQYWFsODQbLXS2Gb3LgrfZcZ4L+l/JfWy06arnVuHq MGUob08FU78E/gYmQ7v59FXZRILmUcnglGL61EnV6t2tmBWT72PWvLbwnO6LXvlOFG8s5o Mz+Nk5lDTtRZX/4XhLhqwUAHjDLg+NDeAbIOenJ+Pm3G8bYfVNXlfkWFrDVXrLeR7Ey8j+ iKmlmK6wLwfo/KhpwM6SkFkSIRc57h/I/0mQOWhjvzyDbdTAjdLpapgSSN9vAGojFa7UOk 8e86ZLSAfj4OzBcaBCSWCJO1ySAyiE2cDLsCux81G23Psjvx6eIl249vEi9BxA== ARC-Authentication-Results: i=1; rspamd-7bd9ff6c58-xxcc2; auth=pass smtp.auth=dreamhost smtp.mailfrom=dave@stgolabs.net X-Sender-Id: dreamhost|x-authsender|dave@stgolabs.net X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|dave@stgolabs.net X-MailChannels-Auth-Id: dreamhost X-Desert-Broad: 4c3fb7e5001df433_1744941578239_2862724236 X-MC-Loop-Signature: 1744941578239:1903151097 X-MC-Ingress-Time: 1744941578239 Received: from pdx1-sub0-mail-a285.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.110.156.188 (trex/7.0.3); Fri, 18 Apr 2025 01:59:38 +0000 Received: from localhost.localdomain (ip72-199-50-187.sd.sd.cox.net [72.199.50.187]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: dave@stgolabs.net) by pdx1-sub0-mail-a285.dreamhost.com (Postfix) with ESMTPSA id 4Zdycn0ZBJz88; Thu, 17 Apr 2025 18:59:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744941577; bh=zEOAmzE+sZv90XpMJsEcv1fdnAY2ZyFOCOVC4uAZkCE=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=aP42K654m4vLdWbMLGpstTsOj6HsVlFIbRoEsYxp+M4l5rHuQOLl5s3Y+Uu2yyleX e7toEc9FSD/kcVOlHq8ye4gVpURDInp3MEGBc+P8h2XaOn1VhlTnPe9ViOvH5zr5Ld jCKEEkgIZo2HR7iAa45LPOHY3ffMDrv9M6TGCNyjAf+1eoA7d7kRiNuv01sQW+YmDu IGZJNnKnKepZ3Q9FXW9acszetdtp26TcO1yAUlbK4oeyE4gt0nD8swfNvZlF4ipmTy aIFU6+ooY/Apvfeh9Gk8xtdeBbs3SHKawZrL6PU9TLpbIX5oUb+WEsMgmrbxsUEi4l TLnezOQh0Hxag== From: Davidlohr Bueso To: jack@suse.cz, tytso@mit.edu, adilger.kernel@dilger.ca, brauner@kernel.org Cc: mcgrof@kernel.org, willy@infradead.org, hare@suse.de, djwong@kernel.org, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, Davidlohr Bueso Subject: [PATCH 5/7] fs/jbd2: use sleeping version of __find_get_block() Date: Thu, 17 Apr 2025 18:59:19 -0700 Message-Id: <20250418015921.132400-6-dave@stgolabs.net> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250418015921.132400-1-dave@stgolabs.net> References: <20250418015921.132400-1-dave@stgolabs.net> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 65D4A180005 X-Stat-Signature: yn8x1uc1adhi61qobqk1oy3fjb7zpyfk X-HE-Tag: 1744941579-209817 X-HE-Meta: U2FsdGVkX1/+Xwb2rBblrr0/wv6BDBvu2bx5eOxlHuSx66rQq3o7ZZpBVbPZ6D69Zw/hS0pKwznkjQcte+Bpm210pQM53+1midtIo3ptGFgjsg0e2IP6KPHmmXeSVb7IgLjd6+D3JEtGGlv5ahCZ+cmUKBNjglV/yKWfPmOdyNyn0TYtmf+sAas/FyeRPFm/Mw5qj2iA0tadYY02SaHE6xQUJMEEoR400dezsgPDOLAkFZEZiXSKcNeTfYtC7X0P4Kp0G9snr1ni4EqM7QLJczb6feaqZJLyh6hwgb7XcltH4V91qIOKU1c4TiAr1+oLFsGvBaOHtlkY4mLk8nKuv/oMp02pl6Hwhssb9w/ofLBzkL7NF3Zg5KJCthK7Ga7yfRx8jb1+kEWgie4bmoV8ZfWXLtmXI9w7vzB/F13itz+5PtkH9vqoxytOx2qfsRBi9wY1lQPPdAs4jjUUb6buC/zjfGtOjZXIlV+DJd884WahtPPpd+9Q4U/Dvs8Vx+JvkcM8kIqxrHmpXIPWIl9biIMtWIX6X8ZcqYbMyaGZs7L0ogdXxm/gRjKa3qz+J8mT+UP0PmvFcu0X/3QBNiFcVqkW3CemosH2vyIHgic9TLHiVuyCUU8l0V6iOBDMqxVw3KP2O40iOvRoxae+rOqhzdpdFhDnc2KQtxdDYlqtiSXvzwGE95axGMzHPPoJXeTKhf2uO3La4e0vjnCUOp1Ul6VYnd2BTGcyfAIUzfuw9a6BNBJmlVVIQMZkvmSaIqtOLP8UgZTG8ZvM999c17a9wIp9z/0JqDYo4IXYAK3Jrck0UYHqJzg7AB/W0gCwhVPpjSHScUSk/VE78IpcpLlshRvB/wBxNMOJMdhnwQZIaaon18FsC3pdCXfUi9D8q9rOTU82wO9h48+D4WEYDeGtLb6+vBvmdcfoLEpIftYsxJU9lUn71ODItWvL/9owgWASi6RU+tgmfW6ff4yHBRM Gibd0vNv s2aAGlYaQhENyX02ExIB1FESHgwyQgk9Vp3DE+6g+4tc756T+2umekQpAYVP2cU6q4Oi7HoZvBNkjcpJTbiPwYAhw8kUIxa7VHSdJ+qNvtArg9TUZeeeXKFnYr8ALOCCrjgJIBmCDBWIvRlbID8xq2iV61nT1OgmFlX8CS2m57fN+jh6V/CkdPMiOtaZjvLfZLEE38D6Yj75iUjXSQbOOifiKw9SDkxWWJ3/Q1jWOeiRtnYeuj8taNQao/NStL9pNmnB54F6S27JaIJ9j9uslvxWzz0FSlRmqf7ou3a0kz57XqrOcqWEgt4+xzOSCrRrx4QX8ECqCLEifN+MBNP+p89k7jrfAWhpmM0IqlUf02BoZ9fSNpD7B/p8FRpSnFTLeDN1XR/oBrW2yNns= 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: Convert to the new nonatomic flavor to benefit from potential performance benefits and adapt in the future vs migration such that semantics are kept. - jbd2_journal_revoke(): can sleep (has might_sleep() in the beginning) - jbd2_journal_cancel_revoke(): only used from do_get_write_access() and do_get_create_access() which do sleep. So can sleep. - jbd2_clear_buffer_revoked_flags() - only called from journal commit code which sleeps. So can sleep. Suggested-by: Jan Kara Reviewed-by: Jan Kara Signed-off-by: Davidlohr Bueso --- fs/jbd2/revoke.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/fs/jbd2/revoke.c b/fs/jbd2/revoke.c index 0cf0fddbee81..1467f6790747 100644 --- a/fs/jbd2/revoke.c +++ b/fs/jbd2/revoke.c @@ -345,7 +345,8 @@ int jbd2_journal_revoke(handle_t *handle, unsigned long long blocknr, bh = bh_in; if (!bh) { - bh = __find_get_block(bdev, blocknr, journal->j_blocksize); + bh = __find_get_block_nonatomic(bdev, blocknr, + journal->j_blocksize); if (bh) BUFFER_TRACE(bh, "found on hash"); } @@ -355,7 +356,8 @@ int jbd2_journal_revoke(handle_t *handle, unsigned long long blocknr, /* If there is a different buffer_head lying around in * memory anywhere... */ - bh2 = __find_get_block(bdev, blocknr, journal->j_blocksize); + bh2 = __find_get_block_nonatomic(bdev, blocknr, + journal->j_blocksize); if (bh2) { /* ... and it has RevokeValid status... */ if (bh2 != bh && buffer_revokevalid(bh2)) @@ -464,7 +466,8 @@ void jbd2_journal_cancel_revoke(handle_t *handle, struct journal_head *jh) * state machine will get very upset later on. */ if (need_cancel) { struct buffer_head *bh2; - bh2 = __find_get_block(bh->b_bdev, bh->b_blocknr, bh->b_size); + bh2 = __find_get_block_nonatomic(bh->b_bdev, bh->b_blocknr, + bh->b_size); if (bh2) { if (bh2 != bh) clear_buffer_revoked(bh2); @@ -492,9 +495,9 @@ void jbd2_clear_buffer_revoked_flags(journal_t *journal) struct jbd2_revoke_record_s *record; struct buffer_head *bh; record = (struct jbd2_revoke_record_s *)list_entry; - bh = __find_get_block(journal->j_fs_dev, - record->blocknr, - journal->j_blocksize); + bh = __find_get_block_nonatomic(journal->j_fs_dev, + record->blocknr, + journal->j_blocksize); if (bh) { clear_buffer_revoked(bh); __brelse(bh);