nfs: remove nfs4_file_fsync
authorChristoph Hellwig <hch@lst.de>
Wed, 2 Mar 2016 16:35:54 +0000 (17:35 +0100)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Wed, 16 Mar 2016 19:42:43 +0000 (15:42 -0400)
The only difference to nfs_file_fsync is the call to pnfs_sync_inode.  But
pnfs_sync_inode is just an inline that calls a pNFS layout driver method
if CONFIG_PNFS is designed, and thus can be called just fine from the core
NFS module.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/file.c
fs/nfs/internal.h
fs/nfs/nfs4file.c

index 748bb813b8ecd63095f2f50b8e733fe960e188ec..cdf8621886180bbf95af3c4e5d704bad63e762bc 100644 (file)
@@ -233,7 +233,7 @@ EXPORT_SYMBOL_GPL(nfs_file_mmap);
  * nfs_file_write() that a write error occurred, and hence cause it to
  * fall back to doing a synchronous write.
  */
-int
+static int
 nfs_file_fsync_commit(struct file *file, loff_t start, loff_t end, int datasync)
 {
        struct nfs_open_context *ctx = nfs_file_open_context(file);
@@ -263,9 +263,8 @@ nfs_file_fsync_commit(struct file *file, loff_t start, loff_t end, int datasync)
 out:
        return ret;
 }
-EXPORT_SYMBOL_GPL(nfs_file_fsync_commit);
 
-static int
+int
 nfs_file_fsync(struct file *file, loff_t start, loff_t end, int datasync)
 {
        int ret;
@@ -280,6 +279,8 @@ nfs_file_fsync(struct file *file, loff_t start, loff_t end, int datasync)
                        break;
                inode_lock(inode);
                ret = nfs_file_fsync_commit(file, start, end, datasync);
+               if (!ret)
+                       ret = pnfs_sync_inode(inode, !!datasync);
                inode_unlock(inode);
                /*
                 * If nfs_file_fsync_commit detected a server reboot, then
@@ -293,6 +294,7 @@ nfs_file_fsync(struct file *file, loff_t start, loff_t end, int datasync)
        trace_nfs_fsync_exit(inode, ret);
        return ret;
 }
+EXPORT_SYMBOL_GPL(nfs_file_fsync);
 
 /*
  * Decide whether a read/modify/write cycle may be more efficient
index 9a547aa3ec8e873160da5a36906eb3813650034d..c41c5f5baf036efc7145c726a6936ea75c63f450 100644 (file)
@@ -358,7 +358,7 @@ int nfs_mknod(struct inode *, struct dentry *, umode_t, dev_t);
 int nfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *);
 
 /* file.c */
-int nfs_file_fsync_commit(struct file *, loff_t, loff_t, int);
+int nfs_file_fsync(struct file *file, loff_t start, loff_t end, int datasync);
 loff_t nfs_file_llseek(struct file *, loff_t, int);
 ssize_t nfs_file_read(struct kiocb *, struct iov_iter *);
 ssize_t nfs_file_splice_read(struct file *, loff_t *, struct pipe_inode_info *,
index 57ca1c8039c1e00bfcb6e9bb4d8fe7e40f4578d5..22c35abbee9d6c88244b220054d2256c30d050ec 100644 (file)
@@ -128,37 +128,6 @@ nfs4_file_flush(struct file *file, fl_owner_t id)
        return vfs_fsync(file, 0);
 }
 
-static int
-nfs4_file_fsync(struct file *file, loff_t start, loff_t end, int datasync)
-{
-       int ret;
-       struct inode *inode = file_inode(file);
-
-       trace_nfs_fsync_enter(inode);
-
-       nfs_inode_dio_wait(inode);
-       do {
-               ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
-               if (ret != 0)
-                       break;
-               inode_lock(inode);
-               ret = nfs_file_fsync_commit(file, start, end, datasync);
-               if (!ret)
-                       ret = pnfs_sync_inode(inode, !!datasync);
-               inode_unlock(inode);
-               /*
-                * If nfs_file_fsync_commit detected a server reboot, then
-                * resend all dirty pages that might have been covered by
-                * the NFS_CONTEXT_RESEND_WRITES flag
-                */
-               start = 0;
-               end = LLONG_MAX;
-       } while (ret == -EAGAIN);
-
-       trace_nfs_fsync_exit(inode, ret);
-       return ret;
-}
-
 #ifdef CONFIG_NFS_V4_2
 static loff_t nfs4_file_llseek(struct file *filep, loff_t offset, int whence)
 {
@@ -266,7 +235,7 @@ const struct file_operations nfs4_file_operations = {
        .open           = nfs4_file_open,
        .flush          = nfs4_file_flush,
        .release        = nfs_file_release,
-       .fsync          = nfs4_file_fsync,
+       .fsync          = nfs_file_fsync,
        .lock           = nfs_lock,
        .flock          = nfs_flock,
        .splice_read    = nfs_file_splice_read,
This page took 0.026521 seconds and 5 git commands to generate.