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