diff options
-rw-r--r-- | libglusterfs/src/mem-pool.c | 4 | ||||
-rw-r--r-- | libglusterfs/src/statedump.c | 2 | ||||
-rwxr-xr-x | tests/bugs/core/bug-834465.t | 7 |
3 files changed, 11 insertions, 2 deletions
diff --git a/libglusterfs/src/mem-pool.c b/libglusterfs/src/mem-pool.c index 9533a733959..93a1415a75a 100644 --- a/libglusterfs/src/mem-pool.c +++ b/libglusterfs/src/mem-pool.c @@ -318,6 +318,10 @@ __gf_free (void *free_ptr) { mem_acct->rec[header->type].size -= header->size; mem_acct->rec[header->type].num_allocs--; + /* If all the instances are freed up then ensure typestr is set + * to NULL */ + if (!mem_acct->rec[header->type].num_allocs) + mem_acct->rec[header->type].typestr = NULL; } UNLOCK (&mem_acct->rec[header->type].lock); diff --git a/libglusterfs/src/statedump.c b/libglusterfs/src/statedump.c index d4e7dbb3836..a292857fd10 100644 --- a/libglusterfs/src/statedump.c +++ b/libglusterfs/src/statedump.c @@ -234,7 +234,7 @@ gf_proc_dump_xlator_mem_info (xlator_t *xl) gf_proc_dump_write ("num_types", "%d", xl->mem_acct->num_types); for (i = 0; i < xl->mem_acct->num_types; i++) { - if (xl->mem_acct->rec[i].total_allocs == 0) + if (xl->mem_acct->rec[i].num_allocs == 0) continue; gf_proc_dump_add_section ("%s.%s - usage-type %s memusage", diff --git a/tests/bugs/core/bug-834465.t b/tests/bugs/core/bug-834465.t index e21e95393a6..996248d4116 100755 --- a/tests/bugs/core/bug-834465.t +++ b/tests/bugs/core/bug-834465.t @@ -33,8 +33,13 @@ build_tester $(dirname $0)/bug-834465.c TEST $(dirname $0)/bug-834465 $M0/testfile sdump2=$(generate_mount_statedump $V0); +nalloc2=0 +grep -A3 "fuse - usage-type gf_common_mt_fd_lk_ctx_node_t" $sdump2 +if [ $? -eq '0' ] +then + nalloc2=`grep -A3 "fuse - usage-type gf_common_mt_fd_lk_ctx_node_t" $sdump2 | grep -E "^num_allocs" | cut -d '=' -f2` +fi -nalloc2=`grep -A3 "fuse - usage-type gf_common_mt_fd_lk_ctx_node_t" $sdump2 | grep -E "^num_allocs" | cut -d '=' -f2` TEST [ $nalloc1 -eq $nalloc2 ]; TEST rm -rf $MOUNTDIR/* |