Refactor openzfs_sysctl_init() and ZfsArcMeter...

openzfs_sysctl_init() now returns void instead of int.
The ZfsArcStats->enabled flag is set inside the init function
now, instead of having to be set from its return value.
Preparation for more flag setting in Compressed ARC commit.

ZfsArcMeter_readStats() added and all Meter->values[] setting
moved to it, eliminating duplicated code in
{darwin,freebsd,linux,solaris}/Platform.c.
This commit is contained in:
Ross Williams
2019-09-03 18:21:33 +00:00
parent ff6914e4ad
commit e450b58636
10 changed files with 34 additions and 56 deletions

View File

@ -151,7 +151,7 @@ ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidWhiteList, ui
ProcessList_getVMStats(&this->vm_stats);
/* Initialize the ZFS kstats, if zfs.kext loaded */
this->zfs.enabled = openzfs_sysctl_init();
openzfs_sysctl_init(&this->zfs);
openzfs_sysctl_updateArcStats(&this->zfs);
this->super.kernelThreads = 0;

View File

@ -246,18 +246,7 @@ void Platform_setSwapValues(Meter* mtr) {
void Platform_setZfsArcValues(Meter* this) {
DarwinProcessList* dpl = (DarwinProcessList*) this->pl;
this->total = dpl->zfs.max;
this->values[0] = dpl->zfs.MFU;
this->values[1] = dpl->zfs.MRU;
this->values[2] = dpl->zfs.anon;
this->values[3] = dpl->zfs.header;
this->values[4] = dpl->zfs.other;
// "Hide" the last value so it can
// only be accessed by index and is not
// displayed by the Bar or Graph style
Meter_setItems(this, 5);
this->values[5] = dpl->zfs.size;
ZfsArcMeter_readStats(this, &(dpl->zfs));
}
char* Platform_getProcessEnv(pid_t pid) {