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);
}
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 *
disks_get(void)
{
@ -170,6 +196,7 @@ disks_get(void)
list = eina_list_sort(list, eina_list_count(list), _cmp_cb);
return list;
#elif defined(__OpenBSD__) || defined(__NetBSD__)
static const int mib[] = { CTL_HW, HW_DISKNAMES };
static const unsigned int miblen = 2;

View File

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

View File

@ -493,10 +493,10 @@ _memory_usage_get(meminfo_t *memory)
fclose(f);
#elif defined(__FreeBSD__) || defined(__DragonFly__)
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;
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);
if (sysctl(mib, 2, &memory->total, &len, NULL, 0) == -1)
@ -530,6 +530,11 @@ _memory_usage_get(meminfo_t *memory)
miblen = 3;
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;
/* previous mib is important for this one... */

View File

@ -20,6 +20,8 @@ typedef struct
unsigned long shared;
unsigned long swap_total;
unsigned long swap_used;
unsigned long zfs_arc_used;
} meminfo_t;
#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);
if (ui->zfs_mounted)
sysinfo->memory.used += sysinfo->memory.zfs_arc_used;
progress = ui->progress_mem;
ratio = sysinfo->memory.total / 100.0;
value = sysinfo->memory.used / ratio;
@ -1679,6 +1682,8 @@ _ui_init(Evas_Object *parent)
ui->cpu_times = NULL;
ui->cpu_list = NULL;
ui->zfs_mounted = disk_zfs_mounted_get();
_ui = NULL;
_evisum_config = NULL;

View File

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

View File

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

View File

@ -2,6 +2,7 @@
#define __UI_DISK_H__
#include "ui.h"
#include "system/disks.h"
void
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)
return;
if (ui->zfs_mounted)
sysinfo->memory.used += sysinfo->memory.zfs_arc_used;
progress = ui->progress_mem_used;
ratio = sysinfo->memory.total / 100.0;
value = sysinfo->memory.used / ratio;