|
@@ -1024,11 +1024,6 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
|
|
|
|
|
|
if (!EX_ISSYNC(exp))
|
|
|
stable = 0;
|
|
|
- if (stable && !use_wgather) {
|
|
|
- spin_lock(&file->f_lock);
|
|
|
- file->f_flags |= O_SYNC;
|
|
|
- spin_unlock(&file->f_lock);
|
|
|
- }
|
|
|
|
|
|
/* Write the data. */
|
|
|
oldfs = get_fs(); set_fs(KERNEL_DS);
|
|
@@ -1044,8 +1039,12 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
|
|
|
if (inode->i_mode & (S_ISUID | S_ISGID))
|
|
|
kill_suid(dentry);
|
|
|
|
|
|
- if (stable && use_wgather)
|
|
|
- host_err = wait_for_concurrent_writes(file);
|
|
|
+ if (stable) {
|
|
|
+ if (use_wgather)
|
|
|
+ host_err = wait_for_concurrent_writes(file);
|
|
|
+ else
|
|
|
+ host_err = vfs_fsync_range(file, offset, offset+*cnt, 0);
|
|
|
+ }
|
|
|
|
|
|
out_nfserr:
|
|
|
dprintk("nfsd: write complete host_err=%d\n", host_err);
|