From be08aa8b590b7b4d423d44c118ab7ea4a0201e95 Mon Sep 17 00:00:00 2001 From: Kip Macy Date: Sat, 16 May 2009 20:33:13 +0000 Subject: [PATCH] - allow forced unmounts - don't assume snapshot was auto-mounted --- .../contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c index 835aa532327..831bd2df415 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c @@ -967,8 +967,7 @@ zfs_umount(vfs_t *vfsp, int fflag) if (fflag & MS_FORCE) { /* TODO: Force unmount is not well implemented yet, so deny it. */ - ZFS_LOG(0, "Force unmount is not supported, removing FORCE flag."); - fflag &= ~MS_FORCE; + ZFS_LOG(0, "Force unmount is experimental - report any problems."); } ret = secpolicy_fs_unmount(cr, vfsp); @@ -1070,8 +1069,9 @@ zfs_umount(vfs_t *vfsp, int fflag) if (zfsvfs->z_issnap) { vnode_t *svp = vfsp->mnt_vnodecovered; - ASSERT(svp->v_count == 2); - VN_RELE(svp); + ASSERT(svp->v_count == 2 || svp->v_count == 1); + if (svp->v_count == 2) + VN_RELE(svp); } zfs_freevfs(vfsp);