summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/xlator.c
diff options
context:
space:
mode:
authorRaghavendra Bhat <raghavendra@redhat.com>2014-06-03 00:28:08 +0530
committerRaghavendra G <rgowdapp@redhat.com>2014-06-13 01:49:10 -0700
commit6ba178fd9ebf9fc98415c30bcd338a68ee5eb601 (patch)
treeb050a02506263651ba24603f25672bfd13d1f0b3 /libglusterfs/src/xlator.c
parent4d656f9008747172db52f6d532b610c487528bfb (diff)
protocol/server: reflect lru limit in inode table also
Upon reconfigure, when lru limit of the inode table is changed, the new value was just saved in the private structure of the protocol/server xlator and the inode table used to have the older values still. A brick start was required for the changes to get reflected. To handle it, traverse through the xlator tree and check whether a xlator is a bound_xl or not (if it is a bound_xl it would have its itable pointer set). If a xlator is a bound_xl, then get the inode table of that bound_xl and set its lru limit to new value given via cli. Also prune the inode table so that extra inodes are purged from the inode table. Change-Id: I6909be028c116adaa1d1a5108470015b5fc6f09d BUG: 1103756 Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com> Reviewed-on: http://review.gluster.org/7957 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Raghavendra G <rgowdapp@redhat.com> Tested-by: Raghavendra G <rgowdapp@redhat.com>
Diffstat (limited to 'libglusterfs/src/xlator.c')
-rw-r--r--libglusterfs/src/xlator.c19
1 files changed, 19 insertions, 0 deletions
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,