> @@ -1352,19 +1340,13 @@ static int exfat_rename(struct inode *old_dir, struct dentry *old_dentry, > new_dir->i_ctime = new_dir->i_mtime = new_dir->i_atime = > EXFAT_I(new_dir)->i_crtime = current_time(new_dir); > exfat_truncate_atime(&new_dir->i_atime); > - if (IS_DIRSYNC(new_dir)) > - exfat_sync_inode(new_dir); > - else > - mark_inode_dirty(new_dir); > + exfat_update_inode(new_dir); > > i_pos = ((loff_t)EXFAT_I(old_inode)->dir.dir << 32) | > (EXFAT_I(old_inode)->entry & 0xffffffff); > exfat_unhash_inode(old_inode); > exfat_hash_inode(old_inode, i_pos); > - if (IS_DIRSYNC(new_dir)) > - exfat_sync_inode(old_inode); > - else > - mark_inode_dirty(old_inode); > + exfat_update_inode(old_inode); This is checking if old_inode is IS_DIRSYNC, not new_dir. Is there any reason ?