diff options
Diffstat (limited to 'xlators/storage')
| -rw-r--r-- | xlators/storage/posix/src/posix-metadata.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/xlators/storage/posix/src/posix-metadata.c b/xlators/storage/posix/src/posix-metadata.c index 82b05ebffc2..947d7be2d68 100644 --- a/xlators/storage/posix/src/posix-metadata.c +++ b/xlators/storage/posix/src/posix-metadata.c @@ -605,6 +605,10 @@ posix_set_ctime(call_frame_t *frame, xlator_t *this, const char *real_path,      if (priv->ctime) {          (void)posix_get_mdata_flag(frame->root->flags, &flag); +        if ((flag.ctime == 0) && (flag.mtime == 0) && (flag.atime == 0)) { +            goto out; +        } +          if (frame->root->ctime.tv_sec == 0) {              gf_msg(this->name, GF_LOG_WARNING, errno, P_MSG_SETMDATA_FAILED,                     "posix set mdata failed, No ctime : %s gfid:%s", real_path, @@ -640,6 +644,9 @@ posix_set_parent_ctime(call_frame_t *frame, xlator_t *this,      if (inode && priv->ctime) {          (void)posix_get_parent_mdata_flag(frame->root->flags, &flag); +        if ((flag.ctime == 0) && (flag.mtime == 0) && (flag.atime == 0)) { +            goto out; +        }          ret = posix_set_mdata_xattr(this, real_path, fd, inode,                                      &frame->root->ctime, stbuf, &flag,                                      _gf_false); @@ -649,5 +656,6 @@ posix_set_parent_ctime(call_frame_t *frame, xlator_t *this,                     uuid_utoa(inode->gfid));          }      } +out:      return;  }  | 
