freebsd-nq/sys/cddl
Andriy Gapon 705e6b8170 gfs_lookup_dot() does not have to acquire any locks
In fact, that was dangerous.  For example, zfsctl_snapshot_reclaim()
calls gfs_dir_lookup() on ".." path and that ends up calling
gfs_lookup_dot() which violated locking order by acquiring the parent's
directory vnode lock after the child's vnode lock.

Also, the previous behavior was inconsistent as gfs_dir_lookup()
returned a locked vnode for . and .. lookups, but not for any other.

Now gfs_lookup_dot() just references a resulting vnode and the locking
is done in its consumers, where necessary.
Note that we do not enable shared locking support for any gfs / zfsctl
vnodes.

This commit partially reverts r273641.

MFC after:	5 weeks
2016-05-16 15:13:16 +00:00
..
boot/zfs Include arpa/inet.h to get the htonl(3) definition 2016-05-13 11:15:33 +00:00
compat/opensolaris fix a vnode reference leak caused by illumos compat traverse() 2016-05-16 12:15:19 +00:00
contrib/opensolaris gfs_lookup_dot() does not have to acquire any locks 2016-05-16 15:13:16 +00:00
dev Add an EARLY_AP_STARTUP option to start APs earlier during boot. 2016-05-14 18:22:52 +00:00