summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/zfs/zfs_vfsops.c
diff options
context:
space:
mode:
authorek110237 <none@none>2007-07-26 09:37:15 -0700
committerek110237 <none@none>2007-07-26 09:37:15 -0700
commited097989586a51afeee476d7fbba56222d447ad8 (patch)
treef43d7b5d2f261579a98fa1c0485f7154dc809536 /usr/src/uts/common/fs/zfs/zfs_vfsops.c
parentfaff872b7fa30b801c55f8dadc61b4c8fdd0848e (diff)
downloadillumos-gate-ed097989586a51afeee476d7fbba56222d447ad8.tar.gz
6509628 unmount of a snapshot (from 'zfs destroy') is slow
Diffstat (limited to 'usr/src/uts/common/fs/zfs/zfs_vfsops.c')
-rw-r--r--usr/src/uts/common/fs/zfs/zfs_vfsops.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/usr/src/uts/common/fs/zfs/zfs_vfsops.c b/usr/src/uts/common/fs/zfs/zfs_vfsops.c
index c86ec69047..f69fdff1ce 100644
--- a/usr/src/uts/common/fs/zfs/zfs_vfsops.c
+++ b/usr/src/uts/common/fs/zfs/zfs_vfsops.c
@@ -1019,7 +1019,13 @@ zfs_umount(vfs_t *vfsp, int fflag, cred_t *cr)
return (ret);
}
- (void) dnlc_purge_vfsp(vfsp, 0);
+ /*
+ * We purge the parent filesystem's vfsp as the parent filesystem
+ * and all of its snapshots have their vnode's v_vfsp set to the
+ * parent's filesystem's vfsp. Note, 'z_parent' is self
+ * referential for non-snapshots.
+ */
+ (void) dnlc_purge_vfsp(zfsvfs->z_parent->z_vfs, 0);
/*
* Unmount any snapshots mounted under .zfs before unmounting the