summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libglusterfs/src/inode.c8
-rw-r--r--xlators/cluster/afr/src/afr-self-heald.c11
-rw-r--r--xlators/cluster/afr/src/afr.c2
3 files changed, 19 insertions, 2 deletions
diff --git a/libglusterfs/src/inode.c b/libglusterfs/src/inode.c
index 3fad499eb..08bedf8fa 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;
diff --git a/xlators/cluster/afr/src/afr-self-heald.c b/xlators/cluster/afr/src/afr-self-heald.c
index 36d2cfb6e..fde17209f 100644
--- a/xlators/cluster/afr/src/afr-self-heald.c
+++ b/xlators/cluster/afr/src/afr-self-heald.c
@@ -715,6 +715,7 @@ _process_entries (xlator_t *this, loc_t *parentloc, gf_dirent_t *entries,
loc_t entry_loc = {0};
fd_t *fd = NULL;
struct iatt iattr = {0};
+ inode_t *link_inode = NULL;
list_for_each_entry_safe (entry, tmp, &entries->list, list) {
if (!_crawl_proceed (this, crawl_data->child,
@@ -751,7 +752,15 @@ _process_entries (xlator_t *this, loc_t *parentloc, gf_dirent_t *entries,
if (ret || !IA_ISDIR (iattr.ia_type))
continue;
- inode_link (entry_loc.inode, parentloc->inode, NULL, &iattr);
+ link_inode = inode_link (entry_loc.inode, NULL, NULL, &iattr);
+ if (link_inode == NULL) {
+ char uuidbuf[64];
+ gf_log (this->name, GF_LOG_ERROR, "inode link failed "
+ "on the inode (%s)",
+ uuid_utoa_r (entry_loc.gfid, uuidbuf));
+ ret = -1;
+ goto out;
+ }
fd = NULL;
ret = afr_crawl_opendir (this, crawl_data, &fd, &entry_loc);
diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c
index ce82aede8..0bd389ef9 100644
--- a/xlators/cluster/afr/src/afr.c
+++ b/xlators/cluster/afr/src/afr.c
@@ -30,7 +30,7 @@
#endif
#include "afr-common.c"
-#define SHD_INODE_LRU_LIMIT 100
+#define SHD_INODE_LRU_LIMIT 2048
#define AFR_EH_HEALED_LIMIT 1024
#define AFR_EH_HEAL_FAIL_LIMIT 1024
#define AFR_EH_SPLIT_BRAIN_LIMIT 1024