summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/cluster/dht/src/dht-common.c8
-rw-r--r--xlators/cluster/dht/src/dht-helper.c5
2 files changed, 8 insertions, 5 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c
index 70e737c89..ded86bcc3 100644
--- a/xlators/cluster/dht/src/dht-common.c
+++ b/xlators/cluster/dht/src/dht-common.c
@@ -701,7 +701,7 @@ cont:
if (local->loc.parent) {
dht_inode_ctx_time_update (local->loc.parent, this,
- postparent, 1);
+ &local->postparent, 1);
}
DHT_STRIP_PHASE1_FLAGS (&local->stbuf);
@@ -754,12 +754,12 @@ dht_lookup_linkfile_create_cbk (call_frame_t *frame, void *cookie,
local->stbuf.ia_prot.sticky = 1;
}
-unwind:
if (local->loc.parent) {
dht_inode_ctx_time_update (local->loc.parent, this,
postparent, 1);
}
+unwind:
DHT_STRIP_PHASE1_FLAGS (&local->stbuf);
DHT_STACK_UNWIND (lookup, frame, local->op_ret, local->op_errno,
local->inode, &local->stbuf, local->xattr,
@@ -1133,12 +1133,12 @@ dht_lookup_linkfile_cbk (call_frame_t *frame, void *cookie,
op_errno = EINVAL;
}
-unwind:
if (local->loc.parent) {
dht_inode_ctx_time_update (local->loc.parent, this,
postparent, 1);
}
+unwind:
DHT_STRIP_PHASE1_FLAGS (stbuf);
DHT_STACK_UNWIND (lookup, frame, op_ret, op_errno, inode, stbuf, xattr,
postparent);
@@ -1322,7 +1322,7 @@ out:
* from each of the subvolume. See dht_iatt_merge for reference.
*/
- if (local->loc.parent) {
+ if (!op_ret && local->loc.parent) {
dht_inode_ctx_time_update (local->loc.parent, this,
postparent, 1);
}
diff --git a/xlators/cluster/dht/src/dht-helper.c b/xlators/cluster/dht/src/dht-helper.c
index 264172a90..8a38de475 100644
--- a/xlators/cluster/dht/src/dht-helper.c
+++ b/xlators/cluster/dht/src/dht-helper.c
@@ -931,6 +931,9 @@ dht_inode_ctx_time_update (inode_t *inode, xlator_t *this, struct iatt *stat,
dht_stat_time_t *time = 0;
int ret = -1;
+ GF_VALIDATE_OR_GOTO (this->name, stat, out);
+ GF_VALIDATE_OR_GOTO (this->name, inode, out);
+
ret = dht_inode_ctx_get (inode, this, &ctx);
if (ret) {
@@ -949,7 +952,7 @@ dht_inode_ctx_time_update (inode_t *inode, xlator_t *this, struct iatt *stat,
stat->ia_atime, stat->ia_atime_nsec, inode, post);
ret = dht_inode_ctx_set (inode, this, ctx);
-
+out:
return 0;
}