Add zfsd, which deals with hard drive faults in ZFS pools. It manages
hotspares and replements in drive slots that publish physical paths.
cddl/usr.sbin/zfsd
Add zfsd(8) and its unit tests
cddl/usr.sbin/Makefile
Add zfsd to the build
lib/libdevdctl
A C++ library that helps devd clients process events
lib/Makefile
share/mk/bsd.libnames.mk
share/mk/src.libnames.mk
Add libdevdctl to the build. It's a private library, unusable by
out-of-tree software.
etc/defaults/rc.conf
By default, set zfsd_enable to NO
etc/mtree/BSD.include.dist
Add a directory for libdevdctl's include files
etc/mtree/BSD.tests.dist
Add a directory for zfsd's unit tests
etc/mtree/BSD.var.dist
Add /var/db/zfsd/cases, where zfsd stores case files while it's shut
down.
etc/rc.d/Makefile
etc/rc.d/zfsd
Add zfsd's rc script
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
Fix the resource.fs.zfs.statechange message. It had a number of
problems:
- It was only being emitted on a transition to the HEALTHY state.
That made it impossible for zfsd to take actions based on drives getting sicker.
- It compared the new state to vdev_prevstate, which is the state
that the vdev had the last time it was opened. That doesn't make sense, because a vdev can change state multiple times without being reopened.
- vdev_set_state contains logic that will change the device's new
state based on various conditions. However, the statechange event was being posted _before_ that logic took effect. Now it's being posted after.
sys/fs/devfs/devfs_vnops.c
Correct the rendering of device aliases that reside in
subdirectories of a devfs.
In devfs_readlink(), convert the devfs root relative path of an
alias's parent, that is recorded in the alias, into a fully
qualified path that includes the root of the containing devfs. This
avoids the ugliness of generating a relative path by prepending
"../"'s. For a non-jailed process, the "symlink root" is the
devfs's mount point. For a jailed process, we must remove any jail
prefix in the mount point so that our response matches the user
process's world view.