Message ID | 20160717062427.56718-3-jaegeuk@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, Jul 16, 2016 at 11:24:27PM -0700, Jaegeuk Kim wrote: > This patch implements clone_file_range in f2fs. [...] > +int f2fs_clone_file_range(struct file *file_in, loff_t pos_in, > + struct file *file_out, loff_t pos_out, u64 len) > +{ > + return f2fs_clone_files(file_in, pos_in, file_out, pos_out, len); > +} > + Falling back from copy to clone should be done in the VFS. I look into implementing the fallback, and the code is trivial, but we don't seem to have any useful coverage for copy_file_range yet, so I didn't dare to add it yet. How did you test copy and clone in f2fs? And how did you handle the difference in corner cases (e.g. the lacking 0 special case in copy)? -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Jul 18, 2016 at 08:47:36PM -0700, Christoph Hellwig wrote: > On Sat, Jul 16, 2016 at 11:24:27PM -0700, Jaegeuk Kim wrote: > > This patch implements clone_file_range in f2fs. > > [...] > > > +int f2fs_clone_file_range(struct file *file_in, loff_t pos_in, > > + struct file *file_out, loff_t pos_out, u64 len) > > +{ > > + return f2fs_clone_files(file_in, pos_in, file_out, pos_out, len); > > +} > > + > > Falling back from copy to clone should be done in the VFS. I look into > implementing the fallback, and the code is trivial, but we don't seem > to have any useful coverage for copy_file_range yet, so I didn't dare > to add it yet. How did you test copy and clone in f2fs? And how did > you handle the difference in corner cases (e.g. the lacking 0 special > case in copy)? Frankly speaking, I confused the behaviors without being aware of corner cases. And thus, I dropped the patches already. Instead, I realized that what I did was moving a range of blocks from one file to another file. So, I've been testing a new ioctl, F2FS_IOC_MOVE_RANGE. In terms of coverage, I just did some unit tests only. Thanks, -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index c2b7e35..37480f3 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -2312,6 +2312,12 @@ ssize_t f2fs_copy_file_range(struct file *file_in, loff_t pos_in, return ret; } +int f2fs_clone_file_range(struct file *file_in, loff_t pos_in, + struct file *file_out, loff_t pos_out, u64 len) +{ + return f2fs_clone_files(file_in, pos_in, file_out, pos_out, len); +} + #ifdef CONFIG_COMPAT long f2fs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { @@ -2359,6 +2365,7 @@ const struct file_operations f2fs_file_operations = { .compat_ioctl = f2fs_compat_ioctl, #endif .copy_file_range = f2fs_copy_file_range, + .clone_file_range = f2fs_clone_file_range, .splice_read = generic_file_splice_read, .splice_write = iter_file_splice_write, };
This patch implements clone_file_range in f2fs. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> --- fs/f2fs/file.c | 7 +++++++ 1 file changed, 7 insertions(+)