]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
zfsd(8), the ZFS fault management daemon
authorasomers <asomers@FreeBSD.org>
Sat, 28 May 2016 17:43:40 +0000 (17:43 +0000)
committerasomers <asomers@FreeBSD.org>
Sat, 28 May 2016 17:43:40 +0000 (17:43 +0000)
commit442baa51845cf38dbcfdc44bd8493defdaad630a
treeb276df22690bfddec70e75c8b9f2f7c8df80cbc6
parentda1a7cbaba7d56d77911e9c80b3f82d515ef5e78
zfsd(8), the ZFS fault management daemon

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.

Submitted by: gibbs, asomers, mav, allanjude
Reviewed by: mav, delphij
Relnotes: yes
Sponsored by: Spectra Logic Corp, iX Systems
Differential Revision: https://reviews.freebsd.org/D6564
49 files changed:
cddl/usr.sbin/Makefile
cddl/usr.sbin/zfsd/Makefile [new file with mode: 0644]
cddl/usr.sbin/zfsd/Makefile.common [new file with mode: 0644]
cddl/usr.sbin/zfsd/callout.cc [new file with mode: 0644]
cddl/usr.sbin/zfsd/callout.h [new file with mode: 0644]
cddl/usr.sbin/zfsd/case_file.cc [new file with mode: 0644]
cddl/usr.sbin/zfsd/case_file.h [new file with mode: 0644]
cddl/usr.sbin/zfsd/tests/Makefile [new file with mode: 0644]
cddl/usr.sbin/zfsd/tests/libmocks.c [new file with mode: 0644]
cddl/usr.sbin/zfsd/tests/libmocks.h [new file with mode: 0644]
cddl/usr.sbin/zfsd/tests/zfsd_unittest.cc [new file with mode: 0644]
cddl/usr.sbin/zfsd/tests/zfsd_unittest.supp [new file with mode: 0644]
cddl/usr.sbin/zfsd/vdev.cc [new file with mode: 0644]
cddl/usr.sbin/zfsd/vdev.h [new file with mode: 0644]
cddl/usr.sbin/zfsd/vdev_iterator.cc [new file with mode: 0644]
cddl/usr.sbin/zfsd/vdev_iterator.h [new file with mode: 0644]
cddl/usr.sbin/zfsd/zfsd.8 [new file with mode: 0644]
cddl/usr.sbin/zfsd/zfsd.cc [new file with mode: 0644]
cddl/usr.sbin/zfsd/zfsd.h [new file with mode: 0644]
cddl/usr.sbin/zfsd/zfsd_event.cc [new file with mode: 0644]
cddl/usr.sbin/zfsd/zfsd_event.h [new file with mode: 0644]
cddl/usr.sbin/zfsd/zfsd_exception.cc [new file with mode: 0644]
cddl/usr.sbin/zfsd/zfsd_exception.h [new file with mode: 0644]
cddl/usr.sbin/zfsd/zfsd_main.cc [new file with mode: 0644]
cddl/usr.sbin/zfsd/zpool_list.cc [new file with mode: 0644]
cddl/usr.sbin/zfsd/zpool_list.h [new file with mode: 0644]
etc/defaults/rc.conf
etc/mtree/BSD.include.dist
etc/mtree/BSD.tests.dist
etc/mtree/BSD.var.dist
etc/rc.d/Makefile
etc/rc.d/zfsd [new file with mode: 0644]
lib/Makefile
lib/libdevdctl/Makefile [new file with mode: 0644]
lib/libdevdctl/consumer.cc [new file with mode: 0644]
lib/libdevdctl/consumer.h [new file with mode: 0644]
lib/libdevdctl/event.cc [new file with mode: 0644]
lib/libdevdctl/event.h [new file with mode: 0644]
lib/libdevdctl/event_factory.cc [new file with mode: 0644]
lib/libdevdctl/event_factory.h [new file with mode: 0644]
lib/libdevdctl/exception.cc [new file with mode: 0644]
lib/libdevdctl/exception.h [new file with mode: 0644]
lib/libdevdctl/guid.cc [new file with mode: 0644]
lib/libdevdctl/guid.h [new file with mode: 0644]
lib/libdevdctl/tests/Makefile [new file with mode: 0644]
lib/libdevdctl/tests/libdevdctl_unittest.cc [new file with mode: 0644]
share/mk/bsd.libnames.mk
share/mk/src.libnames.mk
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c