summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/cluster/dht/src/dht-common.c14
-rw-r--r--xlators/cluster/dht/src/dht-common.h2
2 files changed, 10 insertions, 6 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c
index 63a54cb3138..d977c1f87a1 100644
--- a/xlators/cluster/dht/src/dht-common.c
+++ b/xlators/cluster/dht/src/dht-common.c
@@ -5116,29 +5116,32 @@ dht_populate_inode_for_dentry (xlator_t *this, xlator_t *subvol,
int ret = 0;
loc_t loc = {0, };
+ gf_uuid_copy (loc.gfid, orig_entry->d_stat.ia_gfid);
+ loc.inode = inode_ref (orig_entry->inode);
+
+ if (is_revalidate (&loc)) {
+ goto out;
+ }
+
layout = dht_layout_new (this, 1);
if (!layout)
goto out;
ret = dht_layout_merge (this, layout, subvol, 0, 0, orig_entry->dict);
if (!ret) {
- gf_uuid_copy (loc.gfid, orig_entry->d_stat.ia_gfid);
- loc.inode = inode_ref (orig_entry->inode);
-
ret = dht_layout_normalize (this, &loc, layout);
if (ret == 0) {
dht_layout_set (this, orig_entry->inode, layout);
entry->inode = inode_ref (orig_entry->inode);
layout = NULL;
}
-
- loc_wipe (&loc);
}
if (layout)
dht_layout_unref (this, layout);
out:
+ loc_wipe (&loc);
return;
}
@@ -5286,6 +5289,7 @@ list:
entry,
orig_entry);
}
+
}
} else {
if (orig_entry->inode) {
diff --git a/xlators/cluster/dht/src/dht-common.h b/xlators/cluster/dht/src/dht-common.h
index 7c6b1191048..9e7e12a51ca 100644
--- a/xlators/cluster/dht/src/dht-common.h
+++ b/xlators/cluster/dht/src/dht-common.h
@@ -731,7 +731,7 @@ typedef struct dht_fd_ctx {
#define ENTRY_MISSING(op_ret, op_errno) (op_ret == -1 && op_errno == ENOENT)
-#define is_revalidate(loc) (dht_inode_ctx_layout_get (loc->inode, this, NULL) == 0)
+#define is_revalidate(loc) (dht_inode_ctx_layout_get ((loc)->inode, this, NULL) == 0)
#define is_last_call(cnt) (cnt == 0)