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.
137 lines
4.6 KiB
137 lines
4.6 KiB
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 |
|
|
|
|