diff --git a/module/zfs/mmp.c b/module/zfs/mmp.c index 35348f8b4d..6541eca162 100644 --- a/module/zfs/mmp.c +++ b/module/zfs/mmp.c @@ -378,7 +378,7 @@ mmp_thread(spa_t *spa) * with fake, but reasonable, default non-zero values. */ mmp->mmp_delay = MSEC2NSEC(MAX(zfs_multihost_interval, - MMP_MIN_INTERVAL)) / vdev_count_leaves(spa); + MMP_MIN_INTERVAL)) / MAX(vdev_count_leaves(spa), 1); mmp->mmp_last_write = gethrtime() - mmp->mmp_delay; while (!mmp->mmp_thread_exiting) { @@ -392,7 +392,7 @@ mmp_thread(spa_t *spa) start = gethrtime(); if (multihost) { next_time = start + mmp_interval / - vdev_count_leaves(spa); + MAX(vdev_count_leaves(spa), 1); } else { next_time = start + MSEC2NSEC(MMP_DEFAULT_INTERVAL); } diff --git a/module/zfs/spa.c b/module/zfs/spa.c index 7edf0459ce..f576293ebf 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -2448,7 +2448,7 @@ spa_activity_check(spa_t *spa, uberblock_t *ub, nvlist_t *config) */ if (ub->ub_mmp_magic == MMP_MAGIC && ub->ub_mmp_delay) import_delay = MAX(import_delay, import_intervals * - ub->ub_mmp_delay * vdev_count_leaves(spa)); + ub->ub_mmp_delay * MAX(vdev_count_leaves(spa), 1)); /* Apply a floor using the local default values. */ import_delay = MAX(import_delay, import_intervals *