diff options
Diffstat (limited to 'libglusterfs/src')
-rw-r--r-- | libglusterfs/src/inode.c | 21 | ||||
-rw-r--r-- | libglusterfs/src/inode.h | 6 | ||||
-rw-r--r-- | libglusterfs/src/xlator.c | 19 | ||||
-rw-r--r-- | libglusterfs/src/xlator.h | 3 |
4 files changed, 49 insertions, 0 deletions
diff --git a/libglusterfs/src/inode.c b/libglusterfs/src/inode.c index d4eade8ba88..373ba9beb39 100644 --- a/libglusterfs/src/inode.c +++ b/libglusterfs/src/inode.c @@ -1238,6 +1238,27 @@ inode_path (inode_t *inode, const char *name, char **bufp) return ret; } +void +__inode_table_set_lru_limit (inode_table_t *table, uint32_t lru_limit) +{ + table->lru_limit = lru_limit; + return; +} + + +void +inode_table_set_lru_limit (inode_table_t *table, uint32_t lru_limit) +{ + pthread_mutex_lock (&table->lock); + { + __inode_table_set_lru_limit (table, lru_limit); + } + pthread_mutex_unlock (&table->lock); + + inode_table_prune (table); + + return; +} static int inode_table_prune (inode_table_t *table) diff --git a/libglusterfs/src/inode.h b/libglusterfs/src/inode.h index 60adba68425..5d373fcaec9 100644 --- a/libglusterfs/src/inode.h +++ b/libglusterfs/src/inode.h @@ -251,4 +251,10 @@ inode_ctx_put(inode_t *inode, xlator_t *this, uint64_t v) gf_boolean_t __is_root_gfid (uuid_t gfid); +void +__inode_table_set_lru_limit (inode_table_t *table, uint32_t lru_limit); + +void +inode_table_set_lru_limit (inode_table_t *table, uint32_t lru_limit); + #endif /* _INODE_H */ diff --git a/libglusterfs/src/xlator.c b/libglusterfs/src/xlator.c index 4f8b8b21f95..7b873fcc79d 100644 --- a/libglusterfs/src/xlator.c +++ b/libglusterfs/src/xlator.c @@ -291,6 +291,25 @@ xlator_set_type (xlator_t *xl, const char *type) return ret; } +void +xlator_set_inode_lru_limit (xlator_t *this, void *data) +{ + int inode_lru_limit = 0; + + if (this->itable) { + if (!data) { + gf_log (this->name, GF_LOG_WARNING, "input data is " + "NULL. Cannot update the lru limit of the inode" + " table. Continuing with older value"); + goto out; + } + inode_lru_limit = *(int *)data; + inode_table_set_lru_limit (this->itable, inode_lru_limit); + } + +out: + return; +} void xlator_foreach (xlator_t *this, diff --git a/libglusterfs/src/xlator.h b/libglusterfs/src/xlator.h index 47ae6cdd6b6..0c4e820c2d3 100644 --- a/libglusterfs/src/xlator.h +++ b/libglusterfs/src/xlator.h @@ -935,6 +935,9 @@ void xlator_foreach_depth_first (xlator_t *this, xlator_t *xlator_search_by_name (xlator_t *any, const char *name); +void +xlator_set_inode_lru_limit (xlator_t *this, void *data); + void inode_destroy_notify (inode_t *inode, const char *xlname); int loc_copy (loc_t *dst, loc_t *src); |