74b1de
From 416dfc70ef87400e1ddfd70e5b6e512d330b54a6 Mon Sep 17 00:00:00 2001
74b1de
From: Sheetal Pamecha <sheetal.pamecha08@gmail.com>
74b1de
Date: Tue, 2 Apr 2019 23:25:11 +0530
74b1de
Subject: [PATCH 43/52] inode: don't dump the whole table to CLI
74b1de
74b1de
dumping the whole inode table detail to screen doesn't solve any
74b1de
purpose. We should be getting only toplevel details on CLI, and
74b1de
then if one wants to debug further, then they need to get to
74b1de
'statedump' to get full details.
74b1de
74b1de
Patch on upstream master: https://review.gluster.org/#/c/glusterfs/+/22347/
74b1de
74b1de
BUG: 1578703
74b1de
Change-Id: Ie7e7f5a67c1606e3c18ce21ee6df6c7e4550c211
74b1de
Signed-off-by: Sheetal Pamecha <spamecha@redhat.com>
74b1de
Reviewed-on: https://code.engineering.redhat.com/gerrit/166768
74b1de
Tested-by: RHGS Build Bot <nigelb@redhat.com>
74b1de
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
74b1de
---
74b1de
 cli/src/cli-rpc-ops.c    | 23 ++++++++++++++++++++++-
74b1de
 libglusterfs/src/inode.c | 13 +++++++++++++
74b1de
 2 files changed, 35 insertions(+), 1 deletion(-)
74b1de
74b1de
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
74b1de
index 78043cd..12e7fcc 100644
74b1de
--- a/cli/src/cli-rpc-ops.c
74b1de
+++ b/cli/src/cli-rpc-ops.c
74b1de
@@ -7606,15 +7606,24 @@ cli_print_volume_status_itables(dict_t *dict, char *prefix)
74b1de
     uint32_t active_size = 0;
74b1de
     uint32_t lru_size = 0;
74b1de
     uint32_t purge_size = 0;
74b1de
+    uint32_t lru_limit = 0;
74b1de
     int i = 0;
74b1de
 
74b1de
     GF_ASSERT(dict);
74b1de
     GF_ASSERT(prefix);
74b1de
 
74b1de
+    snprintf(key, sizeof(key), "%s.lru_limit", prefix);
74b1de
+    ret = dict_get_uint32(dict, key, &lru_limit);
74b1de
+    if (ret)
74b1de
+        goto out;
74b1de
+    cli_out("LRU limit     : %u", lru_limit);
74b1de
+
74b1de
     snprintf(key, sizeof(key), "%s.active_size", prefix);
74b1de
     ret = dict_get_uint32(dict, key, &active_size);
74b1de
     if (ret)
74b1de
         goto out;
74b1de
+
74b1de
+#ifdef DEBUG
74b1de
     if (active_size != 0) {
74b1de
         cli_out("Active inodes:");
74b1de
         cli_out("%-40s %14s %14s %9s", "GFID", "Lookups", "Ref", "IA type");
74b1de
@@ -7626,10 +7635,16 @@ cli_print_volume_status_itables(dict_t *dict, char *prefix)
74b1de
     }
74b1de
     cli_out(" ");
74b1de
 
74b1de
+#else
74b1de
+    cli_out("Active Inodes : %u", active_size);
74b1de
+
74b1de
+#endif
74b1de
     snprintf(key, sizeof(key), "%s.lru_size", prefix);
74b1de
     ret = dict_get_uint32(dict, key, &lru_size);
74b1de
     if (ret)
74b1de
         goto out;
74b1de
+
74b1de
+#ifdef DEBUG
74b1de
     if (lru_size != 0) {
74b1de
         cli_out("LRU inodes:");
74b1de
         cli_out("%-40s %14s %14s %9s", "GFID", "Lookups", "Ref", "IA type");
74b1de
@@ -7640,11 +7655,15 @@ cli_print_volume_status_itables(dict_t *dict, char *prefix)
74b1de
         cli_print_volume_status_inode_entry(dict, key);
74b1de
     }
74b1de
     cli_out(" ");
74b1de
+#else
74b1de
+    cli_out("LRU Inodes    : %u", lru_size);
74b1de
+#endif
74b1de
 
74b1de
     snprintf(key, sizeof(key), "%s.purge_size", prefix);
74b1de
     ret = dict_get_uint32(dict, key, &purge_size);
74b1de
     if (ret)
74b1de
         goto out;
74b1de
+#ifdef DEBUG
74b1de
     if (purge_size != 0) {
74b1de
         cli_out("Purged inodes:");
74b1de
         cli_out("%-40s %14s %14s %9s", "GFID", "Lookups", "Ref", "IA type");
74b1de
@@ -7654,7 +7673,9 @@ cli_print_volume_status_itables(dict_t *dict, char *prefix)
74b1de
         snprintf(key, sizeof(key), "%s.purge%d", prefix, i);
74b1de
         cli_print_volume_status_inode_entry(dict, key);
74b1de
     }
74b1de
-
74b1de
+#else
74b1de
+    cli_out("Purge Inodes  : %u", purge_size);
74b1de
+#endif
74b1de
 out:
74b1de
     return;
74b1de
 }
74b1de
diff --git a/libglusterfs/src/inode.c b/libglusterfs/src/inode.c
74b1de
index 87f74e0..96ddea5 100644
74b1de
--- a/libglusterfs/src/inode.c
74b1de
+++ b/libglusterfs/src/inode.c
74b1de
@@ -2598,6 +2598,11 @@ inode_table_dump_to_dict(inode_table_t *itable, char *prefix, dict_t *dict)
74b1de
     if (ret)
74b1de
         return;
74b1de
 
74b1de
+    snprintf(key, sizeof(key), "%s.itable.lru_limit", prefix);
74b1de
+    ret = dict_set_uint32(dict, key, itable->lru_limit);
74b1de
+    if (ret)
74b1de
+        goto out;
74b1de
+
74b1de
     snprintf(key, sizeof(key), "%s.itable.active_size", prefix);
74b1de
     ret = dict_set_uint32(dict, key, itable->active_size);
74b1de
     if (ret)
74b1de
@@ -2613,6 +2618,13 @@ inode_table_dump_to_dict(inode_table_t *itable, char *prefix, dict_t *dict)
74b1de
     if (ret)
74b1de
         goto out;
74b1de
 
74b1de
+#ifdef DEBUG
74b1de
+    /* Dumping inode details in dictionary and sending it to CLI is not
74b1de
+       required as when a developer (or support team) asks for this command
74b1de
+       output, they just want to get top level detail of inode table.
74b1de
+       If one wants to debug, let them take statedump and debug, this
74b1de
+       wouldn't be available in CLI during production setup.
74b1de
+    */
74b1de
     list_for_each_entry(inode, &itable->active, list)
74b1de
     {
74b1de
         snprintf(key, sizeof(key), "%s.itable.active%d", prefix, count++);
74b1de
@@ -2632,6 +2644,7 @@ inode_table_dump_to_dict(inode_table_t *itable, char *prefix, dict_t *dict)
74b1de
         snprintf(key, sizeof(key), "%s.itable.purge%d", prefix, count++);
74b1de
         inode_dump_to_dict(inode, key, dict);
74b1de
     }
74b1de
+#endif
74b1de
 
74b1de
 out:
74b1de
     pthread_mutex_unlock(&itable->lock);
74b1de
-- 
74b1de
1.8.3.1
74b1de