Introduce a global vnode_mtx and use it to make vn_lock() safe to be called
authorclaudio <claudio@openbsd.org>
Wed, 28 Apr 2021 09:53:53 +0000 (09:53 +0000)
committerclaudio <claudio@openbsd.org>
Wed, 28 Apr 2021 09:53:53 +0000 (09:53 +0000)
commit9d6122f62b6ed32d6c956e1d5269114b2f24ea14
tree04bf5b5afb0baa83ad9908c898980019ff677f7c
parent304bcc79f4833ddf714bd65736b39d9edbec0b77
Introduce a global vnode_mtx and use it to make vn_lock() safe to be called
without the KERNEL_LOCK.
This moves VXLOCK and VXWANT to a mutex protected v_lflag field and also
v_lockcount is protected by this mutex.

The vn_lock() dance is overly complex and all of this should probably replaced
by a proper lock on the vnode but such a diff is a lot more complex. This
is an intermediate step so that at least some calls can be modified to grab
the KERNEL_LOCK later or not at all.

OK mpi@
sys/kern/spec_vnops.c
sys/kern/vfs_default.c
sys/kern/vfs_subr.c
sys/kern/vfs_vnops.c
sys/kern/vfs_vops.c
sys/miscfs/deadfs/dead_vnops.c
sys/sys/vnode.h
sys/ufs/ffs/ffs_softdep.c