From 675b49d2a1105b22e48b8143563c93c6755326d6 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Sat, 11 Jan 2025 04:26:42 -0500 Subject: [PATCH] FreeBSD: Use ashift in vdev_check_boot_reserve() We should not hardcode 512-byte read size when checking for loader in the boot area before RAIDZ expansion. Disk might be unable to handle that I/O as is, and the code zio_vdev_io_start() handling the padding asserts doing it only for top-level vdev. Reviewed-by: Brian Behlendorf Signed-off-by: Alexander Motin Sponsored by: iXsystems, Inc. Closes #16942 --- module/os/freebsd/zfs/vdev_label_os.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/os/freebsd/zfs/vdev_label_os.c b/module/os/freebsd/zfs/vdev_label_os.c index 79732d917..f1843807f 100644 --- a/module/os/freebsd/zfs/vdev_label_os.c +++ b/module/os/freebsd/zfs/vdev_label_os.c @@ -96,7 +96,7 @@ vdev_check_boot_reserve(spa_t *spa, vdev_t *childvd) { ASSERT(childvd->vdev_ops->vdev_op_leaf); - size_t size = SPA_MINBLOCKSIZE; + size_t size = 1ULL << childvd->vdev_top->vdev_ashift; abd_t *abd = abd_alloc_linear(size, B_FALSE); zio_t *pio = zio_root(spa, NULL, NULL, 0);