diff options
-rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 8 | ||||
-rw-r--r-- | xlators/cluster/dht/src/dht-helper.c | 5 |
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; } |