diff options
author | Anand Avati <avati@redhat.com> | 2014-04-01 17:28:55 -0700 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2014-04-17 11:41:48 -0700 |
commit | 02ac5fa4b5ed4c1cb531724c85ff10c83f221541 (patch) | |
tree | de33b3bef33e0008c30dee6b4c6bc51eb61900bb /xlators/cluster/dht/src/dht-helper.c | |
parent | e55f3fe25a4fd2cc9021fad97faedc5e94aa4e7c (diff) |
cluster/dht: force set dir inode ctx cached time in setattr()
In setattr, the inode times may have been explicitly set "back
in time". In such cases, if the inode ctx times are not force
set, then they continue to be higher and continue serving the
higher/older value in future calls to dht_inode_ctx_time_update()
Change-Id: I9cbfa7cf7c4069b0106d1f462de08c5d59bc91b5
BUG: 1083324
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/7378
Reviewed-by: Harshavardhana <harsha@harshavardhana.net>
Tested-by: Harshavardhana <harsha@harshavardhana.net>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/cluster/dht/src/dht-helper.c')
-rw-r--r-- | xlators/cluster/dht/src/dht-helper.c | 28 |
1 files changed, 28 insertions, 0 deletions
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) |