diff --git a/lib/libzfs/libzfs_pool.c b/lib/libzfs/libzfs_pool.c index 8a043aa0f..e493e8562 100644 --- a/lib/libzfs/libzfs_pool.c +++ b/lib/libzfs/libzfs_pool.c @@ -3733,6 +3733,13 @@ zpool_vdev_attach(zpool_handle_t *zhp, const char *old_disk, (void) zpool_standard_error(hdl, errno, errbuf); } break; + + case ZFS_ERR_ASHIFT_MISMATCH: + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "The new device cannot have a higher alignment requirement " + "than the top-level vdev.")); + (void) zfs_error(hdl, EZFS_BADTARGET, errbuf); + break; default: (void) zpool_standard_error(hdl, errno, errbuf); } diff --git a/module/zfs/spa.c b/module/zfs/spa.c index cafc7196c..99a8d107e 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -7602,8 +7602,10 @@ spa_vdev_attach(spa_t *spa, uint64_t guid, nvlist_t *nvroot, int replacing, * The new device cannot have a higher alignment requirement * than the top-level vdev. */ - if (newvd->vdev_ashift > oldvd->vdev_top->vdev_ashift) - return (spa_vdev_exit(spa, newrootvd, txg, ENOTSUP)); + if (newvd->vdev_ashift > oldvd->vdev_top->vdev_ashift) { + return (spa_vdev_exit(spa, newrootvd, txg, + ZFS_ERR_ASHIFT_MISMATCH)); + } /* * RAIDZ-expansion-specific checks.