From 14c4cc4ba0cc717a09b0d9a8390787c5c726e63f Mon Sep 17 00:00:00 2001 From: Bill Wilson Date: Wed, 15 Jul 2015 18:20:10 -0500 Subject: [PATCH] Make fs_update() handle large disks. Use gint64 to handle large block sizes for huge multi terabyte disks. --- src/fs.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/fs.c b/src/fs.c index 897d057..626bc74 100644 --- a/src/fs.c +++ b/src/fs.c @@ -724,7 +724,7 @@ fs_update(void) GkrellmPanel *p; GkrellmKrell *k; GList *list; - glong used, avail; + gint64 used, avail; gint full_scale, index, w_scroll, w; gboolean fs_check, nfs_check, force_check, force_draw, mounting_enabled; @@ -807,13 +807,20 @@ fs_update(void) gth = g_thread_new("get_fsusage", get_fsusage_thread, fs); g_thread_unref(gth); } - fs->krell_factor = fs->blocks > 2097152 ? 1024 : 1; + if (fs->blocks > 2147483648LL) + fs->krell_factor = 1024 * 1024; + else if (fs->blocks > 2097152LL) + fs->krell_factor = 1024 * 1024; + else + fs->krell_factor = 1; } avail = fs->bavail >= 0 ? fs->bavail : 0; used = fs->blocks - fs->bfree; - full_scale = (gint) (used + avail) / fs->krell_factor; - used /= fs->krell_factor; + + full_scale = (gint) ((used + avail) / (gint64) fs->krell_factor); + used = used / (gint64) fs->krell_factor; + gkrellm_set_krell_full_scale(k, full_scale, 1); if (!fs->busy) @@ -823,7 +830,7 @@ fs_update(void) ) gkrellm_update_krell(p, k, 0); else - gkrellm_update_krell(p, k, used); + gkrellm_update_krell(p, k, (gulong) used); if (full_scale > 0) gkrellm_check_alert(fs->alert, 100.0 * (gfloat) used / (gfloat) full_scale);