From mboxrd@z Thu Jan 1 00:00:00 1970 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 Content-Transfer-Encoding: 8bit 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) { -- 2.39.5