diff options
Diffstat (limited to 'fs/sync.c')
| -rw-r--r-- | fs/sync.c | 25 | 
1 files changed, 3 insertions, 22 deletions
diff --git a/fs/sync.c b/fs/sync.c index c38ec163da6..c98a7477edf 100644 --- a/fs/sync.c +++ b/fs/sync.c @@ -165,28 +165,9 @@ SYSCALL_DEFINE1(syncfs, int, fd)   */  int vfs_fsync_range(struct file *file, loff_t start, loff_t end, int datasync)  { -	struct address_space *mapping = file->f_mapping; -	int err, ret; - -	if (!file->f_op || !file->f_op->fsync) { -		ret = -EINVAL; -		goto out; -	} - -	ret = filemap_write_and_wait_range(mapping, start, end); - -	/* -	 * We need to protect against concurrent writers, which could cause -	 * livelocks in fsync_buffers_list(). -	 */ -	mutex_lock(&mapping->host->i_mutex); -	err = file->f_op->fsync(file, datasync); -	if (!ret) -		ret = err; -	mutex_unlock(&mapping->host->i_mutex); - -out: -	return ret; +	if (!file->f_op || !file->f_op->fsync) +		return -EINVAL; +	return file->f_op->fsync(file, start, end, datasync);  }  EXPORT_SYMBOL(vfs_fsync_range);  |