From 5e94284fe57ba0b3b5825676e3fd498c8b4b8115 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Thu, 10 Dec 2015 15:23:26 -0800 Subject: [PATCH] Set 'zfs_expire_snapshot=0' to disable auto-unmount There are cases where it's desirable that auto-mounted snapshots not expire after a fixed duration. They should be unmounted only when the filesystem they are a snapshot of is unmounted. Signed-off-by: Brian Behlendorf Signed-off-by: Chunwei Chen --- module/zfs/zfs_ctldir.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/module/zfs/zfs_ctldir.c b/module/zfs/zfs_ctldir.c index b03c4e5d0273..a00d61d1a6f2 100644 --- a/module/zfs/zfs_ctldir.c +++ b/module/zfs/zfs_ctldir.c @@ -333,6 +333,11 @@ snapentry_expire(void *data) spa_t *spa = se->se_spa; 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); @@ -373,6 +378,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);