OSDN Git Service

vfs: make remap_file_range functions take and return bytes completed
[uclinux-h8/linux.git] / fs / ocfs2 / file.c
index 255f758..fbaeafe 100644 (file)
@@ -2527,29 +2527,18 @@ out:
        return offset;
 }
 
-static int ocfs2_file_clone_range(struct file *file_in,
-                                 loff_t pos_in,
-                                 struct file *file_out,
-                                 loff_t pos_out,
-                                 u64 len)
+static loff_t ocfs2_remap_file_range(struct file *file_in, loff_t pos_in,
+                                    struct file *file_out, loff_t pos_out,
+                                    loff_t len, unsigned int remap_flags)
 {
-       return ocfs2_reflink_remap_range(file_in, pos_in, file_out, pos_out,
-                                        len, false);
-}
+       int ret;
 
-static ssize_t ocfs2_file_dedupe_range(struct file *src_file,
-                                      u64 loff,
-                                      u64 len,
-                                      struct file *dst_file,
-                                      u64 dst_loff)
-{
-       int error;
+       if (remap_flags & ~(REMAP_FILE_DEDUP | REMAP_FILE_ADVISORY))
+               return -EINVAL;
 
-       error = ocfs2_reflink_remap_range(src_file, loff, dst_file, dst_loff,
-                                         len, true);
-       if (error)
-               return error;
-       return len;
+       ret = ocfs2_reflink_remap_range(file_in, pos_in, file_out, pos_out,
+                                       len, remap_flags);
+       return ret < 0 ? ret : len;
 }
 
 const struct inode_operations ocfs2_file_iops = {
@@ -2591,8 +2580,7 @@ const struct file_operations ocfs2_fops = {
        .splice_read    = generic_file_splice_read,
        .splice_write   = iter_file_splice_write,
        .fallocate      = ocfs2_fallocate,
-       .clone_file_range = ocfs2_file_clone_range,
-       .dedupe_file_range = ocfs2_file_dedupe_range,
+       .remap_file_range = ocfs2_remap_file_range,
 };
 
 const struct file_operations ocfs2_dops = {
@@ -2638,8 +2626,7 @@ const struct file_operations ocfs2_fops_no_plocks = {
        .splice_read    = generic_file_splice_read,
        .splice_write   = iter_file_splice_write,
        .fallocate      = ocfs2_fallocate,
-       .clone_file_range = ocfs2_file_clone_range,
-       .dedupe_file_range = ocfs2_file_dedupe_range,
+       .remap_file_range = ocfs2_remap_file_range,
 };
 
 const struct file_operations ocfs2_dops_no_plocks = {