void fuse_update_ctime(struct inode *inode)
 {
+       fuse_invalidate_attr(inode);
        if (!IS_NOCMTIME(inode)) {
                inode->i_ctime = current_time(inode);
                mark_inode_dirty_sync(inode);
                if (inode->i_nlink > 0)
                        drop_nlink(inode);
                spin_unlock(&fi->lock);
-               fuse_invalidate_attr(inode);
                fuse_dir_changed(dir);
                fuse_invalidate_entry_cache(entry);
                fuse_update_ctime(inode);
        err = fuse_simple_request(fm, &args);
        if (!err) {
                /* ctime changes */
-               fuse_invalidate_attr(d_inode(oldent));
                fuse_update_ctime(d_inode(oldent));
 
-               if (flags & RENAME_EXCHANGE) {
-                       fuse_invalidate_attr(d_inode(newent));
+               if (flags & RENAME_EXCHANGE)
                        fuse_update_ctime(d_inode(newent));
-               }
 
                fuse_dir_changed(olddir);
                if (olddir != newdir)
 
                /* newent will end up negative */
                if (!(flags & RENAME_EXCHANGE) && d_really_is_positive(newent)) {
-                       fuse_invalidate_attr(d_inode(newent));
                        fuse_invalidate_entry_cache(newent);
                        fuse_update_ctime(d_inode(newent));
                }
                if (likely(inode->i_nlink < UINT_MAX))
                        inc_nlink(inode);
                spin_unlock(&fi->lock);
-               fuse_invalidate_attr(inode);
                fuse_update_ctime(inode);
        } else if (err == -EINTR) {
                fuse_invalidate_attr(inode);
 
                fm->fc->no_setxattr = 1;
                err = -EOPNOTSUPP;
        }
-       if (!err) {
-               fuse_invalidate_attr(inode);
+       if (!err)
                fuse_update_ctime(inode);
-       }
+
        return err;
 }
 
                fm->fc->no_removexattr = 1;
                err = -EOPNOTSUPP;
        }
-       if (!err) {
-               fuse_invalidate_attr(inode);
+       if (!err)
                fuse_update_ctime(inode);
-       }
+
        return err;
 }