diff --git a/module/zfs/zfs_ctldir.c b/module/zfs/zfs_ctldir.c index b70eb66239..a36959c332 100644 --- a/module/zfs/zfs_ctldir.c +++ b/module/zfs/zfs_ctldir.c @@ -325,6 +325,11 @@ snapentry_expire(void *data) zfs_snapentry_t *se = (zfs_snapentry_t *)data; uint64_t objsetid = se->se_objsetid; + if (zfs_expire_snapshot <= 0) { + zfsctl_snapshot_rele(se); + return; + } + se->se_taskqid = -1; (void) zfsctl_snapshot_unmount(se->se_name, MNT_EXPIRE); zfsctl_snapshot_rele(se); @@ -365,6 +370,9 @@ zfsctl_snapshot_unmount_delay_impl(zfs_snapentry_t *se, int delay) { ASSERT3S(se->se_taskqid, ==, -1); + if (delay <= 0) + return; + se->se_taskqid = taskq_dispatch_delay(zfs_expire_taskq, snapentry_expire, se, TQ_SLEEP, ddi_get_lbolt() + delay * HZ); zfsctl_snapshot_hold(se);