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) {