Optimize zfsd for the happy case

If there are no damaged pools, then ignore all GEOM events.  We only use
them to fix damaged pools.  However, still pay attention to ZFS events.

MFC after:	20 days
X-MFC-With:	329284
Sponsored by:	Spectra Logic Corp
This commit is contained in:
asomers 2018-02-15 21:30:30 +00:00
parent e21f157f4d
commit 73fb4f4347
3 changed files with 21 additions and 2 deletions

View File

@ -186,6 +186,12 @@ CaseFile::DeSerialize()
free(caseFiles);
}
bool
CaseFile::Empty()
{
return (s_activeCases.empty());
}
void
CaseFile::LogAll()
{

View File

@ -134,6 +134,11 @@ class CaseFile
*/
static void DeSerialize();
/**
* \brief returns true if there are no CaseFiles
*/
static bool Empty();
/**
* \brief Emit syslog data on all active CaseFile%%s in the system.
*/

View File

@ -98,8 +98,16 @@ bool
GeomEvent::Process() const
{
/*
* We are only concerned with create arrivals and physical path changes,
* because those can be used to satisfy online and autoreplace operations
* We only use GEOM events to repair damaged pools. So return early if
* there are no damaged pools
*/
if (CaseFile::Empty())
return (false);
/*
* We are only concerned with arrivals and physical path changes,
* because those can be used to satisfy online and autoreplace
* operations
*/
if (Value("type") != "GEOM::physpath" && Value("type") != "CREATE")
return (false);