From b2284aedab333238b5b2f4faed60b905a5059abf Mon Sep 17 00:00:00 2001 From: Rob Norris Date: Tue, 13 May 2025 03:52:46 +1000 Subject: [PATCH] metaslab_alloc: make hint BP and DVA const (#17324) Nothing modifies them, and nothing should, so lets try to enforce that. Sponsored-by: Klara, Inc. Sponsored-by: Wasabi Technology, Inc. Signed-off-by: Rob Norris Reviewed-by: Alexander Motin Reviewed-by: George Melikov --- include/sys/metaslab.h | 6 +++--- module/zfs/metaslab.c | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/sys/metaslab.h b/include/sys/metaslab.h index 1bfa44a38..5fe3a2006 100644 --- a/include/sys/metaslab.h +++ b/include/sys/metaslab.h @@ -81,12 +81,12 @@ uint64_t metaslab_largest_allocatable(metaslab_t *); #define METASLAB_ASYNC_ALLOC 0x8 int metaslab_alloc(spa_t *, metaslab_class_t *, uint64_t, blkptr_t *, int, - uint64_t, blkptr_t *, int, zio_alloc_list_t *, int, const void *); + uint64_t, const blkptr_t *, int, zio_alloc_list_t *, int, const void *); int metaslab_alloc_range(spa_t *, metaslab_class_t *, uint64_t, uint64_t, - blkptr_t *, int, uint64_t, blkptr_t *, int, zio_alloc_list_t *, + blkptr_t *, int, uint64_t, const blkptr_t *, int, zio_alloc_list_t *, int, const void *, uint64_t *); int metaslab_alloc_dva(spa_t *, metaslab_class_t *, uint64_t, - dva_t *, int, dva_t *, uint64_t, int, zio_alloc_list_t *, int); + dva_t *, int, const dva_t *, uint64_t, int, zio_alloc_list_t *, int); void metaslab_free(spa_t *, const blkptr_t *, uint64_t, boolean_t); void metaslab_free_concrete(vdev_t *, uint64_t, uint64_t, boolean_t); void metaslab_free_dva(spa_t *, const dva_t *, boolean_t); diff --git a/module/zfs/metaslab.c b/module/zfs/metaslab.c index 58f0975e1..42c432163 100644 --- a/module/zfs/metaslab.c +++ b/module/zfs/metaslab.c @@ -5315,7 +5315,7 @@ metaslab_group_allocatable(spa_t *spa, metaslab_group_t *mg, uint64_t psize, static int metaslab_alloc_dva_range(spa_t *spa, metaslab_class_t *mc, uint64_t psize, - uint64_t max_psize, dva_t *dva, int d, dva_t *hintdva, uint64_t txg, + uint64_t max_psize, dva_t *dva, int d, const dva_t *hintdva, uint64_t txg, int flags, zio_alloc_list_t *zal, int allocator, uint64_t *actual_psize) { metaslab_class_allocator_t *mca = &mc->mc_allocator[allocator]; @@ -5440,7 +5440,7 @@ next: */ int metaslab_alloc_dva(spa_t *spa, metaslab_class_t *mc, uint64_t psize, - dva_t *dva, int d, dva_t *hintdva, uint64_t txg, int flags, + dva_t *dva, int d, const dva_t *hintdva, uint64_t txg, int flags, zio_alloc_list_t *zal, int allocator) { return (metaslab_alloc_dva_range(spa, mc, psize, psize, dva, d, hintdva, @@ -5932,7 +5932,7 @@ metaslab_claim_dva(spa_t *spa, const dva_t *dva, uint64_t txg) int metaslab_alloc(spa_t *spa, metaslab_class_t *mc, uint64_t psize, blkptr_t *bp, - int ndvas, uint64_t txg, blkptr_t *hintbp, int flags, + int ndvas, uint64_t txg, const blkptr_t *hintbp, int flags, zio_alloc_list_t *zal, int allocator, const void *tag) { return (metaslab_alloc_range(spa, mc, psize, psize, bp, ndvas, txg, @@ -5942,11 +5942,11 @@ metaslab_alloc(spa_t *spa, metaslab_class_t *mc, uint64_t psize, blkptr_t *bp, int metaslab_alloc_range(spa_t *spa, metaslab_class_t *mc, uint64_t psize, uint64_t max_psize, blkptr_t *bp, int ndvas, uint64_t txg, - blkptr_t *hintbp, int flags, zio_alloc_list_t *zal, int allocator, + const blkptr_t *hintbp, int flags, zio_alloc_list_t *zal, int allocator, const void *tag, uint64_t *actual_psize) { dva_t *dva = bp->blk_dva; - dva_t *hintdva = (hintbp != NULL) ? hintbp->blk_dva : NULL; + const dva_t *hintdva = (hintbp != NULL) ? hintbp->blk_dva : NULL; int error = 0; ASSERT0(BP_GET_LOGICAL_BIRTH(bp));