https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=207464
--- Comment #24 from
commi...@freebsd.org ---
A commit references this bug:
Author: avg
Date: Mon May 16 06:24:05 UTC 2016
New revision: 299900
URL:
https://svnweb.freebsd.org/changeset/base/299900
Log:
zfsctl: fix several problems with reference counts
* Remove excessive references on a snapshot mountpoint vnode.
zfsctl_snapdir_lookup() called VN_HOLD() on a vnode returned from
zfsctl_snapshot_mknode() and the latter also had a call to VN_HOLD()
on the same vnode.
On top of that gfs_dir_create() already returns the vnode with the
use count of 1 (set in getnewvnode).
So there was 3 references on the vnode.
* mount_snapshot() should keep a reference to a covered vnode.
That reference is owned by the mountpoint (mounted snapshot filesystem).
* Remove cryptic manipulations of a covered vnode in zfs_umount().
FreeBSD dounmount() already does the right thing and releases the covered
vnode.
PR: 207464
Reported by:
dusti...@ebureau.com
Tested by: Howard Powell <
hpo...@lighthouseinstruments.com>
MFC after: 3 weeks
Changes:
head/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c
head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c