mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
vfs: combine the clone and dedupe into a single remap_file_range
Combine the clone_file_range and dedupe_file_range operations into a single remap_file_range file operation dispatch since they're fundamentally the same operation. The differences between the two can be made in the prep functions. Signed-off-by: Darrick J. Wong <[email protected]> Reviewed-by: Amir Goldstein <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Dave Chinner <[email protected]>
This commit is contained in:
parent
6095028b45
commit
2e5dfc99f2
12 changed files with 127 additions and 106 deletions
|
|
@ -622,3 +622,8 @@ in your dentry operations instead.
|
|||
alloc_file_clone(file, flags, ops) does not affect any caller's references.
|
||||
On success you get a new struct file sharing the mount/dentry with the
|
||||
original, on failure - ERR_PTR().
|
||||
--
|
||||
[mandatory]
|
||||
->clone_file_range() and ->dedupe_file_range have been replaced with
|
||||
->remap_file_range(). See Documentation/filesystems/vfs.txt for more
|
||||
information.
|
||||
|
|
|
|||
|
|
@ -883,8 +883,9 @@ struct file_operations {
|
|||
unsigned (*mmap_capabilities)(struct file *);
|
||||
#endif
|
||||
ssize_t (*copy_file_range)(struct file *, loff_t, struct file *, loff_t, size_t, unsigned int);
|
||||
int (*clone_file_range)(struct file *, loff_t, struct file *, loff_t, u64);
|
||||
int (*dedupe_file_range)(struct file *, loff_t, struct file *, loff_t, u64);
|
||||
int (*remap_file_range)(struct file *file_in, loff_t pos_in,
|
||||
struct file *file_out, loff_t pos_out,
|
||||
u64 len, unsigned int remap_flags);
|
||||
int (*fadvise)(struct file *, loff_t, loff_t, int);
|
||||
};
|
||||
|
||||
|
|
@ -960,11 +961,16 @@ otherwise noted.
|
|||
|
||||
copy_file_range: called by the copy_file_range(2) system call.
|
||||
|
||||
clone_file_range: called by the ioctl(2) system call for FICLONERANGE and
|
||||
FICLONE commands.
|
||||
|
||||
dedupe_file_range: called by the ioctl(2) system call for FIDEDUPERANGE
|
||||
command.
|
||||
remap_file_range: called by the ioctl(2) system call for FICLONERANGE and
|
||||
FICLONE and FIDEDUPERANGE commands to remap file ranges. An
|
||||
implementation should remap len bytes at pos_in of the source file into
|
||||
the dest file at pos_out. Implementations must handle callers passing
|
||||
in len == 0; this means "remap to the end of the source file". The
|
||||
return value should be zero if all bytes were remapped, or the usual
|
||||
negative error code if the remapping did not succeed completely.
|
||||
The remap_flags parameter accepts REMAP_FILE_* flags. If
|
||||
REMAP_FILE_DEDUP is set then the implementation must only remap if the
|
||||
requested file ranges have identical contents.
|
||||
|
||||
fadvise: possibly called by the fadvise64() system call.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue