Nullfs: tolerate relocking of the lower vnode. We need to acquire additional hold reference on the lower vnode, otherwise is lower is relocked and upper is reclaimed, the only reference to lower is invalidated and lowervp is potentially dandling pointer.
Nullfs: provide custom bypass methods for several VOPs which take unlocked vnode. Default bypass cannot handle reclamation. Relevant for VOP_ADVLOCK, VOP_RENAME at least.
Nullfs: re-lock dvp in null_lookup() always, not only on success. Lower lookup might have relocked lowerdvp, which makes upper vp loosing its lock.
Nullfs: style fixes
Fifofs: handle race with relocking in open. It is possible that open relocks fifofs vnode after instantiation but before VOP_OPEN() is called. In this case reclaim/fifo_close() would legitimately see NULL v_fifoinfo.
Reported and tested by: pho
Per commit view is avaiable at https://kib.kiev.ua/git/gitweb.cgi?p=deviant3.git;a=shortlog;h=refs/heads/nullfs