From ed097989586a51afeee476d7fbba56222d447ad8 Mon Sep 17 00:00:00 2001 From: ek110237 Date: Thu, 26 Jul 2007 09:37:15 -0700 Subject: 6509628 unmount of a snapshot (from 'zfs destroy') is slow --- usr/src/uts/common/fs/zfs/zfs_vfsops.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'usr/src/uts/common/fs/zfs/zfs_vfsops.c') 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 -- cgit v1.2.3