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:
parent
5f4004efc0
commit
279e27db23
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue