From patchwork Tue Apr 15 23:16:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14052921 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 61C48C369BD for ; Tue, 15 Apr 2025 23:16:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 732E76B01AE; Tue, 15 Apr 2025 19:16:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 61C7D6B01B3; Tue, 15 Apr 2025 19:16:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3D5CE6B01F0; Tue, 15 Apr 2025 19:16:47 -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 137896B01B1 for ; Tue, 15 Apr 2025 19:16:47 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id EA0661A1713 for ; Tue, 15 Apr 2025 23:16:47 +0000 (UTC) X-FDA: 83337840054.14.31685F4 Received: from siberian.tulip.relay.mailchannels.net (siberian.tulip.relay.mailchannels.net [23.83.218.246]) by imf06.hostedemail.com (Postfix) with ESMTP id 829EB180007 for ; Tue, 15 Apr 2025 23:16:45 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=Kj0RJwy1; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf06.hostedemail.com: domain of dave@stgolabs.net designates 23.83.218.246 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744759005; a=rsa-sha256; cv=pass; b=NPE5oz/2uHH11csbG9l0OAR0t4qscQgZopvJwUKa/AnxVOl1cFUBAIYgFA2t/byYzxcs59 F9CFojmVxh1Q0EUKCFJpyX+IsfIp74A7050u9ZMs6TTxN5i+wV9D6fyO2j3Z/WHCozvUsa TDKLTHlfvvZJb477+RF5ctbJN65MuVA= ARC-Authentication-Results: i=2; imf06.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=Kj0RJwy1; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf06.hostedemail.com: domain of dave@stgolabs.net designates 23.83.218.246 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744759005; 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=JHAbDv9/MPvL4PxZXFpm47ZYR2SHKjfrJhea+dpq7dE=; b=MJa8i5UZq9pECBgtgv5qTCULIhJEcpCVmAhGEllASLYWOUnAflH0u12Qo1LW36d9PI585h cOgcajc6edYO2fk4Gg7SDsT+xzzYt+le6KjcxCpWbLZ34W/hOiVgb4dzjGQQhjtEwrDVoB u+wjmCmh8+gDb8BRQWKlMJWSzfclvc0= 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 291318A3920; Tue, 15 Apr 2025 23:16:44 +0000 (UTC) Received: from pdx1-sub0-mail-a273.dreamhost.com (trex-4.trex.outbound.svc.cluster.local [100.109.60.75]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id B953C8A37B9; Tue, 15 Apr 2025 23:16:43 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744759003; a=rsa-sha256; cv=none; b=E8q9AoP16/bQrOSIysV6vFRwf2hwlPb+gpx4QjTzLDEASMsII0oXTaHaO3DqZj9mPmNMKp pw8gJxmwDRjpxW0q/rSo6uh6LYGcD1BRDbF68uvdpwsWiihAadWaDQpB+SyFlL7UdpwCzG AThbaUjVDbJSr41KXjSm29PZGy4OVin36tST+By4VoGqR+cstQXBc3fBD5Hy/Jrc/bD3h6 3KWZ6InKARWkuAsgE0quf0vX5I/KGkbhHQk8VQSEa5GPHY7WgYEUBszjcyFszRcQkmxA9y h2ny6lSbxlMSAa1ao7On0tvuEVtfcv0mID/pPNRnYzEbV7OizBEGYOIZvJznkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744759003; 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=JHAbDv9/MPvL4PxZXFpm47ZYR2SHKjfrJhea+dpq7dE=; b=XYGWqfuOzpmW1v3Hf4Y1goMr4pfqD+cNF0i+Fdb+jy8k1fG2je4gP7q5FP1i4DGxsmp5b4 3gzxF4bmhrYkm8/6fKkMZzYCkFjkS4AkOe9Az649mqetAxusYJ5GYcZdubDAqAl2bEQumN HDeRXfD+HJrorQsEVKY+3d1sCI7igAGn5xCmrTCjhSe6xez7pCTDPDYnhWlMAJ4dQDPBJt x17zn4QhrME+khADI5WP11eXLx2M5DTaLcqMXosxu3SNA1mrCAhYBZwOPtPNF58mNWFGW5 lBa69SlNKnaI9XfDGPU2zVwDl/VTsobiEWE2lTOKbkEvzx0ndC9lC3DnPlgi9A== ARC-Authentication-Results: i=1; rspamd-5dd7f8b4cd-4m6r4; 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-Trade-Trouble: 70ffde75512becb1_1744759004055_3358966167 X-MC-Loop-Signature: 1744759004055:1312116752 X-MC-Ingress-Time: 1744759004055 Received: from pdx1-sub0-mail-a273.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.109.60.75 (trex/7.0.3); Tue, 15 Apr 2025 23:16:44 +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-a273.dreamhost.com (Postfix) with ESMTPSA id 4Zcg5k6RFrz2Y; Tue, 15 Apr 2025 16:16:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744759003; bh=JHAbDv9/MPvL4PxZXFpm47ZYR2SHKjfrJhea+dpq7dE=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=Kj0RJwy1xI6A26/9JRzYZ/SPJxCVIPwxFkYWCE+3zKwbTUhV9Min7a+cJxHe3DKjm VHDkCbHhsRggnKKiq6Gelr8UzT+XDZGyeCVmpH8XNH/VvYBusKTWhtaXXNqPFptjjC VpCoVbMglaH7lUEJv581uzd2CIgKZvK13COe2fKcph7iw8guMayFX9i60Fcm0fw6h8 zxSfWdM0oD1y1T5Ia7R4ylOf6/Fh3g5uqBFgqUyUCoTX9m5irIVLo0Ma7Ty0NwBdom 5f+NNPwnwCRnPcTEOTi19doW605M0FLe8nwQumORVXyW/+PH4W2A7i7f7u7BukFOqJ CSuzi8SNSgmIA== 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 1/7] fs/buffer: split locking for pagecache lookups Date: Tue, 15 Apr 2025 16:16:29 -0700 Message-Id: <20250415231635.83960-2-dave@stgolabs.net> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250415231635.83960-1-dave@stgolabs.net> References: <20250415231635.83960-1-dave@stgolabs.net> MIME-Version: 1.0 X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 829EB180007 X-Stat-Signature: 5yma854h74oqi3s9wdidejfrbzah6i6m X-Rspam-User: X-HE-Tag: 1744759005-373132 X-HE-Meta: U2FsdGVkX1/wg/+FxgXNhDHXuCIbzor5UHuzaohn0pSvHXh6MjFjrCwV4BqnncgMS+21rRInYljFcwZomZkJqaGF7wlDLPIeGR5smqWHXH47gP4U6NNPKodt7/CCyzAOs/XDir/qRu4MlD4iUDkv+DqCUIEzf6yu7uFVHaAseSbDqsaQKxaoM8kZwrj/MTh3ge/LFMrRJaMDy8IfvevqByHM0IR5EWXvsA8DQ1gC9/Mj0U0USgo+kDqkNklgO69+y3yhVD06T4Hj9EPwYOZjxS0n6teRKI9gTAs8gZt8TbJtj4tSdkm6pcsjD8ExHyhvboZw3f610lUHAJ+uzJyKKJI7hHCC3rrP1sZheeEFZdLMlFf00Uj87Hap4qteUA3aYrJGJ6+4zVI/W0hwpi7FlUzXPwIWMwfXPQrppo5KGYln5nsFfxk9BJgxSz23JJ7rseCHiBen9SlHMHDCNGjdl3BLfariHBkNDPOdEtw2lbJMprtLCadADF9z/p4C25wBpYVVk/6MOw7HBL4FpcIi7UOXRO0T1mxolFeVLh56yAnUDYjXlzImsyjL7WJUyYB0/W4c1Orh4rLoWocdFDjM5F5HajKmLdtaaYouNK6vKyTw5soZNyDdhpLX0CoUlJcCrLoQrtfQthsyWthfpeiSyHQPJUla1J76C1poc0RtBCnHlnxXuoO46Fw4cWuzJJ5s7j2gobbZupJ4KxDJEtmon7NUIF92vDFhDKa3zTzdjFc+1xl86PgVByI00QioQxZRdfdJOEUiu8rBOk9tV8ceZkve0tzjqeptg8CSaGRjkSKF2njZKtI1sHID9FGSltf4B6U6Yb4wgc6EyvHLjsdJTjnQbDNRHvN2o8q57YP/ekaAdJthr2GbnElQBJbGIKEWsaV0tquFbPWcyxjI0xU1stoNLjXB7txmhqUuvmjcJAxWMzK3PPuqXk9kg5X/iDTAIpqQS1rkEPG0Pq65+ms am2nF9On NhOSEou8Anw8u7ZrjkALm8Ii7Rp9hPHj3/EckItuSDP37Ab7zXGvDnYekIUWiX4pSkllGhtFpqpTh7rpDgWSvhJYOhaeakwHP2G6VL+k4fTE/bapnLLpAOZrwr3VzXr5rOe9TN2ZZe9VJq4PDVq+OUd4+r2kXeAEk51y/g0e8umCyJI7oQtpyzji47jMOR+nYj4+lELODD9ooOriW2ovfK2ZZoK2zb3T5qu9mhtgQAk1k/FEphT/CY182Ri06MHCag49mweMbU4ku9jUrAAo3eImW2VqsbNGxbyULkRuRyUuf7E0zGsgF+G/iOUbDcx6ZIQXdsyX/U/zOnp+fGQniR84IkA== 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: Callers of __find_get_block() may or may not allow for blocking semantics, and is currently assumed that it will not. Layout two paths based on this. The the private_lock scheme will continued to be used for atomic contexts. Otherwise take the folio lock instead, which protects the buffers, such as vs migration and try_to_free_buffers(). Per the "hack idea", the latter can alleviate contention on the private_lock for bdev mappings. For reasons of determinism and avoid making bugs hard to reproduce, the trylocking is not attempted. No change in semantics. All lookup users still take the spinlock. Signed-off-by: Davidlohr Bueso Reviewed-by: Jan Kara --- fs/buffer.c | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index b99dc69dba37..c72ebff1b3f0 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -176,18 +176,8 @@ void end_buffer_write_sync(struct buffer_head *bh, int uptodate) } EXPORT_SYMBOL(end_buffer_write_sync); -/* - * Various filesystems appear to want __find_get_block to be non-blocking. - * But it's the page lock which protects the buffers. To get around this, - * we get exclusion from try_to_free_buffers with the blockdev mapping's - * i_private_lock. - * - * Hack idea: for the blockdev mapping, i_private_lock contention - * may be quite high. This code could TryLock the page, and if that - * succeeds, there is no need to take i_private_lock. - */ static struct buffer_head * -__find_get_block_slow(struct block_device *bdev, sector_t block) +__find_get_block_slow(struct block_device *bdev, sector_t block, bool atomic) { struct address_space *bd_mapping = bdev->bd_mapping; const int blkbits = bd_mapping->host->i_blkbits; @@ -204,7 +194,16 @@ __find_get_block_slow(struct block_device *bdev, sector_t block) if (IS_ERR(folio)) goto out; - spin_lock(&bd_mapping->i_private_lock); + /* + * Folio lock protects the buffers. Callers that cannot block + * will fallback to serializing vs try_to_free_buffers() via + * the i_private_lock. + */ + if (atomic) + spin_lock(&bd_mapping->i_private_lock); + else + folio_lock(folio); + head = folio_buffers(folio); if (!head) goto out_unlock; @@ -236,7 +235,10 @@ __find_get_block_slow(struct block_device *bdev, sector_t block) 1 << blkbits); } out_unlock: - spin_unlock(&bd_mapping->i_private_lock); + if (atomic) + spin_unlock(&bd_mapping->i_private_lock); + else + folio_unlock(folio); folio_put(folio); out: return ret; @@ -1388,14 +1390,15 @@ lookup_bh_lru(struct block_device *bdev, sector_t block, unsigned size) * it in the LRU and mark it as accessed. If it is not present then return * NULL */ -struct buffer_head * -__find_get_block(struct block_device *bdev, sector_t block, unsigned size) +static struct buffer_head * +find_get_block_common(struct block_device *bdev, sector_t block, + unsigned size, bool atomic) { struct buffer_head *bh = lookup_bh_lru(bdev, block, size); if (bh == NULL) { /* __find_get_block_slow will mark the page accessed */ - bh = __find_get_block_slow(bdev, block); + bh = __find_get_block_slow(bdev, block, atomic); if (bh) bh_lru_install(bh); } else @@ -1403,6 +1406,12 @@ __find_get_block(struct block_device *bdev, sector_t block, unsigned size) return bh; } + +struct buffer_head * +__find_get_block(struct block_device *bdev, sector_t block, unsigned size) +{ + return find_get_block_common(bdev, block, size, true); +} EXPORT_SYMBOL(__find_get_block); /** From patchwork Tue Apr 15 23:16:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14052922 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 CFCA3C369AB for ; Tue, 15 Apr 2025 23:16:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0F7546B01B3; Tue, 15 Apr 2025 19:16:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A55E6B01F0; Tue, 15 Apr 2025 19:16:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DC1716B01F2; Tue, 15 Apr 2025 19:16:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id BE3126B01B3 for ; Tue, 15 Apr 2025 19:16:47 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id AD475BE354 for ; Tue, 15 Apr 2025 23:16:48 +0000 (UTC) X-FDA: 83337840096.09.FA96438 Received: from buffalo.tulip.relay.mailchannels.net (buffalo.tulip.relay.mailchannels.net [23.83.218.24]) by imf09.hostedemail.com (Postfix) with ESMTP id 4C7AF14000D for ; Tue, 15 Apr 2025 23:16:46 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=a+XFqJrr; arc=pass ("mailchannels.net:s=arc-2022:i=1"); dmarc=none; spf=pass (imf09.hostedemail.com: domain of dave@stgolabs.net designates 23.83.218.24 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744759006; 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=7mbzxp8wiNL0OtR9zYzwyCfKKL0JnZdqXEtMAONmpHU=; b=8YucVNkIPQcTmXwvlAyk92cQ5ACX781SUz/nBbv5xOqzJFZpS1hc2jZpo0CsPc6jJT9QuW r6LUDbY5ILQJ7gEk/4IM/baqsgLxnrZWMEKyAgrz8BHdEWDqE0BVNkEYq4WaDunLRtO0iU Gg1kORSZUtYg4ax2Zsn1JRKmUZozacY= ARC-Authentication-Results: i=2; imf09.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=a+XFqJrr; arc=pass ("mailchannels.net:s=arc-2022:i=1"); dmarc=none; spf=pass (imf09.hostedemail.com: domain of dave@stgolabs.net designates 23.83.218.24 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744759006; a=rsa-sha256; cv=pass; b=dlEBWsuUxoKYu0NqRoqBb8Jc6y2d4gaOyE28V8OhvcnHG/QuSM5v+Q5tgcLP7WNWhG5FSN hG1VHla3HW6y5QL5gxFJfK9bIMFsi5t+uvGBOO2Oalf7+8UhY66RaZAeNR3yJtURJBanAx nJseS338yHydg0Jq4FS4ZjSaoCZOUHA= 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 184C34E4E5B; Tue, 15 Apr 2025 23:16:45 +0000 (UTC) Received: from pdx1-sub0-mail-a273.dreamhost.com (100-110-51-113.trex-nlb.outbound.svc.cluster.local [100.110.51.113]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id A5E554E4E16; Tue, 15 Apr 2025 23:16:44 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744759004; a=rsa-sha256; cv=none; b=NTW3myPlETQscL1J+mXpbDHaHxx6yex13JilGByUZ78pzpOkYH1NNPR3klLH64uo6RuUP9 VTCXwf0n1MSrZOohj9RY1V/alLVay73CasT63x05ijpn9bu8HvO2zQIslTbOJVaeYEBze4 0C+aE4zwxUanjwU4bTJQsKSEWOo8A5ACR6KTtGs02pf3QUWwkPul28R/LHcVnJKNE00lE6 i5ytejpaa4jy5pckwH3rlKcwGVHIDpXSgXFlhtJOTVlbh0HTU/tDKcMRjlbTDM04wd5kp5 C8DGHblVpAx9BomVzl0+sfWGHXHybmC5fRkZUz1FpySIH3BbI81hDzuL2F/i/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744759004; 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=7mbzxp8wiNL0OtR9zYzwyCfKKL0JnZdqXEtMAONmpHU=; b=GqG8wqpBNd/6Yf9muaJGH664VPVARwxhH9eBoYu566Z8Bwt/Nq6lgkCH7UkT/imriA7Zwp Rph2/vxCJJmMDycDbSmfyDXDD6c+UhaBwONbG5kaYUMcksc7W+zJPdlIz/mBou2RkhSXQV ZkwVqaGyuttZKvg7nAnKl/r1L5RyDCdFRjIGkOMFbFVOACEduqx3nmMuplflgLZrQLqw+z U7Em4eS2kNMyNHB2xCU7mhkDVR1fuPgA2FFEYtCPR/aJcqG61cvNfw5z+cYasI4366l7VD Z4BShXoDW4AIK3BlfjBPOk/mDZcf/c2KmrdUmqObOQ7w3pAbDDARFjXO1aBc4w== ARC-Authentication-Results: i=1; rspamd-5dd7f8b4cd-qrpj4; 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-Hook-Fearful: 5407714374c9829c_1744759004996_2600025280 X-MC-Loop-Signature: 1744759004996:3493891324 X-MC-Ingress-Time: 1744759004996 Received: from pdx1-sub0-mail-a273.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.110.51.113 (trex/7.0.3); Tue, 15 Apr 2025 23:16:44 +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-a273.dreamhost.com (Postfix) with ESMTPSA id 4Zcg5l5T0Pz8V; Tue, 15 Apr 2025 16:16:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744759004; bh=7mbzxp8wiNL0OtR9zYzwyCfKKL0JnZdqXEtMAONmpHU=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=a+XFqJrr0fpF77UXqvxgA8PYjmYtGfYME29GQ/RXR4ipjs8xAa+OvvME4pXGxjizt ZHBeqoxZxyT9d3CBdcwHfIv6o/BxmAAKWSMqtm977W6EcylHhIZevCVw+L3LWwwdPf wDYSYCrh/17b4OjWeefNToeg6MiGvJLleRTxKr1kjFpOwUef/bQ0iOQgiV2NTfpwLM LTJ7tsmWjcsMtal46NeBHqqwtGzJgPx4lr7znnU6psFziZ+iPCz18sqNupmYMfwc01 ZXAt5CNr14g6dMvDcrtofjYR+20shnRrMRnmovmqcGwPMOQ5QjuvUWsocS3RS6+eil 2REKCEDscH8HA== 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 2/7] fs/buffer: introduce sleeping flavors for pagecache lookups Date: Tue, 15 Apr 2025 16:16:30 -0700 Message-Id: <20250415231635.83960-3-dave@stgolabs.net> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250415231635.83960-1-dave@stgolabs.net> References: <20250415231635.83960-1-dave@stgolabs.net> MIME-Version: 1.0 X-Stat-Signature: xindn35rq5ncc144ez75mdouzcbjh7or X-Rspamd-Queue-Id: 4C7AF14000D X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1744759006-758537 X-HE-Meta: U2FsdGVkX1/FMpWXjwFfl2xJ1L1kr67CnQNggzHcXRO/ZPaAeH8ToapMsmvFXDTKbRhP4mf8DgWvmcP2eHweqWsgdTkXWphmXwud2l6gzgMxEhgPhIbyqWD4pflBKtlN3PxHniPuO4XnKc2zlrRtRhz/W+R850oSbCKnEKfJl6AH8U0cdVkj2aiYs2Uk99U746qaUSx2sjmv8rwfm1cf3IgpNTzLSEmpFRwkV6femxn2uGdRCRUW2zynoycwvwXtkD8rzWMSxAUYhva9+84yZRmtDN/M5TF/hmB/d1+cgFnwC4jwFgxFQEWFF+pukMIWloipaBPKqA7ebIFhTQeko/7z6VUroYb6kRnSj8wRTPQ82rvKTWmPR++x9iZsJNOOIulE5WAv2sgHs8GNGaX8mNenry0Srss4nDltqJlHZGJ/UE8Kw4u1YUHD4alOteYp1QBU/v0N6VmJ+/lHejKSawWRHkKcoLgkJ5av3pQvLPb33lyjB6VnrdXZlOH3eYypvYUvg4k+EfOpmO1sfhXHOT2jJMLvdHcUu2UUl+36JXeCg72aLlkBDjT6abDes2U2LRH9ZDwoKsW8PQvTCSWPAxg2yQngj7O3b9myGhWvY9dKquW2LLd/48g9tE8I7Wxo7Wi6qm0svtwelnx/i1K4z1Fk6hJEIyl2rRbSC6yHY5WxTbDimuSCEpPF7EDbt+vWDUWXrkFBSggU6WBRlMljbtKu4jT+kGbal7t40974Y/kAnD7hyEyMtN7j8Mvh4pgSXMZTDPDoN42r9N7GHW7YJGnSRVhjFAx395d11cIWCc9rWqwV3DVWYGTjIbBYM/3Q65Q/5J03mYTUHT4nZDnf5a8PDMN2c3Yh/0ZiTHCvEOJmmGIh9p41asbpT0fHLboUECL5YD5ecNrta5W8QVmffEKeDsAav6S8UdkpTrF3Skye4Yslr64IDQn74e1BRw/rKObiNRDgOu0kHYyiRYk 2TiopY0p 0Gfh6dzhnVO4ljpVnvxRdwZci1srbnQ5e0gVO9cZLtAWSF5Gtgceq6G1nZFO6rINi1H7xLSZl23oV+0LPyCwbZBI8Bc3kEC9aoECzNWG0CfNIs0abYOCX7ojzie4/NNd3wrCkKkuLk2/u4mBrvchgMcJlVlU7EXaxMey2O7MxSi8GbOAp8PKfk9ou2yEpq31qvW0bV1OW3ehxIZQaHPX/g559CRNh5eobbyxLAI29NzozGyAVsN+k9CgmX/8HRQ7r+PFDHXvWuaFg98ExdzyHqBaG5ywJYl312qdNVPB7GvXAg5//UJv/be0wQFaFeB2Oktk54lnBNYL9+Ej4F5FmICzI5A== 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: Add __find_get_block_nonatomic() and sb_find_get_block_nonatomic() calls for which users will be converted where safe. These versions will take the folio lock instead of the mapping's private_lock. Signed-off-by: Davidlohr Bueso Reviewed-by: Jan Kara --- fs/buffer.c | 9 +++++++++ include/linux/buffer_head.h | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/fs/buffer.c b/fs/buffer.c index c72ebff1b3f0..64034638ee2c 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -1414,6 +1414,15 @@ __find_get_block(struct block_device *bdev, sector_t block, unsigned size) } EXPORT_SYMBOL(__find_get_block); +/* same as __find_get_block() but allows sleeping contexts */ +struct buffer_head * +__find_get_block_nonatomic(struct block_device *bdev, sector_t block, + unsigned size) +{ + return find_get_block_common(bdev, block, size, false); +} +EXPORT_SYMBOL(__find_get_block_nonatomic); + /** * bdev_getblk - Get a buffer_head in a block device's buffer cache. * @bdev: The block device. diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index f0a4ad7839b6..c791aa9a08da 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -222,6 +222,8 @@ void __wait_on_buffer(struct buffer_head *); wait_queue_head_t *bh_waitq_head(struct buffer_head *bh); struct buffer_head *__find_get_block(struct block_device *bdev, sector_t block, unsigned size); +struct buffer_head *__find_get_block_nonatomic(struct block_device *bdev, + sector_t block, unsigned size); struct buffer_head *bdev_getblk(struct block_device *bdev, sector_t block, unsigned size, gfp_t gfp); void __brelse(struct buffer_head *); @@ -397,6 +399,12 @@ sb_find_get_block(struct super_block *sb, sector_t block) return __find_get_block(sb->s_bdev, block, sb->s_blocksize); } +static inline struct buffer_head * +sb_find_get_block_nonatomic(struct super_block *sb, sector_t block) +{ + return __find_get_block_nonatomic(sb->s_bdev, block, sb->s_blocksize); +} + static inline void map_bh(struct buffer_head *bh, struct super_block *sb, sector_t block) { From patchwork Tue Apr 15 23:16:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14052923 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 94C97C369AB for ; Tue, 15 Apr 2025 23:16:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CB4CE6B01F0; Tue, 15 Apr 2025 19:16:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BA498280001; Tue, 15 Apr 2025 19:16:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9A3CA6B01F4; Tue, 15 Apr 2025 19:16:48 -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 70F006B01F0 for ; Tue, 15 Apr 2025 19:16:48 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 4FE5C121A14 for ; Tue, 15 Apr 2025 23:16:49 +0000 (UTC) X-FDA: 83337840138.25.171BAB8 Received: from siberian.tulip.relay.mailchannels.net (siberian.tulip.relay.mailchannels.net [23.83.218.246]) by imf25.hostedemail.com (Postfix) with ESMTP id EF59CA0002 for ; Tue, 15 Apr 2025 23:16:46 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=MNKB93FB; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf25.hostedemail.com: domain of dave@stgolabs.net designates 23.83.218.246 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744759007; a=rsa-sha256; cv=pass; b=NErpkve9Bp2gJgGmgKWZDpdpdRXJMcin3fmtYWQlKrrFSPYKSgq7B/HNMNpupFzXs22lnc 48x7NF2pTN6ReXvU8hy3xRj6PFTM2RbzuI5onjHiXaiLgNioBm9RYxrloMfEID5nUkC4T3 R4EbOCB49IDKPyO40EYy3/4oVdB56IM= ARC-Authentication-Results: i=2; imf25.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=MNKB93FB; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf25.hostedemail.com: domain of dave@stgolabs.net designates 23.83.218.246 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744759007; 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=uHREBisV1DDhdKY8B6xaTzgB1WkfIIV5PMPRwi7cLCg=; b=NimqW5yJ7Qwdq5bBWRx0LhjdZ1HSpNaCJ7E2fTxyHf1d4Ybnc4rDkHAUDCfHVOKXfF4tQs lVEDiAXn8L2ZlBzlDrknadgrZPyuq1KMY8rAFujJtz64plsnU/LKAKkGGIGeYEhmWBGbl9 26LG8LFRiX4RJrZpebSsCyg/+LppHE4= 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 EC6892C38BA; Tue, 15 Apr 2025 23:16:45 +0000 (UTC) Received: from pdx1-sub0-mail-a273.dreamhost.com (trex-3.trex.outbound.svc.cluster.local [100.110.51.173]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 8BDD52C517B; Tue, 15 Apr 2025 23:16:45 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744759005; a=rsa-sha256; cv=none; b=A5YBa6qqVAqi5HK1NVPY/z9YeSGUoedGVCD7dfFGlnj7AeQiLeoAkSLi7+WMng8iJXdXo8 9MgbWW8eKxOY71aMmbU2gJbgJL9V4wUmGNx+SBYl/ix74RTk3IEqBVhnfKiz2XyqrFPQYW 7kUHcjEgAmjvxkC8LlZlUEkb7tMEmu77yTyhv3TUfEVeq15nnhYRq0kT8pfs4KmUFd0F9V u8dLsuQudyGqE9sOWAfsRLXPwAxUkywLWf74qO08VdWVuz3s9i6vS+3hgcmmsdYBBcJxAd 3tc/UcCKMBFZUc5Ohe8sZ6iAnty3vM1svFGK2oITDqTUrXJWBkqZCNvXGQz9RA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744759005; 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=uHREBisV1DDhdKY8B6xaTzgB1WkfIIV5PMPRwi7cLCg=; b=dBTIgFrxySGjHVFBz4J+O6wUEUWaH3vGAr86teKCXnIOdw+3OqcDC6a4iA6mtXp5rMADM5 /3NmvOjet25nqcGuOvWouHozYUn9C7XsEBkWsQ5oxJ62EKob2yhbpR4xwJgoyAnaKzeQVR ZXjfZSQLuJ10QPRHJ+YQAQwMslkMNqpHUq6N3nlfkucLu5HzgyaAJA/Z47KG96DBCmMujC uV0flEGYXQTVfjmVi3dAddtsN/bPIZonzO0uHgykSczHcNYzNpFI3YU13i7nnQyCAHKX/V dhQLe2AdT7dC45rKudssmcDs1X80E5gnkG5shMzTB/O3lu2qCT3AotHba7j2aA== ARC-Authentication-Results: i=1; rspamd-5dd7f8b4cd-4m6r4; 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-Tangy-Irritate: 42ddaa952653b5b1_1744759005864_3471668932 X-MC-Loop-Signature: 1744759005864:1886427043 X-MC-Ingress-Time: 1744759005864 Received: from pdx1-sub0-mail-a273.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.110.51.173 (trex/7.0.3); Tue, 15 Apr 2025 23:16:45 +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-a273.dreamhost.com (Postfix) with ESMTPSA id 4Zcg5m52GBz6g; Tue, 15 Apr 2025 16:16:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744759005; bh=uHREBisV1DDhdKY8B6xaTzgB1WkfIIV5PMPRwi7cLCg=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=MNKB93FB1rPUY2XJUD/TCQK/S/jnxwGI48Z8zGnQjymdXzKrs0r/t32sKKXfb8umN Ni8fqN3c2Mx16cUOrAMuyhz7EHU+vX3aGbKyEjE++OHM3jVhWHKpfQ0SMEj3idEd2K a6QymDXhWyj8rA3Q9HQKnMQqlX31vYw4e0AkxQ6kq+H6SrGLjO4hNgUqi4vlrs/0Ju 1CukRBbuvmBUA0ww0wv4XLpVbxQut6bOK9wo1YQv8/KQ/XV/jm3ECcqAlhpiPYfy1T c3zvrKYbhFSaIdEzQ7fnUNE2Xth0FWmvyfAFWX7U1+CuR9PA6d5l82QsPHcCRHNXce +sbW4crlsINbg== 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 3/7] fs/buffer: use sleeping version of __find_get_block() Date: Tue, 15 Apr 2025 16:16:31 -0700 Message-Id: <20250415231635.83960-4-dave@stgolabs.net> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250415231635.83960-1-dave@stgolabs.net> References: <20250415231635.83960-1-dave@stgolabs.net> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: EF59CA0002 X-Stat-Signature: mbb1edgsstgkbhppki4dkw4q9zafk3br X-HE-Tag: 1744759006-342667 X-HE-Meta: U2FsdGVkX1/KBrXkzMx/TqDqTsxQx04BHjBpP7XYV7r+BkJSBCk0chlDSgrl/ZYuHUG0V3rz0Zb9DjgKImXmLwTLq99Vj25ceUxj6t9bv7TF+ePEUiXdGi+VRx9pLNMzEentxzX6awqSVGB1OtqvSBwfMkz4vHsAS31qt3mFjfH5yfv+6DD+iPn977dPrBPLsMOvfitUQVpSpqSAzEJ4t2fkI3LxIuIVcez89F1dQajL5MDSNbXLX9Yyx5744s3dG5IY2zGzoeGbJn11hxy9AKBb524F9Uxb4xQrPh/tFbs3+iJk+b+EdKGjZuH8PUfEOYBzsaVSBUdPVMwz31uoFvBD0/kaYMQpm1xN66JXVJq338vEmpa5YrbreomOPz+U/g7HcvRBCqf/HAc3PTkEQHWU0Flp1XG34wMhk1OtQ66hXmGFCaTxOL8Bp50trTxhILrQpem60sLQHRdkX/0iQRVDSfanH8TEX3znHwbHPOtw1fMWJ/Ntv0jLM/KN9GZ6LJyeS8Hclj5GoQf2N9bABMrSY+mx2SzS2HTYHghiy9Rx8jlM9fMqisSsT2x0c78xAvERi8N7k+51nrNNHPxFbkA3eYqf7MgqC4+Wehht7RJvErd83QFd8KsafiGg1g54iGNL7xPpTblr3LLF69n/yjcIFqenOLLEp0Da/S9+0/sBDjtj5q45aLnp5Fy8NXIRkd5XB6YAFwE5yPKteSr+mOWl3M/0SfA7pbAaJQZqR7UMTllqgWMLvC6hAHYUvw4Lkp+SDwtnAreMiKpyf94dt0Gb4uwl1b2TINfWV5cG9U8pAYRByqTRN29eMCkSrW667jVdL/dkIRfDrdzujc5m/VELqy2/tqC5CvHqrHyNQqrR+qQ+tNJqEtGIfCDSMijFinYpIvxFOxyWuCDRqPxjEs6oq6jzu3ZBwNhsacV2rqvBKCxayRxR0MwfYwYgQrhyiOTZuSCdvgnRtuUt7Fk AXv8w1L6 /G2+QWffCO+hgqN2sYdRKKdXBCw7bsh2W9MqxPBG2GWS+ajz1AJRZqtL7RIsK/yvtpXPx1vcSvpUb4a/X9bxzDqZSSLuBsFtGKN8h2YRXSaNHztGQrSUIVrvUteZCqxcvmV1AXGzehVom8JybOIyMjrpXa/bV+BR96yBaCbMyEpCjC3EVr30xIriLvBs+OohAeigl17GYwlsM25ZltZaQy5AFr9X3UGhGJO/NAdr//+HTUHdsY0ucVzva4hWvDhNMoUCrg4jTPDtSaumiIfg3Kksjz/4bwGnW99ctAaotn8PsjlwRJdktzhj7+Aub/+0om6KIr8OjBDlWSLJ47mPb4BLc+MG0MFDM1zf/IQd5IMtlEnsRwGybIQofDIbcHR3WcbCj7vA2JC5KN10= 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. Convert write_boundary_block() which already takes the buffer lock as well as bdev_getblk() depending on the respective gpf flags. There are no changes in semantics. Suggested-by: Jan Kara Signed-off-by: Davidlohr Bueso Reviewed-by: Jan Kara --- fs/buffer.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 2.39.5 diff --git a/fs/buffer.c b/fs/buffer.c index 64034638ee2c..f8e63885604b 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -658,7 +658,9 @@ EXPORT_SYMBOL(generic_buffers_fsync); void write_boundary_block(struct block_device *bdev, sector_t bblock, unsigned blocksize) { - struct buffer_head *bh = __find_get_block(bdev, bblock + 1, blocksize); + struct buffer_head *bh; + + bh = __find_get_block_nonatomic(bdev, bblock + 1, blocksize); if (bh) { if (buffer_dirty(bh)) write_dirty_buffer(bh, 0); @@ -1440,8 +1442,12 @@ EXPORT_SYMBOL(__find_get_block_nonatomic); struct buffer_head *bdev_getblk(struct block_device *bdev, sector_t block, unsigned size, gfp_t gfp) { - struct buffer_head *bh = __find_get_block(bdev, block, size); + struct buffer_head *bh; + + if (gfpflags_allow_blocking(gfp)) + bh = __find_get_block_nonatomic(bdev, block, size); + else + bh = __find_get_block(bdev, block, size); might_alloc(gfp); if (bh) -- From patchwork Tue Apr 15 23:16:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14052924 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 1F244C369BD for ; Tue, 15 Apr 2025 23:17:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A4B026B01F6; Tue, 15 Apr 2025 19:16:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9CE8C6B01F5; Tue, 15 Apr 2025 19:16:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7D4656B01F6; Tue, 15 Apr 2025 19:16:49 -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 56C676B01F4 for ; Tue, 15 Apr 2025 19:16:49 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 4A70414166C for ; Tue, 15 Apr 2025 23:16:50 +0000 (UTC) X-FDA: 83337840180.13.FF00768 Received: from purple.birch.relay.mailchannels.net (purple.birch.relay.mailchannels.net [23.83.209.150]) by imf10.hostedemail.com (Postfix) with ESMTP id E6152C0003 for ; Tue, 15 Apr 2025 23:16:47 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=gsJGIIgX; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf10.hostedemail.com: domain of dave@stgolabs.net designates 23.83.209.150 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744759008; a=rsa-sha256; cv=pass; b=nvuEMrsBbhc2euFhHevcUc70w+jWtJklAzEaBA5JNp+CO7OaqZ3MHy37s6XvIgZrFaIwrg Li4283aoHGWapiYdheXtGo5oRJJs4fv5igtHMkt6vho2mEAuraV18qif/NCI+ylmZ+e73p M62ErUJOhS3xExJZ9QE6RBp2br4uKic= ARC-Authentication-Results: i=2; imf10.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=gsJGIIgX; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf10.hostedemail.com: domain of dave@stgolabs.net designates 23.83.209.150 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744759008; 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=hAfviodp/gLLm0eey766/10wm/tzbxHrlsddbZHBKzc=; b=XMn7wOpemiZuy+rFr83KgoU+Uzke44ROiEORFW+VdOnD64YsF+dUPI5jHcuCPtTJfXtryu iTOC8j9uveUClL9XLVy2dzTstVhPUVVd+d5+whmykUrtmdTuqAcfhk4qRB6/TcYXIHx3cu 0Q9Bk/tx64vBdE4Oo/1jJZhrvUUSh90= 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 C64198A4E7A; Tue, 15 Apr 2025 23:16:46 +0000 (UTC) Received: from pdx1-sub0-mail-a273.dreamhost.com (100-110-51-113.trex-nlb.outbound.svc.cluster.local [100.110.51.113]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 640B68A431D; Tue, 15 Apr 2025 23:16:46 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744759006; a=rsa-sha256; cv=none; b=tUxKOB/9QTR4sBgW0AOL59SVZqDVbUGCYXi/ZdcJbFwCquc60vPyl4v5/MgSjxEfh/s5Xo 37HXyyyr4uSDbbo8dnGHMdZmVqr2cPVqTPlOObuwd/+fyyZCTjsAGyUyAr8l0KDByFYLNi sGdjbwK2gf/F6bUgSEeDaqRIfx9d7a4+NuldmWGmkLCbWz0eEvw4P56VGup+ARujt/Dudh cJ8ohVIwRn6fj+DleN2aJl+hYSjpwelqhB8X0kw2BHfu0jZcCLzOufPIcyOuew47zcLRyi joz1+POFN3uqfHQdvtYN9LwF539i156rDL/io/PFsrwPju556nLJ1lWKHwNciA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744759006; 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=hAfviodp/gLLm0eey766/10wm/tzbxHrlsddbZHBKzc=; b=DGVz1LUHDl9St4pyJy+nI5psn4jN0Ukq2R4MK2jIWDwgYJwkU4MlPB70GpNrOrUIltcCrM p6tRWm59Vcq8cLBDNY7c2WgVpAcRpMuA5+CfYZlKlcvLAfkI9pKS09rj/0wbk6JH4uYxSb jD8T3yEgTUWwaF9WCw/1j6CE3jpWjjxO7mHSZLN47pGc6lsxRF8fWiEBWmVLDfIafG67GK tokttGQntFin8lZLlckrg2JZAIeCD4j6rDKjZuzS3i0J5w8/ywwtW/4+6S7wbqy4mDm0Sc 4knIFtMZ7ffeWCzUABJwVZj75eDRhYEGfj84EsZJxZXjEXusWwcNh4hrk60HKg== ARC-Authentication-Results: i=1; rspamd-5dd7f8b4cd-xblgx; 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-Share-Reaction: 238d86ac483882e3_1744759006711_2123665616 X-MC-Loop-Signature: 1744759006711:731362905 X-MC-Ingress-Time: 1744759006711 Received: from pdx1-sub0-mail-a273.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.110.51.113 (trex/7.0.3); Tue, 15 Apr 2025 23:16:46 +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-a273.dreamhost.com (Postfix) with ESMTPSA id 4Zcg5n4Bmfz2Y; Tue, 15 Apr 2025 16:16:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744759006; bh=hAfviodp/gLLm0eey766/10wm/tzbxHrlsddbZHBKzc=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=gsJGIIgXbbb+ninDu7ElNLHb2/58AluN4DhLdYyx+nMHoc2XjCeUB+oE7NGHsD+zu KQqWHiDOSuQit0E93orTLPZTrLykpXciu7fgaKDZ77mkGTvK6n0BpKUcEHRGEExwsQ OhepBQJ1/QG/Y0fZYxXqy6OgeBtTX0Q523g4+qqQ1XGkwvvYUMHXkPjxHNf1P4giqz Gi9R+CzUqMaaPnr9FB6UBra6imA5whgp7n6pBTYjfj0FP4jZGSIOwytD/6l6817aJS IdTfubhJIRJ3s8GED/Wo+lgcZGu2rqpyJKpSrKTB24JV551cqRcKVwydMZeI6J4eM4 B5DWhzjypMxuQ== 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 4/7] fs/ocfs2: use sleeping version of __find_get_block() Date: Tue, 15 Apr 2025 16:16:32 -0700 Message-Id: <20250415231635.83960-5-dave@stgolabs.net> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250415231635.83960-1-dave@stgolabs.net> References: <20250415231635.83960-1-dave@stgolabs.net> MIME-Version: 1.0 X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: E6152C0003 X-Stat-Signature: 87bhf37d4fszu5n5de6qtd1c3zqr6f6b X-Rspam-User: X-HE-Tag: 1744759007-175481 X-HE-Meta: U2FsdGVkX19wGJOUUtkNf++jHzmTW0vWs5RWpQbPekLhpgOQffNc8hJ+qujebBcA0dmb/06mhQ6wCjiI/g0zC8TQSb3QkjPChdOYUppa3A5mnr6L8QzgRLJnaJlQ3zR5ETnGToU9uve6u569HmBM3QtvZViMxT3bqhjrgvnSDOUf9rITt1KlZkvQOFdWgX9N2F3x880bpthQkQn8LeIsYHGs4B3JSrutLUGLfFN/UcDQ7voeDkB6SSSZSYJsZ4yZY0k3HpI3vB62o+AaLGzDjMhNL5wxAi9E/jDmdQprOqLm5qTtBhl54ZbrG+px0jFsSJp1jy+Ci6uuHix4SOzWo5FA0zwdRfORlADkRCLKVK2weEuXyQsTEHY8J3X0vJrBcjGvOt5prLrVw2F6UUdViaTUBYNLJTv7VvjMFYGn37TlaoTkU0SknPT7NYWABI0TbrbQfzHjvfiXsVa7tvFRCg88kJpZSeR944Tf/KkNyBZ39VYDyRskxcLiqBn1KnHgvyTf05cj8xvbb3XGWiiWw1WBo4G+XC0PIGsYmRMST4kU+lFqs2uljWlIDyDfBRQunY/W9aaovVjB6HcVjRMp6F1RYL54A3cUxsZ60iydFWiRBpiYBUS93D0BrIWKcaBv3gjP2zdu1aC61f1FrWB7xljzUEZ7JAPOKnZUXrj5aCZVRmDiswjgC/IwRfBNvyUcgwU7lzZ+50AStYWigWHVCsAbq7Pz96wiMQO07hEmS6lTekEMp4Ec9W5xfXzr4wAJzRzAiZSzuvcRbaN3xIAzHFd4Xi5pinrkrKulZwGhEyUMcMMUtIUFlrJfr1y3ApN5ig2tEnyxS9SLToHzZSbZ/Kk0dpZg/LvbVRV6qfftnzB2Y9BWNXcKudFCQQRyqydaskq8GMb+CsxVtq/eav9k0h8t+K1wCOKzuF3VAgDoSfuua4xJ70k8p5swCMST9YUvIMsgKLHlf3e+FoC5UZG ECJaKRiM S7MpbMMce+CUjUXLX4W4wJcYsMaFr1iVtyKhKQG8LKjcBS+k//GtipAlkqfYi1DxdRiI2x+OJd1kI77zU3gK4/lA9uwrQi87aLm5QxO8xy9DLFiORbsqnzPYDzPz9LConO9BK4Qa48ER0AKIez0RLArzaaaqSHmCEt4oGe6PXQ63yIY2d4EyP3t6vp4JNQBcUR4SI9HHx5Y2SWLrGm6JurkYUpu7lTeDTI1BRvmKMhUfWPLQ/kAqVuUDEEValmLMBQHqVrg+MLZwVKAyFFelYyVQgmErsd49N7nnNMHBc/G1/YiUDecvzBRqzjljwl2D2gJ64ZMMqcFF005VVIPKDDX0WwF1XqG4K4bmYLjpasa6l7hh952lYesbJ2oBC/s04iQgz5WtIDyAba8Q= 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: This is a path that allows for blocking as it does IO. Convert to the new nonatomic flavor to benefit from potential performance benefits and adapt in the future vs migration such that semantics are kept. Suggested-by: Jan Kara Signed-off-by: Davidlohr Bueso Reviewed-by: Jan Kara --- fs/ocfs2/journal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index f1b4b3e611cb..c7a9729dc9d0 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c @@ -1249,7 +1249,7 @@ static int ocfs2_force_read_journal(struct inode *inode) } for (i = 0; i < p_blocks; i++, p_blkno++) { - bh = __find_get_block(osb->sb->s_bdev, p_blkno, + bh = __find_get_block_nonatomic(osb->sb->s_bdev, p_blkno, osb->sb->s_blocksize); /* block not cached. */ if (!bh) From patchwork Tue Apr 15 23:16:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14052925 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 C2FAAC369AB for ; Tue, 15 Apr 2025 23:17:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6290B6B01F5; Tue, 15 Apr 2025 19:16:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5DB436B01F7; Tue, 15 Apr 2025 19:16:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 455736B01F8; Tue, 15 Apr 2025 19:16:50 -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 1DAF36B01F5 for ; Tue, 15 Apr 2025 19:16:50 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 05C4A14151E for ; Tue, 15 Apr 2025 23:16:51 +0000 (UTC) X-FDA: 83337840222.11.44EE399 Received: from panther.cherry.relay.mailchannels.net (panther.cherry.relay.mailchannels.net [23.83.223.141]) by imf26.hostedemail.com (Postfix) with ESMTP id B141C140008 for ; Tue, 15 Apr 2025 23:16:48 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=SyQfGtul; dmarc=none; spf=pass (imf26.hostedemail.com: domain of dave@stgolabs.net designates 23.83.223.141 as permitted sender) smtp.mailfrom=dave@stgolabs.net; 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=1744759008; 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=1l01/oHMrv05TV0ULL7/RgVMZj90KQ8VPfIqNTQ9xYs=; b=UcvNHdpIIQPu3d6KIMOsVkE1x0/rTT/6Cxam7zeDjgt9cQXOHd/EgPQaAViedqi1g7uDBB mTK8c0AV4pE3xDgJDLL7bRJ4aG1wtIgbw4skzyFqzm2JBS0yskSd3qFJZ9/gbD8wS+BLWO t/cC3kvsymF3ZG8F6ydS6zzG7/JAF2I= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744759008; a=rsa-sha256; cv=pass; b=tGfK6nalCDtgP/dp9itT0NXensfy/gtomSSzz+L4du81SVZFcgCdBmCruvB39U8h10rLi8 3MMZFSkQctNqHS3aMUfReeRl6Qbi/gqVi/27r4JlwBP32GY8nvSJENi2RGCujvWvuBvOa4 JREd82ny243YJY7H2PIRD14OUSAYyi0= ARC-Authentication-Results: i=2; imf26.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=SyQfGtul; dmarc=none; spf=pass (imf26.hostedemail.com: domain of dave@stgolabs.net designates 23.83.223.141 as permitted sender) smtp.mailfrom=dave@stgolabs.net; arc=pass ("mailchannels.net:s=arc-2022:i=1") 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 A410E1A4F6E; Tue, 15 Apr 2025 23:16:47 +0000 (UTC) Received: from pdx1-sub0-mail-a273.dreamhost.com (trex-9.trex.outbound.svc.cluster.local [100.107.95.94]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 4122D1A4FE0; Tue, 15 Apr 2025 23:16:47 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744759007; a=rsa-sha256; cv=none; b=ezPCxliX3Neqty+xipVIlcoDe0TzVCgeaBzX6Gta+nfU3iEam/iFJBr3el/Ft9AAzV1jed VDrnSaxoawSTN3DIWxnlpn6ReoBh+cRbBdoxvEuZ/e+FX0HfWH7PTkJmgimGAmYTC7FwxQ 3zHGKiWBF2VorWiVhsjANHi34FKBeY78oV2em43A6oYfR0UY9xytYTCrTJhg2GIULwrNaC qogGTN+k2y9ABVr9YCTn7tHn4O4MP0nZKjEFE1X3XMscV0uRCU8PqtNZEGIKTzlIvSZ4Cd DX59JzTTo9FXbtkRjEEkwpsxjSQqICQ/jc6nJHPArmkBLENmdZlmymDsvcTOjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744759007; 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=1l01/oHMrv05TV0ULL7/RgVMZj90KQ8VPfIqNTQ9xYs=; b=7W3dzRToEk+k2/uG5S1+9P/T6IjIX7bxmihfzhkbtfcd99SOobdgQdktOBFf9G/eBi0bQe /lLv4PjThkjPwQ1OYOu7yuIE4fbXc2SbOVn7WHIeQ02vFnOdiE0YfZB2vUV4qd8Ab2gplg WmyvBd6jE3cmC3PFIOW3SGBCHSgD4xGO7YiqxSv01XwkVgzp7g+kME4QVdNgnTvlAREzM0 /wg1qptjsvxa0jtGjZBW+zLYjjO8bWr0aqxs3O+QpgnMpwT+b7X7NMgg5KQTnMGJTruGXp AV3zNYcbGEcJcQlHiD/J14y7IYTV8EzbYJ8xgqH0xkjb0gmBBMZ7jEtLjgTNeg== ARC-Authentication-Results: i=1; rspamd-5dd7f8b4cd-4m6r4; 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-Reign-Wide-Eyed: 76e12318560162e6_1744759007564_54610796 X-MC-Loop-Signature: 1744759007564:3970048582 X-MC-Ingress-Time: 1744759007564 Received: from pdx1-sub0-mail-a273.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.107.95.94 (trex/7.0.3); Tue, 15 Apr 2025 23:16:47 +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-a273.dreamhost.com (Postfix) with ESMTPSA id 4Zcg5p33MRz8V; Tue, 15 Apr 2025 16:16:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744759007; bh=1l01/oHMrv05TV0ULL7/RgVMZj90KQ8VPfIqNTQ9xYs=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=SyQfGtulaDKy2X3NY8kidDzYIlSRZblPYwswdENl4KWpjYVaXwuels7cffYPH4Bc9 nTST0RjauDvTe2l71YsnwNenD4HkOYxKHsaqZgghQxJLRJuT0evXgJOBZO9T9/JcTf xFB33UBFxwzi0RkdVocWoidHLWnsAJP8vE3Yiezp7DN/upRuUUtjeN2X7uHm5OhoTf dh0C4ikz+GsyVzYGV+DGDex2ZXMOouDeaF9wMYEkzHuPe/HKFbNvlyjQ+20EwVjZBU H2pWGd/9WpjBX12zD/z2yV1TC8z0jNY4/aLYmwzZxAmRizzLrdIu82jd78WDKbDyfH 6KnltscSnjMvw== 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: Tue, 15 Apr 2025 16:16:33 -0700 Message-Id: <20250415231635.83960-6-dave@stgolabs.net> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250415231635.83960-1-dave@stgolabs.net> References: <20250415231635.83960-1-dave@stgolabs.net> MIME-Version: 1.0 X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: B141C140008 X-Rspam-User: X-Stat-Signature: azr6jnwkqbd7377mmangfpcsa8344s78 X-HE-Tag: 1744759008-756707 X-HE-Meta: U2FsdGVkX19j2Jvp6KLSGLVBFv+uZxPtmyWE60L9ksoN9RaopIDFHnR+ngXjXj6widx9JqVhkW1P0rBIvLjgSlXRqQtXhvAZb5R01joUwq69TW7LLpu5kgOTqQhkcsIB3WiT6joYdIOQ7Cb5JnV6+oF39Tgq3kD34YSsI7Xwcnn77jVUpXUFANy9jw8gjIBZ8fjcpYPJRelZiLwnaOvKgxvmpeJmJCGuEhGoM10aabjVrdfHPd6IhJmwVldanwTTKvolP5PbmiDo8L1kdiwDbZrICVpe8CohIuB4CDdfgAB0UlLXPU2yE9sOnw1qNfWBqWIA0D4ufOZsKqFdHOcgrXE1LDH0ws9+zwstCNy8TjdYQ1vBB1CO1I6x749gnXQTrb2DYg0o+tFJvDd9tduwEEME3YY/UoikUgccWNAvG1a0/AzZdrIbs3MQT+wdR2wknDjherhjbkeC6VHCF0mDTpFZIZKx+yvbvdfHQn2TSiCRvaEqh7zzZFrZAPgq72A3XAHQsf02UAgMwQpwakRp+IaBwNftC4puJjIQs4hugr6uRNqCfhe4ykd7sduJDliuc4zoAXpyzHLjd+cwREYBjBF6Uh2jzPEJGd0TOatozO+l6uL5mMFpMMnsRY20U8mvPbIIs1DQaFT/QZ3d8vgu1BzF5AGQ4wEXFN2/hhMA6Unr7XrAojzaz0mfh9HLEWMYOe0ycKq5IFof4R/Ouj5p2jKwK0LQHzPBt0pJWxcwK4reIzyHKxxVbUHqxnXl90GkHub908D2K371kU39jfLYAWVICzFSGlpJ/WLiCRQt6O1WFdmF2YkXCEaF08g2p0+EBjW5wLbOo5cDEk+k1+Vql7AuXLitEm7NY//kECMx0ewPAwG9wSec6Y9VOCMtJnL5htXtmxnsuQsZSLa6VkBJ8gs6NabNpf1yU6dUc6rDtxyU4Ff9lNHo2MOiyfjf3C9Otg58U9BrfIDVcTwffIE HvShiFXi ovVSoEEym2dJyQXgMJ5DxI51QEv4gdBW7oEqxIP3HnMNPc/xru2Ov3tdsJZEuxREOE7CQA+1Ks2t5SFYK+LDin8tQdj/elRBmN478McM/nS8IS/jVH93unlknsd4wz0wqzO3hIyt45QSbob8RjBqTRGc0jPeEZmI9OFls8vV8Vlc5E/wZSJ2aWKMflTHs9FvkB0Wt+wHtIvbnYe0UVLxff6BZV71/X5F4FZ+6El/aCNXowgTfOyp35wtIYmJLkQM2+IIe81/VSHmmEVIoWpnJ6G2vv7iig3b699nMSVLR7xwImnEMKa7WLzcxVJOiabQgeuA1FKo5AdOV6+MZlJ2T8YIb1RRg5DQ+uoXetJtUlH26Wz7/Vs5Ki6I0MMcGzzJOUj3FGqx1fKHh3aI= 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 Signed-off-by: Davidlohr Bueso Reviewed-by: Jan Kara --- 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); From patchwork Tue Apr 15 23:16:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14052926 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 A38ECC369AB for ; Tue, 15 Apr 2025 23:17:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AC1736B00FC; Tue, 15 Apr 2025 19:16:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 878796B00F9; Tue, 15 Apr 2025 19:16:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 47E886B00F5; Tue, 15 Apr 2025 19:16:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 053746B01F7 for ; Tue, 15 Apr 2025 19:16:50 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D751C16198E for ; Tue, 15 Apr 2025 23:16:51 +0000 (UTC) X-FDA: 83337840222.25.2F3C511 Received: from skyblue.cherry.relay.mailchannels.net (skyblue.cherry.relay.mailchannels.net [23.83.223.167]) by imf16.hostedemail.com (Postfix) with ESMTP id 8F57118000B for ; Tue, 15 Apr 2025 23:16:49 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=pg09XEWF; dmarc=none; spf=pass (imf16.hostedemail.com: domain of dave@stgolabs.net designates 23.83.223.167 as permitted sender) smtp.mailfrom=dave@stgolabs.net; 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=1744759009; 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=6FfTau9BvNuszvB4UDUEdiDHpoFoAKapXPdYyQlxMQo=; b=oxb87shbaQlZ837k3sqdj3TioXFMO0uhzWRODxPfQF0GlIAy6TP0jz+VgQgljmRXoEYJYX 7b3cvoct4zvayr55KpgyIsPR4whwRwEoDFEZWJRI3RjfGLk9pH4ABbaiKrqFxTNUi6/gkD UFu4//fo7KjJ4uFsNylAz3jdIIi6BxM= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744759009; a=rsa-sha256; cv=pass; b=ioPsHeIJ4BpOTgrH6VOCGGFO6n7wCSboMe1htrWE76/VQ6sKAHz34bBSiKCVTBwmbS1bha Fe0fKynKKrePLmuJiQfppGQy8yEV2hf5jpV9KDpZa08dY6vGye3iAgyj1Y13I4jLfCICOV rGjhzWQ27PNo3b431dYri0MOxBiRdEM= ARC-Authentication-Results: i=2; imf16.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=pg09XEWF; dmarc=none; spf=pass (imf16.hostedemail.com: domain of dave@stgolabs.net designates 23.83.223.167 as permitted sender) smtp.mailfrom=dave@stgolabs.net; arc=pass ("mailchannels.net:s=arc-2022:i=1") 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 7EF532C5169; Tue, 15 Apr 2025 23:16:48 +0000 (UTC) Received: from pdx1-sub0-mail-a273.dreamhost.com (100-109-60-75.trex-nlb.outbound.svc.cluster.local [100.109.60.75]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 1AFCA2C5171; Tue, 15 Apr 2025 23:16:48 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744759008; a=rsa-sha256; cv=none; b=clEznkgPy+EiYjqUnRdlPY8Xp256oAtxLK8cc6A+4Gm0epRB7VXUfT7ExZGEN77rddkfpL e0bl49d7HoXQON5YjRd6det+et3bFtNO2oigtM0yRuu5IwLfEU9gYhtYrcdzfaV9Q3uvF8 9I3D6+u+VzZuHvbq2PXTYnvrOQXVsCYCF/HuFTa3bqHP+Q9NdEgX2tn0d9sUUmFl4/mEnW VXtgXvRQK+kCoaz2rMnLQkfJVcKiyHkbwgWX43W1hkg/RehTG6ZRBzHn5eeI14GOQ3+kYP EMl8S6uqzmsZ6Xl0cWOwY1E9fXMnJY6fz7czshQxgFpbhgXCBY+Cgpb/tpINQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744759008; 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=6FfTau9BvNuszvB4UDUEdiDHpoFoAKapXPdYyQlxMQo=; b=nURM1QbZ8resQiKJZ/eyNe7DaQHlU3vRHyL+780WHcnXyDRCbixiPFP16n6TH0NhroRl1D xPpvLcNj3xrkRYbRF5ZcrQkgcllEchx6ElHLL4F+W8pqaOyGYSFqRw3J7PihrHE3M8xkOB 0OHAr+jP85LNrDg9+WvH7KNr+XAg7BO0d9eqgrgCy3N+u9Sy2wWBva6EZramdT5R0C8Yq/ vjRkiG3pzzJg3zuoCRcU6Iji6lFWh8YQq4Lc4aqFgI+QqZ7p/nGUpBGiKa5YA3/44Ji4w5 1LO7RSsVHEYHeJ4NKRhJinCQoPclOXybu4Ogx2A3QlPMRS+1YavkncfEcOpVgQ== ARC-Authentication-Results: i=1; rspamd-5dd7f8b4cd-xblgx; 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-Decisive-Whimsical: 522e76535dc1ed42_1744759008414_2568278399 X-MC-Loop-Signature: 1744759008414:2054462833 X-MC-Ingress-Time: 1744759008414 Received: from pdx1-sub0-mail-a273.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.109.60.75 (trex/7.0.3); Tue, 15 Apr 2025 23:16:48 +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-a273.dreamhost.com (Postfix) with ESMTPSA id 4Zcg5q22wGz2Y; Tue, 15 Apr 2025 16:16:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744759008; bh=6FfTau9BvNuszvB4UDUEdiDHpoFoAKapXPdYyQlxMQo=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=pg09XEWFvL3hZNxtY/VDXfDL5ZCooaIA8HYiDt/u/3oux4VT9K+jFGKbHmVcjzcPd grF69IcAdvJuY6lGH3U4/s2hAcRJmU4emU7ho9eAladkVMV0mPpiMQ8uR5VIcXeGhJ vbbiGvxCYpow72dtTdU44yfi998QZ3/xlVXJc+E2IaMPjqFmeyCfoXEL7K48GQTKXL pSLU0TMODhtWFMf3XokCIOdycNz68Q8+R1xTT/xebpBQXzL6DsqHIS0qi0JruhBBpq btnXHvFG5Gwle0+0tiyXuey0J8Wuxvx9iYVTA9cX59YKm57EnrjLMlceY6qH6Jozp8 338AqUh01jPjg== 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 6/7] fs/ext4: use sleeping version of sb_find_get_block() Date: Tue, 15 Apr 2025 16:16:34 -0700 Message-Id: <20250415231635.83960-7-dave@stgolabs.net> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250415231635.83960-1-dave@stgolabs.net> References: <20250415231635.83960-1-dave@stgolabs.net> MIME-Version: 1.0 X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 8F57118000B X-Rspam-User: X-Stat-Signature: du9azxsweftep5x7gn5befau5gg6bkfp X-HE-Tag: 1744759009-785999 X-HE-Meta: U2FsdGVkX1+83Al0OwsXBNToafqLvTpwQfLFA+rfhSdU+5XO2lLnP0ZdzCjIjfLaWbzXrluS0M2SUQ643xwDM4G1CGBmq8qDIv2euQfxZt4qO7pcXju6pD4+JGIvJGcFivAGjr3Nu/ZKoxAk0HgRPTJVdXWrzJc6Ix9gtstuRaipbIH24awERsDOtlg/eodpZxcIUkvm6ROayqMtTOaMnrtt55G/w5JfKtvDm4oQ0HP9WwrsqWyh78NcT8Fb82r/IKMySbPkdLVgGccX0MxWQJXIJWXov1JblM9tO+AZ1LqY9oF5fmHy2w+6EBpgu0UryiJmDxaB20ILv8HOKeULVpcDhnK+YuJ9xeTHtZ7aMZYYfqUvJ39G+H3mfKQLI17geD+G/zcEE409uQCs4phsgBaqo+AMDLf7UdM9rhLrz1+ScywVfPMhmerFicrsYGZ75CdxDs7AFmpbXTSXjBm9C0eXyeR8leqwYnIR4RfHkshMhBDBL33/LV3z/5wjx9MqxnatgrXuy91c6xFfrrD1qnBbh+xk02c8ZLs85cj85ostSHgJOW1Q9rvAqZjM43PGNBXLuAZ/vOwzqAGOTd7Ig7O+qlJ4DfHNHlgPGYmEGa3/Tznh8+tlP5npADLgETCfNBIwjWr1G8gZgP5qFQL14g6qgbWJ4Og2hZnVaXZfY5SzbzFH9xKyvx6sLn4Z13hTN4fgIlR6GBLr+ikXKBckKK2UC9KFUlgopMeceEW6OYulsERhaWaL96PhAqbi+oQ0qSvu73PKMmlz0oM4l0zJ2CipobiOxTQ0OJgnyJZFQPw4Jz0WHOijd4UyIg6sge4sOASff6g+0v3tphkfBiI40+kqSk9bNCZujSVz9Ea7pRSGnEvQhkH7kI43a0gYyJxMEq/xn/y/3DE4JK3NfgW8mAD7RlOIRgceSnVe9GUFan4LXG2nHjOAfcIs4tfaQbXLhUUuaNgfXw13erycdyz 76YEOACQ pYKLXHdUwCDzQPBc/AKg83xbWGAk31/scQ53ukeER7nNEYLQUADpkiq/zbZYMUvqO/2EXMsW6kpuT2EpYrWeAI6dCGnoUSL5GMA2dHB/BhOGAyaip4GAQTsrwYZA9JuBLycP5mn5UisQxzOfqTVxrvlWppu964jP059zIMLtoxw9d2bAzUQ3tNH6WKiP59OU37BDMYigw/jw6jtRlIjk7XTH+7hRvh/w04bgplVYAFYJOkO0DvtbKehhbGvfQRXHRdFw4KJtG9uHrSFME8Depi7FStmzBwiOJiypzL753VKHZuApShOKHTA/lw01wwDJirH/F2FdhkK7EzyBSyirxjYmieNO81dqLNSOsCILMACyKnPBgTM6UngIQfVPwRFeQfdq8s3x+2zDtny8= 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 ext4_free_blocks() to use it, which has a cond_resched to begin with. Convert to the new nonatomic flavor to benefit from potential performance benefits and adapt in the future vs migration such that semantics are kept. Suggested-by: Jan Kara Signed-off-by: Davidlohr Bueso Reviewed-by: Jan Kara --- fs/ext4/mballoc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index f88424c28194..1e98c5be4e0a 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -6642,7 +6642,8 @@ void ext4_free_blocks(handle_t *handle, struct inode *inode, for (i = 0; i < count; i++) { cond_resched(); if (is_metadata) - bh = sb_find_get_block(inode->i_sb, block + i); + bh = sb_find_get_block_nonatomic(inode->i_sb, + block + i); ext4_forget(handle, is_metadata, inode, bh, block + i); } } From patchwork Tue Apr 15 23:16:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14052927 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 57A76C369AB for ; Tue, 15 Apr 2025 23:17:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1EC0D6B011F; Tue, 15 Apr 2025 19:16:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E6DBE6B01FB; Tue, 15 Apr 2025 19:16:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BFB0A6B01FC; Tue, 15 Apr 2025 19:16:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 8E39A6B01F7 for ; Tue, 15 Apr 2025 19:16:52 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 73F08121A14 for ; Tue, 15 Apr 2025 23:16:53 +0000 (UTC) X-FDA: 83337840306.04.02118B9 Received: from giant.ash.relay.mailchannels.net (giant.ash.relay.mailchannels.net [23.83.222.68]) by imf07.hostedemail.com (Postfix) with ESMTP id 0C52340007 for ; Tue, 15 Apr 2025 23:16:50 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=pdkeFYN+; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf07.hostedemail.com: domain of dave@stgolabs.net designates 23.83.222.68 as permitted sender) smtp.mailfrom=dave@stgolabs.net; dmarc=none ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744759011; 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=cZxBayk/19ttKico+tYOcz6z5i5bd/KpteFdnFTioS4=; b=Zv3cRjtjyrEAUNsswngexRyFuc2MbUJnDTjfeMGfK62rz462lAJTFXC780WaFlRf2ZiXsU tpb1blHRWBF0Im9TNOiHEO67aBzn5+x22A0pDKLItZSoZVpn7dffZmaaIlrdM0sFHQbuS4 f/Rd3ggUORj4sV7x2TJfyLwTTmLxdpk= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744759011; a=rsa-sha256; cv=pass; b=Air2FIZ9tXSoey7QnwVWrjZK+PU5QpRaB1DFSPkRxWDIsBut9W+jeEUmsu9BQyyDJY56Pm FSg/3iX82XTrwU+o/ia4sWbfDaqpRoxckQrs4asxVgv6P8pJX69vPU8QsXbScxzSVyByN7 EYfXN52oGm3vkLnMxZRGfBteGJuX7cE= ARC-Authentication-Results: i=2; imf07.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=pdkeFYN+; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf07.hostedemail.com: domain of dave@stgolabs.net designates 23.83.222.68 as permitted sender) smtp.mailfrom=dave@stgolabs.net; dmarc=none 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 8D86C844C70; Tue, 15 Apr 2025 23:16:49 +0000 (UTC) Received: from pdx1-sub0-mail-a273.dreamhost.com (trex-3.trex.outbound.svc.cluster.local [100.110.51.173]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 145DA844C93; Tue, 15 Apr 2025 23:16:49 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744759009; a=rsa-sha256; cv=none; b=BhEJiJtFvkCwq8VAse19aBQiUxhkx3I+5R6HPsmqZf4e7aKwSiPPW986q2HE3kFNsRKNN+ CdfsNyJflEjavG33gCOm3aagchhCTRZDQsmsYDhQrVrS3YDc3D83CH8qXnfSqlJSWEFCwQ BAuiAebIKU36eG4L/2+jS4bFiSL6ap7/RY0lfPzATrkk+gG//gk2eCRvwHz/bvKAeUwy2O LztYFVMd88BfEaCPwhNC4l8tpMfN6HArgsnllkMyrgGuyaavWLatDR/edgfuhVMiictH0v HeefL/cKCyEyHtfkDDuAXLn2s6+YQU6DIBe1TIvPlvL9ViasagE8gE5uCYkpeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744759009; 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=cZxBayk/19ttKico+tYOcz6z5i5bd/KpteFdnFTioS4=; b=pwDyEFNKwZLvyNhomSgsA6Ch2JWc8J52qbKwVcFPj0Y6P7DTPH4++Hmj2H6BB/PL6KlNkN LzWPKmCveLupB2BZIPV6pfrWXrL1r3bW8ZJw43YHHLOtUCKKcGZLakiXg7C0B1fxMErIzW ifiBIjuHPfQIKiYdMcclddyU+UxOfndgfY4ZyGCOKUoIF9F+5GA7Y0Yv7uAeFGzt3tjPXl jCSz4lr6R8Y8Oqn6eNJOzJZXVa7GtBVpqV9vSxeCe6IotUVyiK/okDPirc1haqWpudz+F6 uqr1nVUCThwP4SDd+8+zflSksqc9IalFfqyCUMIN6j9NXJje2i7q2LNAV7x+0A== ARC-Authentication-Results: i=1; rspamd-5dd7f8b4cd-qrpj4; 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-Abaft-Madly: 0f7b40494fe41933_1744759009477_58974177 X-MC-Loop-Signature: 1744759009477:425026726 X-MC-Ingress-Time: 1744759009477 Received: from pdx1-sub0-mail-a273.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.110.51.173 (trex/7.0.3); Tue, 15 Apr 2025 23:16:49 +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-a273.dreamhost.com (Postfix) with ESMTPSA id 4Zcg5r0xWMz6g; Tue, 15 Apr 2025 16:16:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744759008; bh=cZxBayk/19ttKico+tYOcz6z5i5bd/KpteFdnFTioS4=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=pdkeFYN+hvN6eTdJcNTCB0qKBgYHTg9M+wgnCHctw021Kq4TJBluwwznOkT4fiuae GioaEn1QRUFTyxxL9XY3Zj0XBm3PRV1Pm7rA+ilF/HBh6CP6lPiBPzOUkxXS1lA5iQ XCJgOHetlIP/kzdCjG5saON6RQClPMhB2BtsKBTwB6lsVAsqwhOq8297Sqc+kcQqwX VMNC4PQ2Eu+LJmiD//KZvW4/343ykgSTNa6QsEr0HI/YfOm5HitgLPdjITEbRGYsPE /aHt8eiK7FnTF0eOS6rGtlz2tQXeHNp0v3wVfnnolphExHswtWkYeQUEP+SG/puId5 60/AllAEwQfww== 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 , kernel test robot , syzbot+f3c6fda1297c748a7076@syzkaller.appspotmail.com Subject: [PATCH 7/7] mm/migrate: fix sleep in atomic for large folios and buffer heads Date: Tue, 15 Apr 2025 16:16:35 -0700 Message-Id: <20250415231635.83960-8-dave@stgolabs.net> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250415231635.83960-1-dave@stgolabs.net> References: <20250415231635.83960-1-dave@stgolabs.net> MIME-Version: 1.0 X-Stat-Signature: fw8tdtuekaga8smetfa6gcmyejzspgsj X-Rspam-User: X-Rspamd-Queue-Id: 0C52340007 X-Rspamd-Server: rspam08 X-HE-Tag: 1744759010-632994 X-HE-Meta: U2FsdGVkX18Yyg1FLz+F6gT0Rzp/BmhEiZJyftQNUeOGSXXTrPHQIENisOWHmnFrYZ43GALI+ZRoeaI3jqaP7GBZg2aFW6Rk/j2H6+NErkgCmgu4g67YF/m9ew4LW+a0i/3bOmXp3bovMInjySE/Gno6bO/K8flDXRlQbzQwebzf6XHByeMNBjlEDH5w8iDWtUht7xacrnVHyxHdZHi9a4Rkyv3t5P4g09VtYbMs9CwI8ez74kF2jCdleEQ760Z943yo8sJF6PfPyjCvU07p1dnM0xZDORgJ0qljMVW5NDun4SPGnG12shUY007EP2fAeNbriQcrneSWuRH3+m52XpAR4ngx7T45PzUK4oWLOpwS+ma/ISg6t7KxnW9fZqcg+D1d693DFF+wzBcAqAhQJ8EEK0V5tY9T+w6uHhojDKwYlooCXqfm/8CQes3sPSbVosKOzn0tRczHoz/LboRShqu5s2x7Lj+29K5jfdEn14zDG2nLHrb+c37AOcLJ7aAn0sEs+ZEgqVSbKBw0JlmX4U6t6DLSwvCg9fv99+8rMNEwPovvgnuXmE1lLKbH9qrOjxnrBS7bhAM35HjhCB9tYdEMVsMCj6vzwFtOhT1remzRu6zZaBNs2y7MX2MJ1TM0hV1PspYLYYwuzHY3tzKdXS4f92IzU9kvz5rx3EtHQYE0vmmKkbBbUQFpciSObdCPcG2UejrKWDLERaQh7KqC3Bqxq3bMcMkD74O+JJUjdNHv+0zGXeNwozArRpYV0/8U8viQpPqI6o0Om+/CLs5tL+9gunNHX4KVypCfjuAAjlUyECnRUdGTS0+YLhNr+nRNpzl2miidNw0mxzRhAOwsHZpXxAFrcdnW5B2JQBQwfO/O8qpF4FYCTRxHvAXTivFUIDoeZk21kKoqFZ8gAidV4w5IC6WBqMG+532nyM4SSbkcYvc7r30tB39xqiH3QS550EwsjJ5Ykc8rKvEbiSN 3dcqu5rh cNxtNfopt8mqSf/39T597scrK5qLLSkXkwGAZr+KBSYeqtlBxhAmYHMyNhK4Yeqdj+1FbD3JTiJqnOovwLab0lnuFFHFiyboLrPz6F5bSWGoEQylGhZwNnaM/Lj53zAe+96N0T9C5wThrnFDLEoRLM/k/KtzW7elPl51rgsCRxBt8sxZmVw72k3PtWRcoD7uAFV9fAV9uHTQwj62x5zo5ckqPd/vlK5Xzeu899wcPCrVIRr2tcWjY68u2VSv6AsBufpZYLl9fuAJBQHjcWa5l/5cwWvHmqLxLTc6qAze/aZyFgeNWj+N28DSzeHj+bADuejuVFHO+Hv0pMnKOk9payt/y1F1q/3SKerp0vOSfnl5InXM7/jh+bPnFM0p/V2a6mtSk2KhYSd+/0QHfe+6exUl1X4/eMLylECRL5FVZ2cIXlg6q0t3JLDyl6ERu9W3v9sAgLCAsR/L/oj3GpLqL21SYV5nuKl9CltpQjg5IUWaBULLO5eyGQLKSr4pjIAaeivtGMlL+SQZct0Gmu6fYzv1CajveO+yOxon+EFD7nOTTszE= 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: The large folio + buffer head noref migration scenarios are being naughty and blocking while holding a spinlock. As a consequence of the pagecache lookup path taking the folio lock this serializes against migration paths, so they can wait for each other. For the private_lock atomic case, a new BH_Migrate flag is introduced which enables the lookup to bail. This allows the critical region of the private_lock on the migration path to be reduced to the way it was before ebdf4de5642fb6 ("mm: migrate: fix reference check race between __find_get_block() and migration"), that is covering the count checks. The scope is always noref migration. Reported-by: kernel test robot Reported-by: syzbot+f3c6fda1297c748a7076@syzkaller.appspotmail.com Closes: https://lore.kernel.org/oe-lkp/202503101536.27099c77-lkp@intel.com Fixes: 3c20917120ce61 ("block/bdev: enable large folio support for large logical block sizes") Co-developed-by: Luis Chamberlain Signed-off-by: Davidlohr Bueso Reviewed-by: Jan Kara --- fs/buffer.c | 12 +++++++++++- fs/ext4/ialloc.c | 3 ++- include/linux/buffer_head.h | 1 + mm/migrate.c | 8 +++++--- 4 files changed, 19 insertions(+), 5 deletions(-) 2.39.5 diff --git a/fs/buffer.c b/fs/buffer.c index f8e63885604b..b8e1e6e325cd 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -207,6 +207,15 @@ __find_get_block_slow(struct block_device *bdev, sector_t block, bool atomic) head = folio_buffers(folio); if (!head) goto out_unlock; + /* + * Upon a noref migration, the folio lock serializes here; + * otherwise bail. + */ + if (test_bit_acquire(BH_Migrate, &head->b_state)) { + WARN_ON(!atomic); + goto out_unlock; + } + bh = head; do { if (!buffer_mapped(bh)) @@ -1390,7 +1399,8 @@ lookup_bh_lru(struct block_device *bdev, sector_t block, unsigned size) /* * Perform a pagecache lookup for the matching buffer. If it's there, refresh * it in the LRU and mark it as accessed. If it is not present then return - * NULL + * NULL. Atomic context callers may also return NULL if the buffer is being + * migrated; similarly the page is not marked accessed either. */ static struct buffer_head * find_get_block_common(struct block_device *bdev, sector_t block, diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 38bc8d74f4cc..e7ecc7c8a729 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c @@ -691,7 +691,8 @@ static int recently_deleted(struct super_block *sb, ext4_group_t group, int ino) if (!bh || !buffer_uptodate(bh)) /* * If the block is not in the buffer cache, then it - * must have been written out. + * must have been written out, or, most unlikely, is + * being migrated - false failure should be OK here. */ goto out; diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index c791aa9a08da..0029ff880e27 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -34,6 +34,7 @@ enum bh_state_bits { BH_Meta, /* Buffer contains metadata */ BH_Prio, /* Buffer should be submitted with REQ_PRIO */ BH_Defer_Completion, /* Defer AIO completion to workqueue */ + BH_Migrate, /* Buffer is being migrated (norefs) */ BH_PrivateStart,/* not a state bit, but the first bit available * for private allocation by other entities diff --git a/mm/migrate.c b/mm/migrate.c index 6e2488e5dbe4..c80591514e66 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -845,9 +845,11 @@ static int __buffer_migrate_folio(struct address_space *mapping, return -EAGAIN; if (check_refs) { - bool busy; + bool busy, migrating; bool invalidated = false; + migrating = test_and_set_bit_lock(BH_Migrate, &head->b_state); + VM_WARN_ON_ONCE(migrating); recheck_buffers: busy = false; spin_lock(&mapping->i_private_lock); @@ -859,12 +861,12 @@ static int __buffer_migrate_folio(struct address_space *mapping, } bh = bh->b_this_page; } while (bh != head); + spin_unlock(&mapping->i_private_lock); if (busy) { if (invalidated) { rc = -EAGAIN; goto unlock_buffers; } - spin_unlock(&mapping->i_private_lock); invalidate_bh_lrus(); invalidated = true; goto recheck_buffers; @@ -883,8 +885,7 @@ static int __buffer_migrate_folio(struct address_space *mapping, unlock_buffers: if (check_refs) - spin_unlock(&mapping->i_private_lock); + clear_bit_unlock(BH_Migrate, &head->b_state); bh = head; do { unlock_buffer(bh); --