the vnode operations vector for active vnodes is unsafe because it
is not known whether deadfs or the original file system will be
called.
- Pass down LK_RETRY to the lock operation (hint for deadfs only).
- Change deadfs lock operation to return ENOENT if LK_RETRY is unset.
- Change all other lock operations to check for dead vnode once
the vnode is locked and unlock and return ENOENT in this case.
With these changes in place vnode lock operations will never succeed
after vclean() has marked the vnode as VI_XLOCK and before vclean()
has changed the operations vector.
Adresses PR kern/37706 (Forced unmount of file systems is unsafe)
Discussed on tech-kern.
Welcome to 6.99.33
on startup
- create share/examples/wpa_supplicant/wpa_supplicant.conf and make it
known in the relevant places. Improvements welcome, my point was
ctrl_interface and "you seriously want this"
it to trigger in 1/4 of the builds with -j 40 on a 24 processor box. Typical
error is:
ln: machine/include: File exists
*** Failed target: .BEGIN
*** Failed command: rm -f machine && ln -s /p/netbsd/cvsroot/src/sys/arch/vax/include machine
*** Error code 1
Stop.
Another approach to fixing this is to create a lockfile or adding other flags
to ln to change its behavior.
bsd.sys.mk and bsd.own.mk
- Add protection requiring that:
1. bsd.sys.mk is not include from other Makefiles directly
2. bsd.own.mk must be included before bsd.sys.mk since it
sets variables that bsd.sys.mk uses as conditionals.
This is step 1 of removing all variable settings from bsd.sys.mk and
leaving behind only rules. This way, the structure of a standard Makefile
is:
variable overrides
optionally include bsd.own.mk
optionally include bsd.endian.mk
variable settings that use variables defined in bsd.own.mk
include a one or more rule .mk files (such as bsd.prog.mk etc)
This file is only intended to be included from the other rules files like
bsd.lib.mk or bsd.prog.mk. If you need things to be defined early, use
bsd.own.mk.