diff options
Diffstat (limited to 'fs/nfsd/vfs.c')
-rw-r--r-- | fs/nfsd/vfs.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 23c06f77f4ca..3c111120b619 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c | |||
@@ -443,8 +443,7 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap, | |||
443 | if (size_change) | 443 | if (size_change) |
444 | put_write_access(inode); | 444 | put_write_access(inode); |
445 | if (!err) | 445 | if (!err) |
446 | if (EX_ISSYNC(fhp->fh_export)) | 446 | commit_metadata(fhp); |
447 | write_inode_now(inode, 1); | ||
448 | out: | 447 | out: |
449 | return err; | 448 | return err; |
450 | 449 | ||
@@ -999,7 +998,7 @@ static int wait_for_concurrent_writes(struct file *file) | |||
999 | 998 | ||
1000 | if (inode->i_state & I_DIRTY) { | 999 | if (inode->i_state & I_DIRTY) { |
1001 | dprintk("nfsd: write sync %d\n", task_pid_nr(current)); | 1000 | dprintk("nfsd: write sync %d\n", task_pid_nr(current)); |
1002 | err = vfs_fsync(file, file->f_path.dentry, 0); | 1001 | err = vfs_fsync(file, 0); |
1003 | } | 1002 | } |
1004 | last_ino = inode->i_ino; | 1003 | last_ino = inode->i_ino; |
1005 | last_dev = inode->i_sb->s_dev; | 1004 | last_dev = inode->i_sb->s_dev; |
@@ -1175,8 +1174,7 @@ nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp, | |||
1175 | if (err) | 1174 | if (err) |
1176 | goto out; | 1175 | goto out; |
1177 | if (EX_ISSYNC(fhp->fh_export)) { | 1176 | if (EX_ISSYNC(fhp->fh_export)) { |
1178 | int err2 = vfs_fsync_range(file, file->f_path.dentry, | 1177 | int err2 = vfs_fsync_range(file, offset, end, 0); |
1179 | offset, end, 0); | ||
1180 | 1178 | ||
1181 | if (err2 != -EINVAL) | 1179 | if (err2 != -EINVAL) |
1182 | err = nfserrno(err2); | 1180 | err = nfserrno(err2); |