diff options
| author | Pranith Kumar K <pkarampu@redhat.com> | 2015-12-30 10:17:00 +0530 | 
|---|---|---|
| committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2016-01-28 21:12:53 -0800 | 
| commit | 080ddb79d8805253a7f4274606351570faae1add (patch) | |
| tree | 4a56766d2f06a17ca912c77159cff0b727235ca4 | |
| parent | 786a8b395b09126a1151865c57ec2753a26facbb (diff) | |
cluster/ec: Create this->itable in all cases
Problem:
glfsheal operates based on mount's volfile which doesn't have iamshd flag due
to which this->itable is NULL, this leads to "inode not found" logs in glfsheal
logs.
Fix:
Ec only allocates itable with 10 inodes, so allocating this->itable in all
cases in init.
Change-Id: I01d3c05e93a17007a4716a2d6f392d2aa306a34b
BUG: 1294743
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/13112
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
| -rw-r--r-- | xlators/cluster/ec/src/ec-heald.c | 5 | ||||
| -rw-r--r-- | xlators/cluster/ec/src/ec.c | 4 | ||||
| -rw-r--r-- | xlators/cluster/ec/src/ec.h | 1 | 
3 files changed, 5 insertions, 5 deletions
diff --git a/xlators/cluster/ec/src/ec-heald.c b/xlators/cluster/ec/src/ec-heald.c index 95cff00b283..2e5098a3612 100644 --- a/xlators/cluster/ec/src/ec-heald.c +++ b/xlators/cluster/ec/src/ec-heald.c @@ -19,7 +19,6 @@  #include "syncop-utils.h"  #include "protocol-common.h" -#define SHD_INODE_LRU_LIMIT          10  #define ASSERT_LOCAL(this, healer)				        \          do {                                                            \                  if (!ec_shd_is_subvol_local (this, healer->subvol)) {	\ @@ -513,10 +512,6 @@ ec_selfheal_daemon_init (xlator_t *this)          ec = this->private;          shd = &ec->shd; -        this->itable = inode_table_new (SHD_INODE_LRU_LIMIT, this); -        if (!this->itable) -                goto out; -          shd->index_healers = GF_CALLOC (sizeof(*shd->index_healers),                                          ec->nodes,                                          ec_mt_subvol_healer_t); diff --git a/xlators/cluster/ec/src/ec.c b/xlators/cluster/ec/src/ec.c index 06f814f9f5c..e93ae4f86fb 100644 --- a/xlators/cluster/ec/src/ec.c +++ b/xlators/cluster/ec/src/ec.c @@ -604,6 +604,10 @@ init (xlator_t *this)      if (ec_assign_read_policy (ec, read_policy))              goto failed; +    this->itable = inode_table_new (EC_SHD_INODE_LRU_LIMIT, this); +    if (!this->itable) +            goto failed; +      if (ec->shd.iamshd)              ec_selfheal_daemon_init (this);      gf_msg_debug (this->name, 0, "Disperse translator initialized."); diff --git a/xlators/cluster/ec/src/ec.h b/xlators/cluster/ec/src/ec.h index 4ee7983b289..480125e35d3 100644 --- a/xlators/cluster/ec/src/ec.h +++ b/xlators/cluster/ec/src/ec.h @@ -24,6 +24,7 @@  #define EC_XATTR_DIRTY   EC_XATTR_PREFIX"dirty"  #define EC_VERSION_SIZE 2 +#define EC_SHD_INODE_LRU_LIMIT          10  typedef enum {          EC_ROUND_ROBIN,  | 
