summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
Diffstat (limited to 'xlators')
-rw-r--r--xlators/performance/io-cache/src/ioc-inode.c13
-rw-r--r--xlators/performance/stat-prefetch/src/stat-prefetch.c7
2 files changed, 14 insertions, 6 deletions
diff --git a/xlators/performance/io-cache/src/ioc-inode.c b/xlators/performance/io-cache/src/ioc-inode.c
index 356afc583b9..e647b318342 100644
--- a/xlators/performance/io-cache/src/ioc-inode.c
+++ b/xlators/performance/io-cache/src/ioc-inode.c
@@ -166,18 +166,23 @@ ioc_inode_wakeup (call_frame_t *frame, ioc_inode_t *ioc_inode,
ioc_inode_t *
ioc_inode_update (ioc_table_t *table, inode_t *inode, uint32_t weight)
{
- ioc_inode_t *ioc_inode = NULL;
-
+ ioc_inode_t *ioc_inode = NULL;
+ unsigned long no_of_pages = 0;
+
ioc_inode = CALLOC (1, sizeof (ioc_inode_t));
if (ioc_inode == NULL) {
goto out;
}
ioc_inode->table = table;
-
+
+ no_of_pages = (table->cache_size / table->page_size)
+ + ((table->cache_size % table->page_size) ? 1 : 0);
+
/* initialize the list for pages */
ioc_inode->cache.page_table = rbthash_table_init (IOC_PAGE_TABLE_BUCKET_COUNT,
- ioc_hashfn, NULL);
+ ioc_hashfn, NULL,
+ no_of_pages);
if (ioc_inode->cache.page_table == NULL) {
FREE (ioc_inode);
ioc_inode = NULL;
diff --git a/xlators/performance/stat-prefetch/src/stat-prefetch.c b/xlators/performance/stat-prefetch/src/stat-prefetch.c
index fe81b3e0848..d6e8bad1e1e 100644
--- a/xlators/performance/stat-prefetch/src/stat-prefetch.c
+++ b/xlators/performance/stat-prefetch/src/stat-prefetch.c
@@ -20,6 +20,7 @@
#include "stat-prefetch.h"
#define GF_SP_CACHE_BUCKETS 4096
+#define GF_SP_CACHE_ENTRIES_EXPECTED 1048576
int32_t
sp_process_inode_ctx (call_frame_t *frame, xlator_t *this, loc_t *loc,
@@ -129,7 +130,8 @@ sp_cache_init (void)
if (cache) {
cache->table = rbthash_table_init (GF_SP_CACHE_BUCKETS,
sp_hashfn,
- free);
+ free,
+ GF_SP_CACHE_ENTRIES_EXPECTED);
if (cache->table == NULL) {
FREE (cache);
cache = NULL;
@@ -170,7 +172,8 @@ sp_cache_remove_entry (sp_cache_t *cache, char *name, char remove_all)
table = cache->table;
cache->table = rbthash_table_init (GF_SP_CACHE_BUCKETS,
sp_hashfn,
- free);
+ free,
+ GF_SP_CACHE_ENTRIES_EXPECTED);
if (cache->table == NULL) {
cache->table = table;
} else {