diff --git a/module/zfs/vdev.c b/module/zfs/vdev.c index 2f28a01c6..78e701c80 100644 --- a/module/zfs/vdev.c +++ b/module/zfs/vdev.c @@ -2520,7 +2520,8 @@ vdev_dtl_should_excise(vdev_t *vd) } /* - * Reassess DTLs after a config change or scrub completion. + * Reassess DTLs after a config change or scrub completion. If txg == 0 no + * write operations will be issued to the pool. */ void vdev_dtl_reassess(vdev_t *vd, uint64_t txg, uint64_t scrub_txg, int scrub_done) @@ -2603,7 +2604,7 @@ vdev_dtl_reassess(vdev_t *vd, uint64_t txg, uint64_t scrub_txg, int scrub_done) * DTLs then reset its resilvering flag and dirty * the top level so that we persist the change. */ - if (vd->vdev_resilver_txg != 0 && + if (txg != 0 && vd->vdev_resilver_txg != 0 && range_tree_is_empty(vd->vdev_dtl[DTL_MISSING]) && range_tree_is_empty(vd->vdev_dtl[DTL_OUTAGE])) { vd->vdev_resilver_txg = 0;