From patchwork Fri Apr 18 01:59:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14056539 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 A2037C369CF for ; Fri, 18 Apr 2025 01:59:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9C53F6B029F; Thu, 17 Apr 2025 21:59:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9752C6B02A1; Thu, 17 Apr 2025 21:59:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6DD7C6B02A3; Thu, 17 Apr 2025 21:59:37 -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 4AF886B029F for ; Thu, 17 Apr 2025 21:59:37 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 47E0F1CBBF9 for ; Fri, 18 Apr 2025 01:59:38 +0000 (UTC) X-FDA: 83345508036.08.0E7EE84 Received: from serval.cherry.relay.mailchannels.net (serval.cherry.relay.mailchannels.net [23.83.223.163]) by imf28.hostedemail.com (Postfix) with ESMTP id 0C6E2C0004 for ; Fri, 18 Apr 2025 01:59:35 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=p1xyuGdf; dmarc=none; spf=pass (imf28.hostedemail.com: domain of dave@stgolabs.net designates 23.83.223.163 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=1744941576; 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=l0OkMrrCNfiNSUNqllJ63trdw8uvDJBD9sB7Chep1qQ=; b=q/JChSWP+Ti3FHIi0ZwY5fRvppkPlv9UPY9qDpxgNPLE+wfl+R7LxPwS43txBdV97qDHEy q3nzTlAxxArg2j/V2jy2vkEBhq6RGUVQZD0xzhPXwG9MitTGzycDW5SBE0+3d6purHILxe p0uZz41Wf/kSEdZLKFoLqChs7ZnQI+c= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744941576; a=rsa-sha256; cv=pass; b=g8cz5sK99ATmV8d9eIZEt1HzGNGtViFvLs78aCn6vk7GccoJuyaaKvCNhOJHcg6GHot6af PqXhJawhn2ha6aSIFUYflFw3FDJMxNqluGRyJpo6yLacpQtFikb0Uk11fXtqEwAkrFysl/ dnXmkHM8Z2SVZZREXOc66jS7z9BmzIs= ARC-Authentication-Results: i=2; imf28.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=p1xyuGdf; dmarc=none; spf=pass (imf28.hostedemail.com: domain of dave@stgolabs.net designates 23.83.223.163 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 DA7C04E3E21; Fri, 18 Apr 2025 01:59:34 +0000 (UTC) Received: from pdx1-sub0-mail-a285.dreamhost.com (100-107-95-229.trex-nlb.outbound.svc.cluster.local [100.107.95.229]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 76E904E3C8C; Fri, 18 Apr 2025 01:59:34 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744941574; a=rsa-sha256; cv=none; b=nTINgWWCpNRS6h4rQ+hDdWix5ieHLh2YvkU/HGmrRHhrLXnmmFZYLGoAKqREEQLf6NlqEo IzGtcgb2AnszYccBiRaabLwBIwo7+lMSPD3JJ5wICmwx/PiSzTOuJ+5o4y51QKPJuAJpkX KKIZXiOJwxomBWoCnIbE9vXkCbEElRWRtxp9iAhedw/AtxYHXrFD3P8ChDcfUVXY/gZU06 kQj0eWMmb2Ziic72MAVTxz1tOeT6r4jhxkFEa/LNf11beexjbvymPWznMDidxHEb3vcAlm AQKslS6e9CGQIS2daqtl5icWh5OFYhmfhYgRXpoflG0yiZTpA/Vi35hA7hrMBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744941574; 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=l0OkMrrCNfiNSUNqllJ63trdw8uvDJBD9sB7Chep1qQ=; b=4D5orQYmCxpExXLwDca3eoowuwJ5J7hePJCnS6NJ7850Xdly79QCPLRnrjnpcQo8i+RAFw OoMYQQUncr+AJoKJvYGbQmClNFpFF4ZRwe3qJ1GEzg7HWtFu2x133WRCWQwsgTLQ9hECGy 3XyoweS1nFZbrx4O1vtDjBOfalspQ/FkZ6GuFv35y22WCHvmEN9m9JlQL/uX7FndLspiRO XjjYrgIZF9n9eq3iP3bPXe8Z1LJil829bqpCxwTrHD1vRBcibyx2Bc/PkHOH1twekBw3NF /6K0m97KKSmHZvSxArWSieBCHyoG2CsQlb7SaYIpJluIPoPCxSItWlFZ4meL+w== ARC-Authentication-Results: i=1; rspamd-7bd9ff6c58-mj7hx; 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-Broad-White: 7d820e6c16f23b4a_1744941574795_2082964327 X-MC-Loop-Signature: 1744941574795:136927829 X-MC-Ingress-Time: 1744941574795 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.107.95.229 (trex/7.0.3); Fri, 18 Apr 2025 01:59:34 +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 4Zdycj3m31zC4; Thu, 17 Apr 2025 18:59:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744941574; bh=l0OkMrrCNfiNSUNqllJ63trdw8uvDJBD9sB7Chep1qQ=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=p1xyuGdfjY+kIZiUDVQxbDoSeumqeD6CRGZS5xt8zFdXGLyWeymMlwNP2bcj49nSW SRsKRijsknB7yuhD91VoidYVvK5Pd4U3BBlR6uxo1nLW76h+jtKoK2j9kJsZlRIqXU QnjWjkTfEWWLLTIQyz9nMXvH6bDSgkKDTT85dGUeAb9SPZ3D49XBTWYQnuSWyCwr1N oaUKT6pKiNEliKnxRCD2Mdc7nnhNcM/aA3L8ETWJpgAnN3cbSfNddVgxTMqPbNdOpz Glib8yBke2/A1WzVVrmTlaUBvp7vEgQ5gCvGpoIy9wfqFonA3uxgDH0RfC2B1ETaKE q96Ib+xiJLoHw== 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: Thu, 17 Apr 2025 18:59:15 -0700 Message-Id: <20250418015921.132400-2-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-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 0C6E2C0004 X-Rspam-User: X-Stat-Signature: w8d7bc63oh56m945ax3esqyibpe3dkm8 X-HE-Tag: 1744941575-28719 X-HE-Meta: U2FsdGVkX1/Dgo/N86M0dmOxD8Z5M5VwlrvDgrhGAkQUhk40aTf+0eBdJDXKk5JQMCFM5cK5inzFK4nPckWLS0YnkLt60pdwUZIls0Z2wKRKjL8wqnK01wr32IBDL55mJh10AwyF+zJdXqWTfeYrm5jd4VuOlr0dv/VMCgG0aJ1K5z7oc8oRxcXGwWntOz8aJ6oA7+aFTVBOxlFwZJ28TTDrkRmx910LmieXkLpmHd08R5bvxRrQxGm/X6BszPneQEeR1wFLwW4Z0/svQo8P3Mehi77ZmscB7m4K08Sj0SIZgnBt60CyDa098vPq3VgsgtpkSPzEmNZ5XsSzCfEBUzjc9waqwbo0kZnU5QcpJ4N8RmpvWGdoCZoe9plBTcR4aFxveI2WW6/OEpDcYV2SizgFMbq3zXNNDqh825PU8wmLnS1sQ7xJTNXgwBHtvRAxHqb/r2hsjD9OI82qjqN06rk424JkhzF5BCbxj+VCR7c2w1oWzUVc8NigF4QDMWdE3vAxd+r5b1YOJaGWnFZPOVyQ8Dfu+Nq2DOI5hOTIZNK3d7fvKKjslAqe91315QO6/k5VtVY3GbQSDkdRoJyPehYcHSZouOq7ekrm24nzdoSftY1i2JYxWnOyuZEpaEZIbD2BuDvtNeg6lQSb+VyEiFZ6JifJmCOMDfiptSLVYtUfqJcLJ0V7EnIL1bYtvarkFDyIEuUonD0gbSuZe2b84/5fq7+EZA4HuSS/ZWOE9yyXiaxsclQ3eySSRQKCrK/+PBsu660cwjdnojBS/yhxjYEOzX0CEd17PI+/XcBQUmlKZDwoWAsy1XsCiGc3yefNwziHkU96MoeLSWiYEBbi+O3wurkmGLHhbHSEvL77weOz5KyYOHlulmBcfCOYVgqLAW4itlJVHwhLg4B2NDh/xDeBTrHfM7dQ552ejglnvHpIDbgHjLYwWdF9tS3ZlVD/OynXXmWChXeUlccggPl 4v0wJ3VS 6lzBYJUODTRIkzWgg1oeVca4P/vdEcowo9lZ/O4DC+ADw3IXO5QXCYY7BH3GS6VXW84wYi+H4FmglNMsGjEkpFWsYNG3aVPaxXO2HNnAl6t7BJDzfVgJpY3ITHSJvXsoBLci3Of1fZ2zHiNS1x3Hhz7fYU1s3TXdya8y4TjzA+o4gfuqbnWCuV7X+WrhR4xAYjXPJv0EjesaLVahI8ht0KPSe3GsMiHSrM4mgjGM4+tNxdmzNzR32j0U2oLXvTGVxA2HVudPGZq2mS09KwkKfYPWrJI9WfGsMvyfORSKpAjU19eZOiMnqVM5tlS4fW6n9kRxtumYgqQvHLi/vMBg3uSG8GQ== 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. Reviewed-by: Jan Kara Signed-off-by: Davidlohr Bueso --- fs/buffer.c | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index c7abb4a029dc..f8fcffdbe5d9 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 Fri Apr 18 01:59:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14056540 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 2F953C369C2 for ; Fri, 18 Apr 2025 01:59:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EB15D6B02A1; Thu, 17 Apr 2025 21:59:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DE8836B02A2; Thu, 17 Apr 2025 21:59:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BEE156B02A3; Thu, 17 Apr 2025 21:59:38 -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 928DF6B02A1 for ; Thu, 17 Apr 2025 21:59:38 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 808C5BA03C for ; Fri, 18 Apr 2025 01:59:39 +0000 (UTC) X-FDA: 83345508078.22.5DB42B3 Received: from firebrick.ash.relay.mailchannels.net (firebrick.ash.relay.mailchannels.net [23.83.222.59]) by imf01.hostedemail.com (Postfix) with ESMTP id 0F27840007 for ; Fri, 18 Apr 2025 01:59:36 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=rVMv6hky; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf01.hostedemail.com: domain of dave@stgolabs.net designates 23.83.222.59 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744941577; a=rsa-sha256; cv=pass; b=izAVqmLFixploVyhEmxX48w4OYEFvAHSUTzduSpMaHrnM9GzQ3b3EfoJ5o/W3M4YkfpNaR iHwxUW1BxJMx4wPSy6eQlwoDwb+ojLuB3pmjZ+ShLDShITzxONI8wE+F6U0hChndLoXgne c4Jnj1WDexFrd/97u8gOF0iHs0Uxft0= ARC-Authentication-Results: i=2; imf01.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=rVMv6hky; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf01.hostedemail.com: domain of dave@stgolabs.net designates 23.83.222.59 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=1744941577; 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=QC8hcWca1VUOV1taXWQ6Z+juBzwnD0z3CPqsdXKoeHc=; b=8Kx9wYhZzpwHxxLxSupImuPqhG+U8eTso3MKr7RMbfPovoTzBT6pKy++9dusVu/Bu3VqiP oyI2SfN+7VI39hc81zO3n2yeVhJdsz8+X70ZWOIZu9SLO32jQ9QV3ldCDLmF9Nq43tDp/u C2jw6b+R3sj/4GnSo3enL8I+pnLW/2I= 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 8B71B161484; Fri, 18 Apr 2025 01:59:35 +0000 (UTC) Received: from pdx1-sub0-mail-a285.dreamhost.com (100-110-156-188.trex-nlb.outbound.svc.cluster.local [100.110.156.188]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 2CB7C160603; Fri, 18 Apr 2025 01:59:35 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744941575; a=rsa-sha256; cv=none; b=XEJ9RA6KXmvwd8Gv0JYxXK/2m8CMqF+ePjPwTGMLUzMz0j6HKa6IZd8kFeqWHU2tGSs3ZB OhvDqJenIZ1AiPf2Vpk91oIYz+LuLvgwnpI+p5Lob7HJm4s1LlvD3DYnwKVJrXI5f6e0N9 4bqRKKdAS/3rNFsCU7t+5fJujJrfhpqEdVL3xsxLd+3TJvegZsKU2Xy7o0OIUN6R4e5Xjd L7auihzUfaC1haRiHhXxljcIp8ff5nFsezK2xWys/pVzNAJgmDnxsGNq7Q7drDgKHqZGBc U5oOdELnHT26Nw8JNCYOlLW8TaViw2+7hOYCMchBwH8X6IycAChP+oxmIsjiLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744941575; 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=QC8hcWca1VUOV1taXWQ6Z+juBzwnD0z3CPqsdXKoeHc=; b=QtTD6whjx7vCKobg2CP6G6o4rVJjrcemVTTLgOmR5LP764Uq9Dz5ypB8gPh3GPt1sDu1Ym mb4vv4HctY5noKB9S8WQ037BQwF60dxU5wfDJmSug+ntW4+jxVCwKGOmLLsJ9NXBlugzWE 3z3AIT+pWXuGza29hY9IXr+Nq19voXucVh8XWdkfNRTBHNmtNcMOw/58fWgWkqFpUbn7Hy sENDMMQJqFOBoQYsRox5xbMhf8eHDlvNHxVee57ho7n3Pcrz7mvpOUhHhquphUNn9SXK4c luMhp06KyTZyzVuh3eztZxtF4UAOJQyWp66EwRmPHWVIUX0LshayfGPtl/UzUg== ARC-Authentication-Results: i=1; rspamd-7bd9ff6c58-mgflk; 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-Army: 3982c68142220f2a_1744941575469_4289484740 X-MC-Loop-Signature: 1744941575469:2260933014 X-MC-Ingress-Time: 1744941575469 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:35 +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 4Zdyck2WMxzGH; Thu, 17 Apr 2025 18:59:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744941575; bh=QC8hcWca1VUOV1taXWQ6Z+juBzwnD0z3CPqsdXKoeHc=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=rVMv6hkyQa8fjuM+QBSGVYfPcfqeaqnpMwAxt9TghL4tIonvCkNMrl3airJqMqno/ wHLVbaSLotbWqcLsLKDL/mKjWoqAZlXuDgrKX+V5PE+9p0ikWFnCVhdhlcljyjSa6n cUD48qMK7+cl7r9xVOVJu8JCcigSk43mJM5KRnmYSlX8nOoPyhInwuEF/mUklsEVSR I8atEIoU7HMJ5tRNS27jOvaQSBTugEYp2CydV1eGPgAIMYho8wPgjuOpwgW4lTnj3g gSFU75/nvsKqRJVjMAYbbxtI6oaiAQ3zSIrR/zcD0qJg/Dbc3jCt2GCobDHWWdl3o/ wVOMZDjdFOhlg== 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: Thu, 17 Apr 2025 18:59:16 -0700 Message-Id: <20250418015921.132400-3-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-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 0F27840007 X-Stat-Signature: 5drfyuf7sfzfhwznn1qxxcsx6ng5me6p X-Rspam-User: X-HE-Tag: 1744941576-804731 X-HE-Meta: U2FsdGVkX18bLSup/IGQ/xNWD3o62YkX8wWiFhuLbylq+2pUvulCKhWYoDL7hPkLdJipnWJno/Q2cZ7W4mDL0CZICHRuodZB9kIrCozNdnSi9roe+HDwciYecHGC57NMjCVs2IF8ivMMMqAMdQjAydsnTV4nqJQf1fwzGjNZJEfiLUgXTaEjT/Ca4vCtQ3PdFJbVpNAy9ZK3OJpyq8JwgdVRXyb/2veS3m+oykpDWb7RSmckRDz3YCHpZcnSnzPzvPCNHhH/1yxRNZx1mDda0YV50wJX2uXhWDGh/KIsbeaipeJnNB0S5UFZDYKHa6oy16bdDm9o5A6rgq83FsbNe0mQGoPLxtLDG2cYP6Br2s8urEz0z7saSljlDRmQohXttmJhN92H9UiW6ANmYLZP/AuxD3srucIM/6yDrw/0jXBWkL6Xt2dvIIv8HHL8YcciKp7btGTxaVybnFATuIDEnRM95jYEBoPE+VDHi3JEx61zhCKKJ5dZit9yInUw9M86gpE9Wj1bPXvfQpcMU7U/beBbETsGmb8lzwZlGunAwJuNQpieL6fM3eebmZ5ljpcdqXyKabUB6rX0/esBUySv5QUvntXyEOBRPDPw0ASJzQA2nv88aBRcmdNFKtFwDlHRhujJoTbMuWd6sHM/yjb4SHPMV5Fi0fMZjtXxzuyEj2+VDC6si555+H5/Lt6y95iQXuSVpD3S1mflMSZe0yuJsKtQWbc+gWOpdoce2A3OkdnLQ7l5+fYXrqR/NhE7sd2qDx5M+LFnhGomYpyo7/q346/K6tjUYpscfy3xGx1nawoJKr/TsqxKDhbUZOq4RMVD5cnNLTHd6UIU2Bqo93Leer8+DOVBxr+k2R/yyFDyX67K1qISrXqk0S+1Ds30glXGC/aji0I6b6YyLPEmoH2s6fMTb/SaoD2LydZOrgRM6jDUB7SzspoYUEnlj4hRgMWqCAoWJjhOA0nZ95U6F6Y O37SyA37 BiGpkKN9T+wkMkMk0wb17O2orzRbCEjmP25TtFurNizHcDpXqbJ5gWpcr5GD8mBkYxoAQaC6VWLHnpF7F5C5pMcmhrDFixiZz06tanv7d4DacwUzogrVlfiT4MAMAiiQiSiUDO41Xm51SgGknmpS/XOvC+GuQyjUcCzKhBu1V1qlBcLTVmuvxnWc2shb6RDkD1vUB3DhZgjMqHBGmI4YLJkR/WmbXR4faOtSuR4EswOKWc271k03fjAFaLlmA/4oehHUQiX1CZGkJH2diKK4IIoJ6OaBISaVM4SCE1x4rxcaMFHorKdpKcjYGr9ssBivKd0J30igd0poGJ+lH+T0GyHS8dw== 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. Reviewed-by: Jan Kara Signed-off-by: Davidlohr Bueso --- 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 f8fcffdbe5d9..5b1d74c818e9 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 Fri Apr 18 01:59:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14056541 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 B4F4CC369CF for ; Fri, 18 Apr 2025 01:59:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D02FB6B02A2; Thu, 17 Apr 2025 21:59:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C8BD2280005; Thu, 17 Apr 2025 21:59:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A91106B02A4; Thu, 17 Apr 2025 21:59:39 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 8678E6B02A2 for ; Thu, 17 Apr 2025 21:59:39 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 7C83DB3265 for ; Fri, 18 Apr 2025 01:59:40 +0000 (UTC) X-FDA: 83345508120.11.233F11E Received: from dormouse.ash.relay.mailchannels.net (dormouse.ash.relay.mailchannels.net [23.83.222.50]) by imf30.hostedemail.com (Postfix) with ESMTP id 173D180004 for ; Fri, 18 Apr 2025 01:59:37 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=YmZSGrjf; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf30.hostedemail.com: domain of dave@stgolabs.net designates 23.83.222.50 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744941578; a=rsa-sha256; cv=pass; b=3Cncv1pR6U/WW0aAYiduDQ+k9Wl1FEeIHan+sBzW+sFqpL7YgrpUfsmwcr6HJWpkhjvs75 iz71bptX0SJ5EMn2D3OMFvDaspFdx4kPuN6w/tmH/htPpLkIV180IKa6Z97ENqtL27gKrk 58BWJvcVSv9tUV8QM/EUOGV/loijeJM= ARC-Authentication-Results: i=2; imf30.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=YmZSGrjf; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf30.hostedemail.com: domain of dave@stgolabs.net designates 23.83.222.50 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=1744941578; 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=2JaAMscrug2FGAwbGl/h9oMw0eHDwe8tdi8SwLuHRGw=; b=uADgq09t/VwI/9QtjOJzqnMKDx+zzzQLHwMKJgHhATWycVHYYodCrsJJDfbGzXfBv3OSkI dhSLeOohPJL8AV6gVR4kA8YU6gCGcyqnsMChHgBcl021BYF1g+j1CV4o/85lljcKLdaJml nWRdMTMJr3vOHkhREPqICAffqvL7VsI= 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 8A71A23E1A; Fri, 18 Apr 2025 01:59:36 +0000 (UTC) Received: from pdx1-sub0-mail-a285.dreamhost.com (trex-5.trex.outbound.svc.cluster.local [100.109.60.146]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 2881523B7E; Fri, 18 Apr 2025 01:59:36 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744941576; a=rsa-sha256; cv=none; b=1224Yog9/g03yVNhDlBDFE/0Hyk/B+JrQKgz/ZPtCgcOUSw/CDV9MtexRW+868b5zjgUnM LTy3XSH61CYUMb6WQgg/Ke/nK/brvI6waRmxiPrN2S+qxqYJ7XhR9d13TYR0uGkoZHLy1z nsUOnxbMdwB4WCz8TvWa6BFsZbJmHqy1oU+CblYsybcfuJNWUHr8OqssZM640C9jb4Q35T ND/b1mVgBCtUMUJsebMmE+QMdHp2pu6MOdA2+LgG/ywhBz/0UqkS+r7Dys11cz+5xdoK/B WrE/GVW2E/K/CtguVgs4su7zIlgOme1vg0yh6t4lS3Z4SvZ46fhukyjHHC/SBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744941576; 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=2JaAMscrug2FGAwbGl/h9oMw0eHDwe8tdi8SwLuHRGw=; b=o5TA7zJDtpQNfp3RWNv6hV+kzTVIzZ3isMynpiA9NlPpklblcMKBuPikKvukbMff4URwST zg9qS588GrYl699Y76HKHmZP9kOrfLSD2rw5Y9mb/Xkgr2y6gnGGsclFCrX4/pM4RMZ1Yo pEGWEGiA4V4svtGzAkzRrPfAJF6uvdB15E1zS0Yq+KsFGfAKjkMmE92qGt0BFD6PGsjjap +4QHFXaiC0dLH81KAEycwUPl3mTA2j5GcnslSPCc2ylVVS4GyRTFkwOOEAApyQ2io2qoyr WsasbZDgCD3q7wb2N/H5cPWLVggrPMwYq+VWJFBh+h7T6jz7G0x5vauhT5BQ5g== ARC-Authentication-Results: i=1; rspamd-7bd9ff6c58-dhqhn; 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-Cold-Relation: 6c61228447797287_1744941576475_1157459792 X-MC-Loop-Signature: 1744941576475:204546122 X-MC-Ingress-Time: 1744941576475 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.109.60.146 (trex/7.0.3); Fri, 18 Apr 2025 01:59:36 +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 4Zdycl1Nlyz88; Thu, 17 Apr 2025 18:59:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744941576; bh=2JaAMscrug2FGAwbGl/h9oMw0eHDwe8tdi8SwLuHRGw=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=YmZSGrjf8jPt/J19BQv5GZPl1g28pGIvNWKqy1j2sTGEvEThhx8B0MQ6bS284Eocs lkjvhxkqZvzRRhhAGLzDpvMrnzoP/QYj2VKErCD3BP4+uSkgVOdYTPNGP8S5BaKFhy ZNMI3GagZT3WXe5OXJvBeuW9pFZ1Idq/0s4wbguLzmKNFBDOsheQ/OMY69y4Xvj6nZ 1tuAvkf4YyroDuSAy23vswcxVMCWCX/x2f1ImKImmi5HNpZ390WS9jAZG8uujheG1s qyyyyIXUGkBHGbPsAUvP58/87KZDesCzyAnOfXbwnrzgAXyFY4274gkHTOQG2k4eWm h3V1Cf52hOC2Q== 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: Thu, 17 Apr 2025 18:59:17 -0700 Message-Id: <20250418015921.132400-4-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-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 173D180004 X-Stat-Signature: mwdiw9hbzeasyg1e3egx5ccf55fiiic7 X-Rspam-User: X-HE-Tag: 1744941577-527791 X-HE-Meta: U2FsdGVkX1/9TrlR25JX3D4S2alcT/UcVkR2m/PyuvGWdwlBGgI63hC2wYKM1eNZo9fEAIVJDppCAWfP9IsaHMaTK54vd9FNb7gGxUQ+cKnSIqqTxpGOV6CpiDcwvRceFJwyeXYnUa73v7/iNKKX0c9RNaSy8mYUlLqAmga5F+hAZWkGwyJxl2W2jmE0hwzlAWAEiiCj+E1UR0KoiSkInADFBRap/vIzgB6+AWwi7i0c/1AKkqAYoFO9PgrKoFi8kmPJi6ebX22pCkp1LWKI+ac6K2YA/5KqdZDKxlAmTz+rjx9D98c3bQwMeay4Owg6Hcg2Wx5wYsL+ipuiav68phft//9/6A7ckh5Ab1AEBATAKRjl/PC2PAuC3l9lNKx/twNyC4fdlAH2IkDZqASQWQZhUR9UYN6wvgTZysh1/6wmpymfYibg5jrvlTdHCYI2ihqyJf/WmQYGloOOmUPdOYLhMzcyEaCxXilFqpTQFtQe3Jx+N3MNFDCYuHLZ/P0W8mqGDC2PZML0Lbe0I/ZLDW5XFS8Lw0Ud1VkJFiTcFy3tICXb1lieWTAflO2/xv/ptD1JCGXDPfrJM5I7LeeXQKNdTvG9ZkxBn4/yCcZCOGUCBUpf87Vfnrxu0fv8TRujg5he88vedabqKil5jZ9qnEN2d6GmDIo556qM8owC4B2PvJiT60pqwIiJjMmnXZ5p0GMY5OdKQmptwXyDvOkbCBKJzC/DGQu5BbRa1vRJ4Ls5KJJ1PnAEDZKo/k+n6YnfOjOcYS38XGQrbuARCP95KKV0lMYSfiEuLAELgduXLC4WbE6EpLLwmCa9d8M4tgOOWzkEY7DRg0qo6KB9r0YlWnnnSGEQupjYtFWaui5OlsaFGl02WYMOdttWAxSu+z/m7NDUDz2RY/4j9K6Ok9iL2Ay2e2pq8GbR8bug+RnM8/7fcjlEryQ88OHdus3nXCPxZMefucvbXvnpSzv2hWm 3ezNyfbP AH/np3VfI0J9EqB2wO0Ddp95lt/dvHuoNv7kYLF9OaUF51Btp46omqFau6ooW+8gBwx+/XNeEjUTi1lwXSmotO7UfpplG4P1fpFJCxZTBN2fnt4HFtc3I5rsoG46sNLKbg5R66GBpXIWMhSToDqmgk/PIpVumf3w9LG2DtrdJjmc7Hfx7F5paYw42mmzko97yCyflpDmTuz0FXlesO1JbUk72SApGe74P4NGxha41olx4xuS9nvuQuzoMsz0uIn47ZG+xTQ+fdWPUfKqzqg9euJhiFeoP+ZHpcZoXyxq2h9r09cNfd/ySwgwU7INXhXLPBihyM6b55XHM9TxpuLKK9VnVv9ZKsslRQI6/ZCQEKhPCxB20g9rS9FqqBZZJVGOlkppk20e/UpmCR2I= 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 Reviewed-by: Jan Kara Signed-off-by: Davidlohr Bueso --- fs/buffer.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index 5b1d74c818e9..f8c9e5eb4685 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,7 +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 Fri Apr 18 01:59:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14056542 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 DB855C369CB for ; Fri, 18 Apr 2025 01:59:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 514546B02A3; Thu, 17 Apr 2025 21:59:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4519D6B02A4; 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 2A6946B02A5; Thu, 17 Apr 2025 21:59:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id EC8EC6B02A3 for ; Thu, 17 Apr 2025 21:59:39 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id BC9A11A0C0E for ; Fri, 18 Apr 2025 01:59:40 +0000 (UTC) X-FDA: 83345508120.29.7E86F90 Received: from rusty.tulip.relay.mailchannels.net (rusty.tulip.relay.mailchannels.net [23.83.218.252]) by imf01.hostedemail.com (Postfix) with ESMTP id 9013A40003 for ; Fri, 18 Apr 2025 01:59:38 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=kpdvvT0I; dmarc=none; spf=pass (imf01.hostedemail.com: domain of dave@stgolabs.net designates 23.83.218.252 as permitted sender) smtp.mailfrom=dave@stgolabs.net; arc=pass ("mailchannels.net:s=arc-2022:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744941578; a=rsa-sha256; cv=pass; b=x+EmrxZX2Q0WJ9bWmF21bnSYaPM3Yb/LF4kfb6/uAuxLVPqHvQJNd87Qj7S+bxZl3QNnRJ WrPfemK5Z96peGmQUPEDW/87wEoueTyAaalMV/5zIsBcu0sh+bv84xGPkhbOpHawLEftT/ asmVjV3UQw81BauykH9rNeExYw9jfIQ= ARC-Authentication-Results: i=2; imf01.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=kpdvvT0I; dmarc=none; spf=pass (imf01.hostedemail.com: domain of dave@stgolabs.net designates 23.83.218.252 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=1744941578; 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=MabBCGA0m9wa8fg8pahJUNB3mGjC5+Tn6ArLhv/vZP4=; b=VC7vtuowaiAnjPm/4ZDiGEuU2Oe2MVaImbCXHFeq0/L1iLWj+iRx3vuF50vtaPZbfq3qbV pd5S4iHvvS4mcWeonQZMuty4cHwQ9UTEOw0QCo0KDJTcj9mo2SUFteHFeXxwNAXnGSFgN2 OEu9liWre5xiSUIC7/HzbXTp+yEbCtc= 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 6A4B14E3E63; Fri, 18 Apr 2025 01:59:37 +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 0ECC44E3DA7; Fri, 18 Apr 2025 01:59:37 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744941577; a=rsa-sha256; cv=none; b=9z4NAulcqZEtIT3DSYAMJEEzyHl4OUVDXYUa/u5xxIbUVEx9loFzXyemUYJIxCWwdjYugU WVF1FilRhnoPGcGgKkwBwVfepuUU+AqqpF3wAA1KcaG8DZbz/nIgk9g1NTLrx3uW6NYbyn +b/V3NaPWumOJic84c6hJowbpt0eGJ+PO5jbunEdw72a2KmiKWXfJ2HOPUtHgjV9irGf6x ymgpFhEeG3oIadQhFKeXeJ5C/sirbDB3bfPjKFoV0v16fYNioIpl8r1LN0rvGYNtpr38zT P1FzH/j3/aENh8ndcvWFl3cunGnzuk0PdkKns6nGngAdcG9fM2inhua8M0UgjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744941577; 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=MabBCGA0m9wa8fg8pahJUNB3mGjC5+Tn6ArLhv/vZP4=; b=f90j+YzQ7hjLmbPv83G8gY9IV1ngRf+fEsgixVWiTHTW34CL04W5yZhP5quyBOfr1nG4sz WwuXcWe6OJOxnILNXMKEecU/l3HkvNTGImZohFuToUOLb+gLH6XUYJJzPWFgSARgULnusF ibDXExRqho6UW5OK1/337w/kviXgddoOO1mzTPCB/X51rWMKAVznGP7z4QcBTzp/GzuRIZ pxUH4WR014BcLc5wosFrmtvAbytHTS6lGt8Hh9xXJv8ExN1kCJXrNYSkjIBz1tVHA6fQp5 rBqYWsMYOWd0/2K9nKxhqyR+L+POmNVJ0fwLtJhTKHUF5MUGqCoeBTlJHtusuQ== 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-Chief-Stop: 39defe2a79e53d38_1744941577351_2613637192 X-MC-Loop-Signature: 1744941577351:2941586493 X-MC-Ingress-Time: 1744941577351 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:37 +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 4Zdycm1J43zC4; Thu, 17 Apr 2025 18:59:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744941576; bh=MabBCGA0m9wa8fg8pahJUNB3mGjC5+Tn6ArLhv/vZP4=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=kpdvvT0Ib2FwXMXNFIsJ1B3ejhEV1qHORy8ifsLmPDuDI2XKOMNKHFP5Rw0CyLl6w rR7V8hLj+GfhGeWq4jzNR3MQZ8cgo84qj8xXYxoeLMTWGMFoKm55+n8ZLsPgH8Aypr wErbSM37TrMzASGozlXONJ4ETYCh+H9xLho51IyRgg7sqopDUKLBRXEkzinUEH0/Eg fqka2BRDE/gaK4M5naK6mkgn/RN+5RRk7FawYGfUHZf1Gy5gbN9i7ubDYRxOs921G3 +trPpaHa7x8wUg9nakawBIH5pd3uABIt1rk3+wl80IGVPnZdyuX0hEpjlKqANg5W7O A5iiKcalfiCKw== 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: Thu, 17 Apr 2025 18:59:18 -0700 Message-Id: <20250418015921.132400-5-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-Rspamd-Queue-Id: 9013A40003 X-Stat-Signature: ereojbwnjumyjnxyjkm9cposb9j5kmmx X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1744941578-950283 X-HE-Meta: U2FsdGVkX1+wnfkM04mBFX9uJMePdqE9SoTgEt0KKYFT0XTlVOE4CYsDoUV3BmSooqMASli9xDDBBmyjPob/b9HKlDM1t0RXCEatUQYqDCAnofLqXp4IfbUVzRkA3ymcIJw2H64RHoYaz7RX4gLr3o2dczA9zxjSBqYBCFLo89ERRh9ZkXkEQt6EMkN+7IX1nczbssF278IU0xFweGmbyvXfmz2t0dq4b4U94UmP26UxlR5YqRUNprOvKDmZOlfFIhjH+LCH3Hx0U+5icbAiqnUvA/4dngJsBwZljCjNvfLX70nHIdDuzGbnWYbupc+Bm5cZHnhfdI3Fioz/d/VLS7+lj5VIYFY/RoIji0E58wn5gx6uPkJeqzbKmycQi5zLG8DS7JWyz78tnHz2VC+MFh8VzStHAM+kXCayyGxLQLc8IA0NhOr7zpjhT4HklOpxRRUXnAc80txVrsfuXUIzYqLGQV0DzZm6kmmrs7MreYhHiVgWNs+1z1dNyE7gEmj5LyMOiuZc1bHY6zn9TdDnxdxfBFwsQeaFhwMh8yE6xrai38uCz7Iis04CwAN2yIUkyeqN+rEjKNuw7rYwNCFWy7LgWYOlHHcAl/LorEgZWyBrwkhyUZyrrG95lNfS0ZptG7fKISWXeR6Xk8e/qY8/7LoPKhGkYpMgzsSCBx1Q0HBALttsT7y/eot/pSkUueN5QU+VGXNabg3GGGejSwis8k9K/2cDBgWmFMybcMkWy9XAjEZaHme5sCQet1Ju2zKsiyaftCukKJ2iQLLMr2NasEMbUK7fLJO8asQk3DL7aah8HRBBLaMYrZJfGXJ+Wbt4odUJDEOUimxwzZpC+bm5SatHKAplJnUVUEuhn2AAuZJwonUoJ2k8+M0kwRF/fRDONt21lmPLnUD6rh8oCBmv94VVGJEsZUrPFdLxwzFFm2YvOWibT4nxsdbTIcbCgcUzGVkwLwotAcYB9sm0K+P UjWDrjEw GiTKTBjAcWiJzVy5Dg3pES7YQsXJW9KIjddit 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 Reviewed-by: Jan Kara Signed-off-by: Davidlohr Bueso --- 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 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); From patchwork Fri Apr 18 01:59:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14056544 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 88E6EC369CB for ; Fri, 18 Apr 2025 01:59:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E42416B02A7; Thu, 17 Apr 2025 21:59:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DF2106B02A9; Thu, 17 Apr 2025 21:59:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C42BB280005; Thu, 17 Apr 2025 21:59:41 -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 A43CB6B02A7 for ; Thu, 17 Apr 2025 21:59:41 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 9C178BAD58 for ; Fri, 18 Apr 2025 01:59:42 +0000 (UTC) X-FDA: 83345508204.24.355D5F6 Received: from bumble.birch.relay.mailchannels.net (bumble.birch.relay.mailchannels.net [23.83.209.25]) by imf13.hostedemail.com (Postfix) with ESMTP id 46A2B20002 for ; Fri, 18 Apr 2025 01:59:40 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=b1brf5x1; spf=pass (imf13.hostedemail.com: domain of dave@stgolabs.net designates 23.83.209.25 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=1744941580; 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=hKmDLBznBthDscmA9sgDkTXs0rwbYUAQtB+GXsoJPYI=; b=KSp8+kn28EhotI03iuO7lCSDAkuP5aTes2TBQfv7Wp2zm26ifDXatHnkTTD6yM5rLHCJ8X q80ufcKLytGrgassrQDM7iDuKAijEmBFqMs8gLuxszkOCXkBfuFQELNxAd1gup7eU4qt/6 /BJHG5gjhnKkG+OMhcqlISsr+9Ma3Oo= ARC-Authentication-Results: i=2; imf13.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=b1brf5x1; spf=pass (imf13.hostedemail.com: domain of dave@stgolabs.net designates 23.83.209.25 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=1744941580; a=rsa-sha256; cv=pass; b=3i/nj2cU/N0kpRu04VvctYrMvwh0/UQzmQGUbbj3xMWFVGDpgCi8Ritl++LfH9eEXuq3eO zd8K0w+0/UrF2/BdKqoJ6kwR47Ec2BXsTXGYC6ZORQeTUy1CtYAik85XIPiShQv5TUIRR0 VguXxhAdsLCqKo9Fo25fz3GnTJhLyNA= 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 3896022B93; Fri, 18 Apr 2025 01:59:39 +0000 (UTC) Received: from pdx1-sub0-mail-a285.dreamhost.com (trex-9.trex.outbound.svc.cluster.local [100.107.106.146]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id C7E9223AAC; Fri, 18 Apr 2025 01:59:38 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744941578; a=rsa-sha256; cv=none; b=bsS5tFD0sykfK7zgraiMxA6Hqu34fBQvGqp/gPVXcbn9Ae7yU7jNNc8UR4b5rAXNa/rm9P cHrD0gwRYU7YUn8R53I5Y06jNSSvAdw8T8wBjFLoKlMc1ijYYBvHIYZszAWZsntuqztV+8 tiMp7EG9joNDpwQSC30WAiKTGI9atNHK5zKtTADNVYzhWXdfyMGl0hbhTvozI8YsGjp4Pw YerUN7Gnxv/1kJS4NgKUVtmBIFh3748BU8PXyjCWBtBMj3rgMSw5iiNDuTl0mM1uTxehZ0 /ne1HKj6YsKgcsGWrtgf3rGcaBIThc8aXi8Cdy1puedBdvmcuZywFlVspMhrZg== 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=hKmDLBznBthDscmA9sgDkTXs0rwbYUAQtB+GXsoJPYI=; b=ECo5BCDzyir7+TlNjGln88KUGmCcrJNuxMMZ+EMa/uoxAkwoGjTgPinRzSSD/VIrbwBZu3 5fTo6KNMLJfRJV0E/SCPpTgwIee4/xZOXej5ykmRgQ3DQ5KOXg8763GIRIZSldd7h+nMyt 6HYp+LsqACtzOtweUC/f7EXPaxvEnuS9OoEAFPik7kvzb6lCbf9p2OzW8GcKkCpa3O6VfT 84IPngyaw5h0Q+phAgCfUUF2yiwg2RqY6PJnm5vYxJU4subqvEkzzKOgbH+0NZRI9N8EDA EObJrViW4yWeGjj6W6jutGER1Qttej6EpeoFh7gqWNs4gAoW9bxZjGE1+6AQWA== ARC-Authentication-Results: i=1; rspamd-7bd9ff6c58-nbb74; 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-Cure-Invention: 47318de774abdd5a_1744941579134_174818650 X-MC-Loop-Signature: 1744941579134:3745978050 X-MC-Ingress-Time: 1744941579134 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.107.106.146 (trex/7.0.3); Fri, 18 Apr 2025 01:59:39 +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 4Zdycn706VzC4; 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=1744941578; bh=hKmDLBznBthDscmA9sgDkTXs0rwbYUAQtB+GXsoJPYI=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=b1brf5x1RNdEsMHccWQKbPpYYmJhWv8TlrH44E+XtoDEKd2xqrNlBhefpOMfAOxAR Sgn57LrKi2zczUgmDPnStSt5fhN+u0dEp6udEBvEL9X7oRZOPRWIhH/dh8yNVMBOTI kTenPmfdOZ8eZkNf9+JmzTlEpWVpNm/1OV7l0DkFqk+BEtZT4uAh6p7pM3Q31RjC/v 8Ev5BN3zhcnT38dqvqXDWyP9xkJMkSKlB9K1g9KM7Avj1F2gFvBT9MSo0sLKmVyEyo e4Prr0i0XeH8VNUbF2FtnJdU+sjO+J6uJNmAqdlelEQLCQPndPfWTg4Ng499HiEQ+E e1oe8wdmdIxBA== 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: Thu, 17 Apr 2025 18:59:20 -0700 Message-Id: <20250418015921.132400-7-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: 46A2B20002 X-Stat-Signature: cy8wcgdna11nz31esj34hn7puy7hf3fi X-HE-Tag: 1744941580-898261 X-HE-Meta: U2FsdGVkX18wUyfWhCDSdVSQpv6m08t957dSIIkQO+MxzhmufkcNHwzf1+fSmIyq3mNh6jQ7gHm/zPuMjfwinV6NlbHk9No4rYB/9ezyUISIX5rct6Plaj1gfhOikzaR+Emnie21HCpeOmDc/TjKUlriuuEwTFtrM8uoDGcz1u3+ua1agWwIQgX04C/NGCyphCh7FiaIvqUCQI4E6uZXLy9xd3lodEBv66IhxmjtYD88pskF7Go39RNWcr02nEBcr1lD9QJXcc13ESvZ5XFXOfoHKNhF6qkNzM3Opc/mUGKGgUjo15SvU2lvq1kR4fNDs5sbBqGbNDx8mxogHtpJhUacxyROZfBgIqJSHebWeL4bLu0FmclfpQz78sJq3x2mbhO4n4+TQtVC6AZIZVZjhsK4MUdhqhc0sXXOFt9DCqFTCAbXkh/HFlvFXbtq3j57OZR3LAyAgrr3CGv0xZdveWZ76UKc1doHBFZ9yMRf8ApNMaes7z0d9Yq5gEKiF/lOBGx9t8++DuKTkATIAsyszGAPaieJCUsp34yoLsL7mEXVVxzdzD85k3NDTV6W/NAtKS9OuXUYrxEEdNbB2U9te0bLzoafihV8A/gClg/vaZcDOjYt4ySWc8UucjOhSjfbCi48rGsA8WCL0RPI4gzlxQ7DdE8dsN18M/NWPKR5ElC7YXNPZROx3tL5JCZwmfNDHy9NxiQXd2iuAcifC7Mo/gWDhnQ7KoZpe8s8KLElyecDVVJU1SN+wgFBM6iwDwPlH+hXWO56ZM7Vzjy8OYjHirh9RQJ8KfV7zM00a9KCFFgW7Z2Uhet4y1lRHsav2SttdnH6C4biIeTHR417B7CowsQTxuO+GtXGQfMclQi+hFYDFX6tKXKMH/GQy97HiStZuxvYp2bqvRQW/lHdH4unTS4LndEvIRxFcIrABWsyPVfrfup9M8sT0bIfKfw2kVNVTEx0eUhEYmtQaf5rI/2 gOUWi98k 27py5I8DWpF88Cxxan8s8fCu5TYI8VXSUzfs6QCgymGblyBNMvnOSUqbEfwR3hbWBtOLUnFfezyg5DiZ2XjrMzDodgaA4tK6+0i0TxCQhLglsg0tHBpnhUATeBN+xY0fomafexDe3FOMHE2Tvp8j0HPHRrhGMZV5Qy3C6aG5WtPiABAmh8W01tXFdpQVx1SrjCYOhi+y3cSn4AnLnewGP+/hyaumT30kkzVbn+06g43jV4BNlMLdw4S+fzdFhfeyT9jQJssJKbZElQHaxCOtljFyF+wi0A8fa/G6D1WdW7z0qL59KcLqqqrVszG9R2P5mCInXC1cSEXeqle/PXkeIAbsUh99dJp+U5Ki25zsr3UXvGnS66mQbnR22VqCyq+SmyTrdgOfj+hWuY84= 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 Reviewed-by: Jan Kara Signed-off-by: Davidlohr Bueso --- 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 Fri Apr 18 01:59:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Davidlohr Bueso X-Patchwork-Id: 14056545 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 02474C369CF for ; Fri, 18 Apr 2025 01:59:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C71D96B02A9; Thu, 17 Apr 2025 21:59:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BD2566B02AA; Thu, 17 Apr 2025 21:59:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A4F236B02AC; Thu, 17 Apr 2025 21:59:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 86A466B02A9 for ; Thu, 17 Apr 2025 21:59:42 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 80D6580B50 for ; Fri, 18 Apr 2025 01:59:43 +0000 (UTC) X-FDA: 83345508246.12.C93F78E Received: from serval.cherry.relay.mailchannels.net (serval.cherry.relay.mailchannels.net [23.83.223.163]) by imf19.hostedemail.com (Postfix) with ESMTP id 42B031A0005 for ; Fri, 18 Apr 2025 01:59:41 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=ojM1hAs4; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf19.hostedemail.com: domain of dave@stgolabs.net designates 23.83.223.163 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1744941581; a=rsa-sha256; cv=pass; b=mImg7BWCCJs5zkKdPvgWMSBcwRLATfE3Sv7BjgHYm6+jeYEaxdQagxSqWfRO5t8E+UK36E Pvyza6ceyF8fEER5OiXRZVXv1OKNFeLmZ69JNe2pi59d/yTfuJcm+FHUjCQVS5eqLyGM9n afovRNBNikbDlQAINor4F59c3emQ8ng= ARC-Authentication-Results: i=2; imf19.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=ojM1hAs4; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf19.hostedemail.com: domain of dave@stgolabs.net designates 23.83.223.163 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=1744941581; 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=mLuy4zj438a+1U7en1XTc2so8/rQx/UkGlXZZ4fu/o0=; b=wrtcQ0iikAURQ67QERT8kXljXGDRZSM3bv8b3zRN+vlph3WC5szVu0IZW+ZbgS6UjbzjGR N4D3y6k880vYKov08lJx8g7d14BIiwhnVYs4/hVeLBb4/zToFIjAUa3znoNkXHhdb4JN31 lSNT/g0U6lBhgSY7mpo+OLvhNr+104s= 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 2AA9643A62; Fri, 18 Apr 2025 01:59:40 +0000 (UTC) Received: from pdx1-sub0-mail-a285.dreamhost.com (100-109-225-168.trex-nlb.outbound.svc.cluster.local [100.109.225.168]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id B7F6343E8E; Fri, 18 Apr 2025 01:59:39 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1744941579; a=rsa-sha256; cv=none; b=ns7YySgcYYnM8Kj9r8WBG/+jq+NUBrxn19NPA+MoKeR+9VM4j49HT5uLUSQpThCedSk4DM bJ1z/Q2crqPYVt3ONDhMiwMkfqj1En5xCZgJ0fq//gTIzD1zvqZwJF42tKxqVtYeJb64Pl ZAMpNm0nMP2zMu14RkMZOXB0c94c5H4OF9q6Ke1mxnk5OpnkmCPLI1mCORUUbLmNIrSQnm 1vU6zysbz7Q0YDi2kcecw5aeRjl/adN73hWeMk0mVhOtR05b519waAaJiKuMzt/facjYYp 87IkdL/XtwQ4U5htLUD1LZGaCQGw2XbwBib+BnwbnKYEMgjKce3C4x6A4hG3cw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1744941579; 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=mLuy4zj438a+1U7en1XTc2so8/rQx/UkGlXZZ4fu/o0=; b=5dFXA76JGdkkLY43IAR7iR52xYZ9W/2hOmYt6L4Znss36zGhTQnn8roHAA2YKmwE6DMf89 Fj8ocyUz+gMZGUoOUW+tw97h1V7yLjx4UM2ce3O1vXUMCrCnpYVqWbiCnGRS6Yd2x+YCBZ ZdBtXGv5HXEFyt/cSAR4n9WqdeAn6KdgGhCBHU7xnsbocDHPx4LjaFT+niQMvYwwALm2HK 7uTi/ZQMunH0saXX/Qzw7D+WNLHbB/aAxM/I4epcQFXiGSDC1zVRvO77Wc0+S7VfVkOcSM vVjJalJevndsJakSsjU7SDGUA091uVTahWPboMYWGO+bqVoOTpP2gmloNVCNNQ== 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-Arithmetic-Illustrious: 0fad6dd04f8ec142_1744941580073_3053416635 X-MC-Loop-Signature: 1744941580073:4085039856 X-MC-Ingress-Time: 1744941580073 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.109.225.168 (trex/7.0.3); Fri, 18 Apr 2025 01:59:40 +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 4Zdycp5xX7z88; Thu, 17 Apr 2025 18:59:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1744941579; bh=mLuy4zj438a+1U7en1XTc2so8/rQx/UkGlXZZ4fu/o0=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=ojM1hAs4QuyGMN5IMykmxoNDnE/XSho9YWg2f3+vjt9onDipMWmdlnrV9vBWEe+9D Y4rzbAtGkyIvbHF1mBxxYraGhEG88LxouC7TxUjznQySZEbzHQpgLPWYol2FiQt6Ue MOr7emUEtui7A/0wQEgdKQMsciO+SK6i0V4FWcXVGSXBIlKqC24NNmp7j34BnFPlFg egX7k1DS97Bm+aA/D6ErzxSfg68rfpkHnY1IMMCiCRfURy726xm+HxldOadS4JfMB2 SwYG5xviqBpseVjKf0jrHIuY5BVKwAXfzk3nEKlrt4j4hVSDXRYMw0H4OcIS8TeRRc BMjzIsk3itaNQ== 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: Thu, 17 Apr 2025 18:59:21 -0700 Message-Id: <20250418015921.132400-8-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-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 42B031A0005 X-Stat-Signature: 4ccjesaujhwrm1y3xoh3ra5mnqdpgg3y X-Rspam-User: X-HE-Tag: 1744941581-70635 X-HE-Meta: U2FsdGVkX19Y2pLK9LbRYJM+2XGJSte19KVkfWTOVQgwuIonIFyQfiH8gODpwpNYSuvjOHBdPho+WCzaVXkeimJ2151J2hcYcbi93op5G5uGCOc+XlH4/XIL5Z3kBy2G5YWxRD+vvdgKDkBl9BzsxvdCmAWT6qbm66wcLpG3nEjUtCbFn0HJDkpTzJUw4CqlTQWGkgBNIeozfscu2ZE2fP+cspZwu9GPuX7miz4UFD/73FIcYiactndeDyPWPFJ/drp/FHOETZOgTgsQqIvlFBZ70jsuFYaKLB+4jDm8XvyT7NIrZ1rKaxG7tbFhrnLizO1DH5oo0i8JMarZP2XEfXJnpR+ZP46C6tdFwkz7AiZ54yvB9rGy/mOF3IkA2rge65j7srEq6fOcXEdkQhYQQFJq7ybX2rnhTu3pmlVptp7gHQJw7WQzsMzYbCAZLRQW7IAvw0AAwkFB2tzlndcmKxayZYYqW/cD+FFiIT/uXfgnTV90LuLqX757NoFJdX+xN3EXunNz9IH/wnZhAqNgxu5U+ucQ9wpuLKgszyCZtMXl13zv2BKE9ABdvwrX6CCvSi3/Q6LeLVL5YxQ0kC1nGiDEFpAHeXiAVbN6tHaM37TgMierT517+DKoXA95Ic6NWYwhuxDwzP6NURFsMDm+iVu8NHcqOyo6nGZzv9PdzPRtOSN9MxfCW24GZYAKF8jmFTpKuQhwUuuL6zR6PYqh5QEteJ6elSEbtuDm9UcVZhLS48OjdpEOsgmSas+kyGKQHij0R3wUs03T2IgV1qmGv/ADGnrSUD3Wx8kD4RzTU8hCaB52jV9eDofdlTjYUemRR3t14krupNni3pU93M5G5NfSsj5lYoyCbDL8d0A/hO74ygIaFOb65nUlcIPKzPHB8ogwnFrj1BDNqKeCQwIBXIw9vUMeqFzh1CE7IiQJLv7PdsNlS4oMDxK/pr4B8hAPkqpAVGY+wyHLJhP1r6m otfgVmjV Hew7xxT/fX8XMbhoXrQJf2HyIGQAbFlsdqEthhusLG9KSAzkhEkkELR2jQgeQBatRsH3iwFsnOBLfu4uOSMm1lrEGUaw30kWZONQHxgKbdmhS1DPSGVcw7J97jzGCt8KT8F/+XJmva7KIfQLbVDcsVxshTDELLX0VtemCIqGN80KIGPYVUjOH+EwGLzV5iYy4U/CY9o2IlUt3T2vylyVRe6zGK6HVnIH3lDvURc8rXgxb3du92EYztCZh7yIajOaYRhwcXagbzMmQ0UQ3pbcE4qBVVengc2F6ihPATGTkbwtMp6ljR8pREoLD6UeQjkg/M3YZr2qg0zpbUIb2GPvSOrJnPEy+ogxYQIp4IIvJTDRTexjAIzLP9AoUPHvOwkfuAX/QNBKjFEYJu4k7Y0Yfj31MpRxwG3Wy2Cp2+edBEdoN//I3BrkSmMMG54UrkQB2HXpspHm9fSI/ADUNRs/ncB5w1fkTagV8jnU+Jy4uiGSqPtM/pJzh7cFNsGxpgq8oCgg6pHgXkeaQDSVQWzhq+p9Yp7OXVfxnn709/o5B8fyErRk= 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") Reviewed-by: Jan Kara Co-developed-by: Luis Chamberlain Signed-off-by: Davidlohr Bueso --- 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(-) diff --git a/fs/buffer.c b/fs/buffer.c index f8c9e5eb4685..7be23ff20b27 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 f3ee6d8d5e2e..676d9cfc7059 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,7 +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);