mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 11:16:11 +00:00
fold do_sync_file_range into sys_sync_file_range
We recently go rid of all callers of do_sync_file_range as they're better served with vfs_fsync or the filemap_write_and_wait. Now that do_sync_file_range is down to a single caller fold it into it so that people don't start using it again accidentally. While at it also switch it from using __filemap_fdatawrite_range(..., WB_SYNC_ALL) to the more clear filemap_fdatawrite_range(). Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
76b7e0058d
commit
7a0ad10c36
2 changed files with 23 additions and 40 deletions
59
fs/sync.c
59
fs/sync.c
|
@ -355,6 +355,7 @@ SYSCALL_DEFINE(sync_file_range)(int fd, loff_t offset, loff_t nbytes,
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct file *file;
|
struct file *file;
|
||||||
|
struct address_space *mapping;
|
||||||
loff_t endbyte; /* inclusive */
|
loff_t endbyte; /* inclusive */
|
||||||
int fput_needed;
|
int fput_needed;
|
||||||
umode_t i_mode;
|
umode_t i_mode;
|
||||||
|
@ -405,7 +406,28 @@ SYSCALL_DEFINE(sync_file_range)(int fd, loff_t offset, loff_t nbytes,
|
||||||
!S_ISLNK(i_mode))
|
!S_ISLNK(i_mode))
|
||||||
goto out_put;
|
goto out_put;
|
||||||
|
|
||||||
ret = do_sync_mapping_range(file->f_mapping, offset, endbyte, flags);
|
mapping = file->f_mapping;
|
||||||
|
if (!mapping) {
|
||||||
|
ret = -EINVAL;
|
||||||
|
goto out_put;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
if (flags & SYNC_FILE_RANGE_WAIT_BEFORE) {
|
||||||
|
ret = filemap_fdatawait_range(mapping, offset, endbyte);
|
||||||
|
if (ret < 0)
|
||||||
|
goto out_put;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & SYNC_FILE_RANGE_WRITE) {
|
||||||
|
ret = filemap_fdatawrite_range(mapping, offset, endbyte);
|
||||||
|
if (ret < 0)
|
||||||
|
goto out_put;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & SYNC_FILE_RANGE_WAIT_AFTER)
|
||||||
|
ret = filemap_fdatawait_range(mapping, offset, endbyte);
|
||||||
|
|
||||||
out_put:
|
out_put:
|
||||||
fput_light(file, fput_needed);
|
fput_light(file, fput_needed);
|
||||||
out:
|
out:
|
||||||
|
@ -437,38 +459,3 @@ asmlinkage long SyS_sync_file_range2(long fd, long flags,
|
||||||
}
|
}
|
||||||
SYSCALL_ALIAS(sys_sync_file_range2, SyS_sync_file_range2);
|
SYSCALL_ALIAS(sys_sync_file_range2, SyS_sync_file_range2);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* `endbyte' is inclusive
|
|
||||||
*/
|
|
||||||
int do_sync_mapping_range(struct address_space *mapping, loff_t offset,
|
|
||||||
loff_t endbyte, unsigned int flags)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (!mapping) {
|
|
||||||
ret = -EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
if (flags & SYNC_FILE_RANGE_WAIT_BEFORE) {
|
|
||||||
ret = filemap_fdatawait_range(mapping, offset, endbyte);
|
|
||||||
if (ret < 0)
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & SYNC_FILE_RANGE_WRITE) {
|
|
||||||
ret = __filemap_fdatawrite_range(mapping, offset, endbyte,
|
|
||||||
WB_SYNC_ALL);
|
|
||||||
if (ret < 0)
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & SYNC_FILE_RANGE_WAIT_AFTER) {
|
|
||||||
ret = filemap_fdatawait_range(mapping, offset, endbyte);
|
|
||||||
}
|
|
||||||
out:
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(do_sync_mapping_range);
|
|
||||||
|
|
|
@ -1095,10 +1095,6 @@ struct file_lock {
|
||||||
|
|
||||||
extern void send_sigio(struct fown_struct *fown, int fd, int band);
|
extern void send_sigio(struct fown_struct *fown, int fd, int band);
|
||||||
|
|
||||||
/* fs/sync.c */
|
|
||||||
extern int do_sync_mapping_range(struct address_space *mapping, loff_t offset,
|
|
||||||
loff_t endbyte, unsigned int flags);
|
|
||||||
|
|
||||||
#ifdef CONFIG_FILE_LOCKING
|
#ifdef CONFIG_FILE_LOCKING
|
||||||
extern int fcntl_getlk(struct file *, struct flock __user *);
|
extern int fcntl_getlk(struct file *, struct flock __user *);
|
||||||
extern int fcntl_setlk(unsigned int, struct file *, unsigned int,
|
extern int fcntl_setlk(unsigned int, struct file *, unsigned int,
|
||||||
|
|
Loading…
Reference in a new issue