From 9e756f149a2c06dfcd37505b4fd35b6b64f77ab8 Mon Sep 17 00:00:00 2001
From: rbuj <robert.buj@gmail.com>
Date: Sun, 15 Nov 2020 17:01:23 +0100
Subject: [PATCH] sysinfo: avoid adding a device more than once such as for
 brtfs

---
 src/sysinfo.cpp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/sysinfo.cpp b/src/sysinfo.cpp
index 4ef988e..0db9cc8 100644
--- a/src/sysinfo.cpp
+++ b/src/sysinfo.cpp
@@ -271,11 +271,12 @@ namespace {
 
         void load_disk_info()
         {
+            GHashTable *devices;
             glibtop_mountentry *entries;
             glibtop_mountlist mountlist;
 
             entries = glibtop_get_mountlist(&mountlist, 0);
-
+            devices = g_hash_table_new(g_str_hash, g_str_equal);
             this->free_space_bytes = 0;
 
             for (guint i = 0; i != mountlist.number; ++i) {
@@ -294,11 +295,18 @@ namespace {
                 if (string(entries[i].mountdir).find("/media/") == 0)
                     continue;
 
+                /* avoid adding a device more than once such as for btrfs filesystem */
+                if (g_hash_table_contains (devices, entries[i].devname))
+                    continue;
+                else
+                    g_hash_table_insert (devices, entries[i].devname, entries[i].mountdir);
+
                 glibtop_fsusage usage;
                 glibtop_get_fsusage(&usage, entries[i].mountdir);
                 this->free_space_bytes += usage.bavail * usage.block_size;
             }
 
+            g_hash_table_destroy (devices);
             g_free(entries);
         }
 
-- 
2.27.0

