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