]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
zfsd should be able to online an L2ARC that disappears and returns
authorAlan Somers <asomers@FreeBSD.org>
Thu, 26 Oct 2017 15:28:18 +0000 (15:28 +0000)
committerAlan Somers <asomers@FreeBSD.org>
Thu, 26 Oct 2017 15:28:18 +0000 (15:28 +0000)
commit12a88a3d637e7e7a3726e8dedbcf82cb96cea529
tree60d86f54828d5cac293e9367b68fcd7eb77806cf
parent79b67c8d4a6c421a42edfd087b3ee84856e7e118
zfsd should be able to online an L2ARC that disappears and returns

Previously, this didn't work because L2ARC devices' labels don't contain
pool GUIDs.  Modify zfsd so that the pool GUID won't be required:

lib/libdevdctl/guid.h
Change INVALID_GUID from a uint64_t constant to a function that
returns an invalid Guid object.  Remove the void constructor.
Nothing uses it, and it violates RAII.

cddl/usr.sbin/zfsd/case_file.h
cddl/usr.sbin/zfsd/case_file.cc
Allow CaseFile::Find to match a CaseFile based on Vdev GUID alone.
In CaseFile::ReEvaluate, attempt to online devices even if the newly
arrived device has no pool GUID.

cddl/usr.sbin/zfsd/vdev_iterator.cc
Iterate through a pool's cache devices as well as its regular
devices.

Reported by: avg
Reviewed by: avg
MFC after: 3 weeks
Sponsored by: Spectra Logic Corp
Differential Revision: https://reviews.freebsd.org/D12791
cddl/usr.sbin/zfsd/case_file.cc
cddl/usr.sbin/zfsd/case_file.h
cddl/usr.sbin/zfsd/vdev_iterator.cc
lib/libdevdctl/guid.h