if (err)
                return err;
 
-       mark_inode_dirty(&ni->vfs_inode);
+       mark_inode_dirty_sync(&ni->vfs_inode);
        /* verify(!ntfs_update_mftmirr()); */
 
-       /*
-        * If we used wait=1, sync_inode_metadata waits for the io for the
-        * inode to finish. It hangs when media is removed.
-        * So wait=0 is sent down to sync_inode_metadata
-        * and filemap_fdatawrite is used for the data blocks.
-        */
-       err = sync_inode_metadata(&ni->vfs_inode, 0);
-       if (!err)
-               err = filemap_fdatawrite(ni->vfs_inode.i_mapping);
+       /* write mft record on disk. */
+       err = _ni_write_inode(&ni->vfs_inode, 1);
 
        return err;
 }