nfs: commit layouts in fdatasync
authorChristoph Hellwig <hch@infradead.org>
Mon, 21 Apr 2014 17:29:17 +0000 (10:29 -0700)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Wed, 28 May 2014 21:45:30 +0000 (17:45 -0400)
 "fdatasync() is similar to fsync(), but does not flush modified metadata
  unless that metadata is needed in order  to  allow  a  subsequent  data
  retrieval to be correctly handled."

We absolutely need to commit the layouts to be able to retrieve the data
in case either the client, the server or the storage subsystem go down.

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

index 8de3407e0360829dd54a1682b1f046e2f88c6001..464db9dd63180dc7baf3695f51471747426144fb 100644 (file)
@@ -100,8 +100,7 @@ nfs4_file_fsync(struct file *file, loff_t start, loff_t end, int datasync)
                        break;
                mutex_lock(&inode->i_mutex);
                ret = nfs_file_fsync_commit(file, start, end, datasync);
-               if (!ret && !datasync)
-                       /* application has asked for meta-data sync */
+               if (!ret)
                        ret = pnfs_layoutcommit_inode(inode, true);
                mutex_unlock(&inode->i_mutex);
                /*