freebsd: include zfs abomination if in use.

This commit is contained in:
Alastair Poole 2020-06-07 12:57:27 +01:00
parent 4dc7109ce9
commit 702f650603
9 changed files with 56 additions and 2 deletions

View File

@ -121,6 +121,32 @@ _cmp_cb(const void *p1, const void *p2)
return strcmp(s1, s2); return strcmp(s1, s2);
} }
Eina_Bool
disk_zfs_mounted_get(void)
{
Eina_List *disks;
char *path;
Eina_Bool zfs_mounted = EINA_FALSE;
disks = disks_get();
EINA_LIST_FREE(disks, path)
{
File_System *fs = disk_mount_file_system_get(path);
if (fs)
{
if (fs->type == 0x2FC12FC1)
zfs_mounted = EINA_TRUE;
disk_mount_file_system_free(fs);
}
free(path);
}
if (disks)
eina_list_free(disks);
return zfs_mounted;
}
Eina_List * Eina_List *
disks_get(void) disks_get(void)
{ {
@ -170,6 +196,7 @@ disks_get(void)
list = eina_list_sort(list, eina_list_count(list), _cmp_cb); list = eina_list_sort(list, eina_list_count(list), _cmp_cb);
return list; return list;
#elif defined(__OpenBSD__) || defined(__NetBSD__) #elif defined(__OpenBSD__) || defined(__NetBSD__)
static const int mib[] = { CTL_HW, HW_DISKNAMES }; static const int mib[] = { CTL_HW, HW_DISKNAMES };
static const unsigned int miblen = 2; static const unsigned int miblen = 2;

View File

@ -16,6 +16,9 @@ typedef struct _File_System {
Disk_Usage usage; Disk_Usage usage;
} File_System; } File_System;
Eina_Bool
disk_zfs_mounted_get(void);
File_System * File_System *
disk_mount_file_system_get(const char *path); disk_mount_file_system_get(const char *path);

View File

@ -493,10 +493,10 @@ _memory_usage_get(meminfo_t *memory)
fclose(f); fclose(f);
#elif defined(__FreeBSD__) || defined(__DragonFly__) #elif defined(__FreeBSD__) || defined(__DragonFly__)
unsigned int free = 0, active = 0, inactive = 0, wired = 0; unsigned int free = 0, active = 0, inactive = 0, wired = 0;
unsigned int cached = 0, buffered = 0; unsigned int cached = 0, buffered = 0, zfs_arc = 0;
long int result = 0; long int result = 0;
int page_size = getpagesize(); int page_size = getpagesize();
int mib[4] = { CTL_HW, HW_PHYSMEM, 0, 0 }; int mib[5] = { CTL_HW, HW_PHYSMEM, 0, 0, 0 };
len = sizeof(memory->total); len = sizeof(memory->total);
if (sysctl(mib, 2, &memory->total, &len, NULL, 0) == -1) if (sysctl(mib, 2, &memory->total, &len, NULL, 0) == -1)
@ -530,6 +530,11 @@ _memory_usage_get(meminfo_t *memory)
miblen = 3; miblen = 3;
if (sysctlnametomib("vm.swap_info", mib, &miblen) == -1) return; if (sysctlnametomib("vm.swap_info", mib, &miblen) == -1) return;
if ((zfs_arc = _sysctlfromname("kstat.zfs.misc.arcstats.c", mib, 5, &len)) != -1)
{
memory->zfs_arc_used = zfs_arc;
}
struct xswdev xsw; struct xswdev xsw;
/* previous mib is important for this one... */ /* previous mib is important for this one... */

View File

@ -20,6 +20,8 @@ typedef struct
unsigned long shared; unsigned long shared;
unsigned long swap_total; unsigned long swap_total;
unsigned long swap_used; unsigned long swap_used;
unsigned long zfs_arc_used;
} meminfo_t; } meminfo_t;
#define MAX_BATTERIES 10 #define MAX_BATTERIES 10

View File

@ -1628,6 +1628,9 @@ _sys_info_all_poll_feedback_cb(void *data, Ecore_Thread *thread, void *msg)
elm_progressbar_value_set(ui->progress_cpu, cpu_usage / 100); elm_progressbar_value_set(ui->progress_cpu, cpu_usage / 100);
if (ui->zfs_mounted)
sysinfo->memory.used += sysinfo->memory.zfs_arc_used;
progress = ui->progress_mem; progress = ui->progress_mem;
ratio = sysinfo->memory.total / 100.0; ratio = sysinfo->memory.total / 100.0;
value = sysinfo->memory.used / ratio; value = sysinfo->memory.used / ratio;
@ -1679,6 +1682,8 @@ _ui_init(Evas_Object *parent)
ui->cpu_times = NULL; ui->cpu_times = NULL;
ui->cpu_list = NULL; ui->cpu_list = NULL;
ui->zfs_mounted = disk_zfs_mounted_get();
_ui = NULL; _ui = NULL;
_evisum_config = NULL; _evisum_config = NULL;

View File

@ -107,6 +107,8 @@ typedef struct Ui
Eina_Bool sort_reverse; Eina_Bool sort_reverse;
Eina_Bool show_self; Eina_Bool show_self;
Eina_Bool zfs_mounted;
uint64_t incoming_max; uint64_t incoming_max;
uint64_t outgoing_max; uint64_t outgoing_max;
} Ui; } Ui;

View File

@ -91,6 +91,7 @@ ui_tab_disk_update(Ui *ui)
{ {
Eina_List *disks; Eina_List *disks;
char *path; char *path;
Eina_Bool zfs_mounted = EINA_FALSE;
if (!ui->disk_visible) if (!ui->disk_visible)
return; return;
@ -103,6 +104,9 @@ ui_tab_disk_update(Ui *ui)
File_System *fs = disk_mount_file_system_get(path); File_System *fs = disk_mount_file_system_get(path);
if (fs) if (fs)
{ {
if (fs->type == 0x2FC12FC1)
zfs_mounted = EINA_TRUE;
_ui_disk_add(ui, fs->path, fs->mount, fs->usage.total, fs->usage.used); _ui_disk_add(ui, fs->path, fs->mount, fs->usage.total, fs->usage.used);
disk_mount_file_system_free(fs); disk_mount_file_system_free(fs);
} }
@ -110,5 +114,7 @@ ui_tab_disk_update(Ui *ui)
} }
if (disks) if (disks)
eina_list_free(disks); eina_list_free(disks);
if (!zfs_mounted) ui->zfs_mounted = EINA_FALSE;
} }

View File

@ -2,6 +2,7 @@
#define __UI_DISK_H__ #define __UI_DISK_H__
#include "ui.h" #include "ui.h"
#include "system/disks.h"
void void
ui_tab_disk_add(Ui *ui); ui_tab_disk_add(Ui *ui);

View File

@ -136,6 +136,9 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo)
if (!ui->mem_visible) if (!ui->mem_visible)
return; return;
if (ui->zfs_mounted)
sysinfo->memory.used += sysinfo->memory.zfs_arc_used;
progress = ui->progress_mem_used; progress = ui->progress_mem_used;
ratio = sysinfo->memory.total / 100.0; ratio = sysinfo->memory.total / 100.0;
value = sysinfo->memory.used / ratio; value = sysinfo->memory.used / ratio;