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 <behlendorf1@llnl.gov>
Signed-off-by: Chunwei Chen <david.chen@osnexus.com>
This commit is contained in:
Brian Behlendorf 2015-12-10 15:23:26 -08:00 committed by Ned Bass
parent 5f4004efc0
commit 279e27db23
1 changed files with 8 additions and 0 deletions

View File

@ -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);