goto out;
                        }
 
-                       ret = vfs_fsync(file, file->f_path.dentry, 0);
+                       ret = vfs_fsync(file, 0);
                        if (unlikely(ret)) {
                                ret = -EIO;
                                goto out;
                ret = lo_send(lo, bio, pos);
 
                if (barrier && !ret) {
-                       ret = vfs_fsync(file, file->f_path.dentry, 0);
+                       ret = vfs_fsync(file, 0);
                        if (unlikely(ret))
                                ret = -EIO;
                }
 
                 * and bypass the page cache, we must sync the file
                 * first.
                 */
-               vfs_fsync(file, file->f_dentry, 1);
+               vfs_fsync(file, 1);
        }
        /* read superblock from bitmap file (this sets mddev->bitmap_info.chunksize) */
        if (!mddev->bitmap_info.external)
 
 
        if (curlun->ro || !filp)
                return 0;
-       return vfs_fsync(filp, filp->f_path.dentry, 1);
+       return vfs_fsync(filp, 1);
 }
 
 static void store_cdrom_address(u8 *dest, int msf, u32 addr)
 
                if ((ret >= 0 || ret == -EIOCBQUEUED) &&
                    ((file->f_flags & O_SYNC) || IS_SYNC(file->f_mapping->host)
                     || ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_NEARFULL))) {
-                       err = vfs_fsync_range(file, file->f_path.dentry,
-                                             pos, pos + ret - 1, 1);
+                       err = vfs_fsync_range(file, pos, pos + ret - 1, 1);
                        if (err < 0)
                                ret = err;
                }
 
        BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);
        host_file = cfi->cfi_container;
 
