diff options
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.h | 1 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-helper.c | 28 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-inode-write.c | 6 | 
3 files changed, 34 insertions, 1 deletions
diff --git a/xlators/cluster/dht/src/dht-common.h b/xlators/cluster/dht/src/dht-common.h index d391b87d50f..d74d0dfd4ec 100644 --- a/xlators/cluster/dht/src/dht-common.h +++ b/xlators/cluster/dht/src/dht-common.h @@ -753,6 +753,7 @@ dht_inode_ctx_layout_set (inode_t *inode, xlator_t *this,  int  dht_inode_ctx_time_update (inode_t *inode, xlator_t *this, struct iatt *stat,                             int32_t update_ctx); +void dht_inode_ctx_time_set (inode_t *inode, xlator_t *this, struct iatt *stat);  int dht_inode_ctx_get (inode_t *inode, xlator_t *this, dht_inode_ctx_t **ctx);  int dht_inode_ctx_set (inode_t *inode, xlator_t *this, dht_inode_ctx_t *ctx); diff --git a/xlators/cluster/dht/src/dht-helper.c b/xlators/cluster/dht/src/dht-helper.c index 18a501f049a..f1dc5072f40 100644 --- a/xlators/cluster/dht/src/dht-helper.c +++ b/xlators/cluster/dht/src/dht-helper.c @@ -1109,6 +1109,34 @@ dht_inode_ctx_layout_set (inode_t *inode, xlator_t *this,          return ret;  } + +void +dht_inode_ctx_time_set (inode_t *inode, xlator_t *this, struct iatt *stat) +{ +        dht_inode_ctx_t         *ctx            = NULL; +        dht_stat_time_t         *time           = 0; +        int                      ret            = -1; + +        ret = dht_inode_ctx_get (inode, this, &ctx); + +        if (ret) +		return; + +        time = &ctx->time; + +	time->mtime      = stat->ia_mtime; +	time->mtime_nsec = stat->ia_mtime_nsec; + +	time->ctime      = stat->ia_ctime; +	time->ctime_nsec = stat->ia_ctime_nsec; + +	time->atime      = stat->ia_atime; +	time->atime_nsec = stat->ia_atime_nsec; + +	return; +} + +  int  dht_inode_ctx_time_update (inode_t *inode, xlator_t *this, struct iatt *stat,                             int32_t post) diff --git a/xlators/cluster/dht/src/dht-inode-write.c b/xlators/cluster/dht/src/dht-inode-write.c index 363bff3bfa8..576f007e513 100644 --- a/xlators/cluster/dht/src/dht-inode-write.c +++ b/xlators/cluster/dht/src/dht-inode-write.c @@ -862,9 +862,13 @@ unlock:          UNLOCK (&frame->lock);          this_call_cnt = dht_frame_return (frame); -        if (is_last_call (this_call_cnt)) +        if (is_last_call (this_call_cnt)) { +		if (local->op_ret == 0) +			dht_inode_ctx_time_set (local->loc.inode, this, +						&local->stbuf);                  DHT_STACK_UNWIND (setattr, frame, local->op_ret, local->op_errno,                                    &local->prebuf, &local->stbuf, xdata); +	}          return 0;  }  | 
