summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2025-03-17 06:48:33 +0100
committerCarlos Maiolino <cem@kernel.org>2025-03-18 14:47:45 +0100
commit5abea7094bdff895c6f9e579745ecd9883bfb231 (patch)
tree27665b55ad495c7897c2d961324e00b7ce5b3735
parent1ec1207722c8bf584a09754afa2966698d6dd7af (diff)
xfs: remove xfs_buf_get_maps
xfs_buf_get_maps has a single caller, and can just be open coded there. When doing that, stop handling the allocation failure as we always pass __GFP_NOFAIL to the slab allocator, and use the proper kcalloc helper for array allocations. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> Signed-off-by: Carlos Maiolino <cem@kernel.org>
-rw-r--r--fs/xfs/xfs_buf.c33
1 files changed, 6 insertions, 27 deletions
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
index f42f6e47f783..878dc0f108d1 100644
--- a/fs/xfs/xfs_buf.c
+++ b/fs/xfs/xfs_buf.c
@@ -88,26 +88,6 @@ xfs_buf_stale(
spin_unlock(&bp->b_lock);
}
-static int
-xfs_buf_get_maps(
- struct xfs_buf *bp,
- int map_count)
-{
- ASSERT(bp->b_maps == NULL);
- bp->b_map_count = map_count;
-
- if (map_count == 1) {
- bp->b_maps = &bp->__b_map;
- return 0;
- }
-
- bp->b_maps = kzalloc(map_count * sizeof(struct xfs_buf_map),
- GFP_KERNEL | __GFP_NOLOCKDEP | __GFP_NOFAIL);
- if (!bp->b_maps)
- return -ENOMEM;
- return 0;
-}
-
static void
xfs_buf_free_maps(
struct xfs_buf *bp)
@@ -317,15 +297,14 @@ xfs_buf_alloc(
bp->b_target = target;
bp->b_mount = target->bt_mount;
bp->b_flags = flags;
-
- error = xfs_buf_get_maps(bp, nmaps);
- if (error) {
- kmem_cache_free(xfs_buf_cache, bp);
- return error;
- }
-
bp->b_rhash_key = map[0].bm_bn;
bp->b_length = 0;
+ bp->b_map_count = nmaps;
+ if (nmaps == 1)
+ bp->b_maps = &bp->__b_map;
+ else
+ bp->b_maps = kcalloc(nmaps, sizeof(struct xfs_buf_map),
+ GFP_KERNEL | __GFP_NOLOCKDEP | __GFP_NOFAIL);
for (i = 0; i < nmaps; i++) {
bp->b_maps[i].bm_bn = map[i].bm_bn;
bp->b_maps[i].bm_len = map[i].bm_len;