diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index cf18ee7..c3a1ed2 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -1762,8 +1762,18 @@ cifs_setattr_unix(struct dentry *direntry, struct iattr *attrs) CIFS_MOUNT_MAP_SPECIAL_CHR); } - if (!rc) + if (!rc) { rc = inode_setattr(inode, attrs); + + /* force revalidate when any of the times are set since some + of the fs types do not have fine(r) granularity + */ + if ((!rc) && + (attrs->ia_valid & (ATTR_ATIME | ATTR_MTIME | + ATTR_CTIME))) + cifsInode->time = 0; + } + out: kfree(args); kfree(full_path);