-       err = vfs_fsync(host_file, host_file->f_path.dentry, datasync);
+       err = vfs_fsync(host_file, datasync);
        if ( !err && !datasync ) {
                lock_kernel();
                err = venus_fsync(coda_inode->i_sb, coda_i2f(coda_inode));
 
 static int
 ecryptfs_fsync(struct file *file, struct dentry *dentry, int datasync)
 {
-       return vfs_fsync(ecryptfs_file_to_lower(file),
-                        ecryptfs_dentry_to_lower(dentry),
-                        datasync);
+       return vfs_fsync(ecryptfs_file_to_lower(file), datasync);
 }
 
 static int ecryptfs_fasync(int fd, struct file *file, int flag)
 
        mutex_unlock(&dir->d_inode->i_mutex);
        if (status == 0) {
                clp->cl_firststate = 1;
-               vfs_fsync(rec_file, rec_file->f_path.dentry, 0);
+               vfs_fsync(rec_file, 0);
        }
        nfs4_reset_creds(original_cred);
        dprintk("NFSD: nfsd4_create_clid_dir returns %d\n", status);
        status = nfsd4_unlink_clid_dir(clp->cl_recdir, HEXDIR_LEN-1);
        nfs4_reset_creds(original_cred);
        if (status == 0)
-               vfs_fsync(rec_file, rec_file->f_path.dentry, 0);
+               vfs_fsync(rec_file, 0);
        mnt_drop_write(rec_file->f_path.mnt);
 out:
        if (status)
                goto out;
        status = nfsd4_list_rec_dir(rec_file->f_path.dentry, purge_old);
        if (status == 0)
-               vfs_fsync(rec_file, rec_file->f_path.dentry, 0);
+               vfs_fsync(rec_file, 0);
        mnt_drop_write(rec_file->f_path.mnt);
 out:
        if (status)
 
 
        if (inode->i_state & I_DIRTY) {
                dprintk("nfsd: write sync %d\n", task_pid_nr(current));
-               err = vfs_fsync(file, file->f_path.dentry, 0);
+               err = vfs_fsync(file, 0);
        }
        last_ino = inode->i_ino;
        last_dev = inode->i_sb->s_dev;
        if (err)
                goto out;
        if (EX_ISSYNC(fhp->fh_export)) {
-               int err2 = vfs_fsync_range(file, file->f_path.dentry,
-                               offset, end, 0);
+               int err2 = vfs_fsync_range(file, offset, end, 0);
 
                if (err2 != -EINVAL)
                        err = nfserrno(err2);
 
 /**
  * vfs_fsync_range - helper to sync a range of data & metadata to disk
  * @file:              file to sync
- * @dentry:            dentry of @file
  * @start:             offset in bytes of the beginning of data range to sync
  * @end:               offset in bytes of the end of data range (inclusive)
  * @datasync:          perform only datasync
  * Write back data in range @start..@end and metadata for @file to disk.  If
  * @datasync is set only metadata needed to access modified file data is
  * written.
- *
- * In case this function is called from nfsd @file may be %NULL and
- * only @dentry is set.  This can only happen when the filesystem
- * implements the export_operations API.
  */
-int vfs_fsync_range(struct file *file, struct dentry *dentry, loff_t start,
-                   loff_t end, int datasync)
+int vfs_fsync_range(struct file *file, loff_t start, loff_t end, int datasync)
 {
-       const struct file_operations *fop;
-       struct address_space *mapping;
+       struct address_space *mapping = file->f_mapping;
        int err, ret;
 
-       /*
-        * Get mapping and operations from the file in case we have
-        * as file, or get the default values for them in case we
-        * don't have a struct file available.  Damn nfsd..
-        */
-       if (file) {
-               mapping = file->f_mapping;
-               fop = file->f_op;
-       } else {
-               mapping = dentry->d_inode->i_mapping;
-               fop = dentry->d_inode->i_fop;
-       }
-
-       if (!fop || !fop->fsync) {
+       if (!file->f_op || !file->f_op->fsync) {
                ret = -EINVAL;
                goto out;
        }
         * livelocks in fsync_buffers_list().
         */
        mutex_lock(&mapping->host->i_mutex);
-       err = fop->fsync(file, dentry, datasync);
+       err = file->f_op->fsync(file, file->f_path.dentry, datasync);
        if (!ret)
                ret = err;
        mutex_unlock(&mapping->host->i_mutex);
 /**
  * vfs_fsync - perform a fsync or fdatasync on a file
  * @file:              file to sync
- * @dentry:            dentry of @file
  * @datasync:          only perform a fdatasync operation
  *
  * Write back data and metadata for @file to disk.  If @datasync is
  * set only metadata needed to access modified file data is written.
- *
- * In case this function is called from nfsd @file may be %NULL and
- * only @dentry is set.  This can only happen when the filesystem
- * implements the export_operations API.
  */
-int vfs_fsync(struct file *file, struct dentry *dentry, int datasync)
+int vfs_fsync(struct file *file, int datasync)
 {
-       return vfs_fsync_range(file, dentry, 0, LLONG_MAX, datasync);
+       return vfs_fsync_range(file, 0, LLONG_MAX, datasync);
 }
 EXPORT_SYMBOL(vfs_fsync);
 
 
        file = fget(fd);
        if (file) {
-               ret = vfs_fsync(file, file->f_path.dentry, datasync);
+               ret = vfs_fsync(file, datasync);
                fput(file);
        }
        return ret;
 {
        if (!(file->f_flags & O_DSYNC) && !IS_SYNC(file->f_mapping->host))
                return 0;
-       return vfs_fsync_range(file, file->f_path.dentry, pos,
-                              pos + count - 1,
+       return vfs_fsync_range(file, pos, pos + count - 1,
                               (file->f_flags & __O_SYNC) ? 0 : 1);
 }
 EXPORT_SYMBOL(generic_write_sync);
 
 extern int filemap_fdatawrite_range(struct address_space *mapping,
                                loff_t start, loff_t end);
 
-extern int vfs_fsync_range(struct file *file, struct dentry *dentry,
-                          loff_t start, loff_t end, int datasync);
-extern int vfs_fsync(struct file *file, struct dentry *dentry, int datasync);
+extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end,
+                          int datasync);
+extern int vfs_fsync(struct file *file, int datasync);
 extern int generic_write_sync(struct file *file, loff_t pos, loff_t count);
 extern void sync_supers(void);
 extern void emergency_sync(void);
 
                                (vma->vm_flags & VM_SHARED)) {
                        get_file(file);
                        up_read(&mm->mmap_sem);
-                       error = vfs_fsync(file, file->f_path.dentry, 0);
+                       error = vfs_fsync(file, 0);
                        fput(file);
                        if (error || start >= end)
                                goto out;