diff options
author | Raghavendra Bhat <raghavendrabhat@gluster.com> | 2012-03-08 01:26:29 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2012-03-14 03:53:35 -0700 |
commit | a059bc30561a3046e255ba1e6ad54b09f0b03636 (patch) | |
tree | 7c6850c2199a9d3e8f651110035eef644896aff1 /libglusterfs/src/inode.c | |
parent | f9be1e7c665be0507e431cb42cd55032807bd3ea (diff) |
cluster/afr: handle sending NULL dentry name for inode link in self-heal-daemon
* Without the dentry name, dentry cannot be created in inode_link, which
leads to trying to access the null dentry to check if it is cyclic and
thus segfault. So send the parent inode also NULL, which just returns
the proper inode after assigning the gfid and type to the inode without
trying to create dentry.
* Handle failures such as dentry_create returning NULL, in inode_link
properly and return NULL in such cases.
* Increase the lru limit of inode table of self-heal-daemon to 2048
Change-Id: I7ae0e0e9be279d1694b6aafb5e054585e43f03ff
BUG: 801149
Signed-off-by: Raghavendra Bhat <raghavendrabhat@gluster.com>
Reviewed-on: http://review.gluster.com/2893
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
Diffstat (limited to 'libglusterfs/src/inode.c')
-rw-r--r-- | libglusterfs/src/inode.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libglusterfs/src/inode.c b/libglusterfs/src/inode.c index 3fad499ebcb..08bedf8fa3e 100644 --- a/libglusterfs/src/inode.c +++ b/libglusterfs/src/inode.c @@ -813,6 +813,14 @@ __inode_link (inode_t *inode, inode_t *parent, const char *name, if (!old_dentry || old_dentry->inode != link_inode) { dentry = __dentry_create (link_inode, parent, name); + if (!dentry) { + gf_log_callingfn (THIS->name, GF_LOG_ERROR, + "dentry create failed on " + "inode %s with parent %s", + uuid_utoa (link_inode->gfid), + uuid_utoa (parent->gfid)); + return NULL; + } if (old_inode && __is_dentry_cyclic (dentry)) { __dentry_unset (dentry); return NULL; |