All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Davidlohr Bueso <dave@stgolabs.net>, Jan Kara <jack@suse.cz>,
	kdevops@lists.linux.dev, Luis Chamberlain <mcgrof@kernel.org>,
	Christian Brauner <brauner@kernel.org>,
	Sasha Levin <sashal@kernel.org>,
	viro@zeniv.linux.org.uk, willy@infradead.org,
	akpm@linux-foundation.org, josef@toxicpanda.com, mhocko@suse.com,
	linux-fsdevel@vger.kernel.org
Subject: [PATCH AUTOSEL 6.14 27/39] fs/buffer: introduce sleeping flavors for pagecache lookups
Date: Tue, 29 Apr 2025 19:49:54 -0400	[thread overview]
Message-ID: <20250429235006.536648-27-sashal@kernel.org> (raw)
In-Reply-To: <20250429235006.536648-1-sashal@kernel.org>

From: Davidlohr Bueso <dave@stgolabs.net>

[ Upstream commit 2814a7d3d2ff5d2cdd22936f641f758fdb971fa0 ]

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 <jack@suse.cz>
Signed-off-by: Davidlohr Bueso <dave@stgolabs.net>
Link: https://kdevops.org/ext4/v6.15-rc2.html # [0]
Link: https://lore.kernel.org/all/aAAEvcrmREWa1SKF@bombadil.infradead.org/ # [1]
Link: https://lore.kernel.org/20250418015921.132400-3-dave@stgolabs.net
Tested-by: kdevops@lists.linux.dev
Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 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 a03c245022dcf..7981097c846d4 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 932139c5d46f5..ffcd76d977703 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -223,6 +223,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 *);
@@ -398,6 +400,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


  parent reply	other threads:[~2025-04-29 23:50 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-29 23:49 [PATCH AUTOSEL 6.14 01/39] cpufreq: Add SM8650 to cpufreq-dt-platdev blocklist Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 02/39] cpufreq: Do not enable by default during compile testing Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 03/39] nvmem: rockchip-otp: Move read-offset into variant-data Sasha Levin
2025-04-29 23:49   ` Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 04/39] nvmem: rockchip-otp: add rk3576 variant data Sasha Levin
2025-04-29 23:49   ` Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 05/39] nvmem: core: fix bit offsets of more than one byte Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 06/39] nvmem: core: verify cell's raw_len Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 07/39] nvmem: core: update raw_len if the bit reading is required Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 08/39] nvmem: qfprom: switch to 4-byte aligned reads Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 09/39] scsi: target: iscsi: Fix timeout on deleted connection Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 10/39] scsi: ufs: Introduce quirk to extend PA_HIBERN8TIME for UFS devices Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 11/39] virtio_ring: Fix data race by tagging event_triggered as racy for KCSAN Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 12/39] dma/mapping.c: dev_dbg support for dma_addressing_limited Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 13/39] intel_th: avoid using deprecated page->mapping, index fields Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 14/39] driver core: introduce device_set_driver() helper Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 15/39] driver core: fix potential NULL pointer dereference in dev_uevent() Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 16/39] mei: vsc: Use struct vsc_tp_packet as vsc-tp tx_buf and rx_buf type Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 17/39] dma-mapping: avoid potential unused data compilation warning Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 18/39] btrfs: tree-checker: adjust error code for header level check Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 19/39] cgroup: Fix compilation issue due to cgroup_mutex not being exported Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 20/39] vhost_task: fix vhost_task_create() documentation Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 21/39] vhost-scsi: protect vq->log_used with vq->mutex Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 22/39] scsi: mpi3mr: Add level check to control event logging Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 23/39] net: enetc: refactor bulk flipping of RX buffers to separate function Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 24/39] dma-mapping: Fix warning reported for missing prototype Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 25/39] ima: process_measurement() needlessly takes inode_lock() on MAY_READ Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 26/39] fs/buffer: split locking for pagecache lookups Sasha Levin
2025-04-30  0:47   ` Luis Chamberlain
2025-04-29 23:49 ` Sasha Levin [this message]
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 28/39] fs/buffer: use sleeping version of __find_get_block() Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 29/39] fs/ocfs2: " Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 30/39] fs/jbd2: " Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 31/39] fs/ext4: use sleeping version of sb_find_get_block() Sasha Levin
2025-04-29 23:49 ` [PATCH AUTOSEL 6.14 32/39] drm/amd/display: Enable urgent latency adjustment on DCN35 Sasha Levin
2025-04-29 23:50 ` [PATCH AUTOSEL 6.14 33/39] drm/amdgpu: Allow P2P access through XGMI Sasha Levin
2025-04-30 12:58   ` Alex Deucher
2025-04-29 23:50 ` [PATCH AUTOSEL 6.14 34/39] selftests/bpf: Mitigate sockmap_ktls disconnect_after_delete failure Sasha Levin
2025-04-29 23:50 ` [PATCH AUTOSEL 6.14 35/39] block: fix race between set_blocksize and read paths Sasha Levin
2025-04-29 23:50 ` [PATCH AUTOSEL 6.14 36/39] block: hoist block size validation code to a separate function Sasha Levin
2025-04-29 23:50 ` [PATCH AUTOSEL 6.14 37/39] io_uring: don't duplicate flushing in io_req_post_cqe Sasha Levin
2025-04-29 23:50 ` [PATCH AUTOSEL 6.14 38/39] bpf: fix possible endless loop in BPF map iteration Sasha Levin
2025-04-29 23:50 ` [PATCH AUTOSEL 6.14 39/39] samples/bpf: Fix compilation failure for samples/bpf on LoongArch Fedora Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250429235006.536648-27-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=brauner@kernel.org \
    --cc=dave@stgolabs.net \
    --cc=jack@suse.cz \
    --cc=josef@toxicpanda.com \
    --cc=kdevops@lists.linux.dev \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=mhocko@suse.com \
    --cc=stable@vger.kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.