Unverified Commit 98a6ca16 authored by Davidlohr Bueso's avatar Davidlohr Bueso Committed by Christian Brauner
Browse files

fs/buffer: avoid redundant lookup in getblk slowpath



__getblk_slow() already implies failing a first lookup
as the fastpath, so try to create the buffers immediately
and avoid the redundant lookup. This saves 5-10% of the
total cost/latency of the slowpath.

Signed-off-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
Link: https://lore.kernel.org/20250515173925.147823-3-dave@stgolabs.net


Reviewed-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent fb27226c
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1139,15 +1139,15 @@ __getblk_slow(struct block_device *bdev, sector_t block,
	for (;;) {
		struct buffer_head *bh;

		if (!grow_buffers(bdev, block, size, gfp))
			return NULL;

		if (blocking)
			bh = __find_get_block_nonatomic(bdev, block, size);
		else
			bh = __find_get_block(bdev, block, size);
		if (bh)
			return bh;

		if (!grow_buffers(bdev, block, size, gfp))
			return NULL;
	}
}