Message ID | 20190529174318.22424-12-amir73il@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fixes for major copy_file_range() issues | expand |
Hi Miklos, Could we get an ACK on this patch. It is a prerequisite for merging the cross-device copy_file_range work. It depends on a new helper introduced here: https://lore.kernel.org/linux-fsdevel/CAOQ4uxjbcSWX1hUcuXbn8hFH3QYB+5bAC9Z1yCwJdR=T-GGtCg@mail.gmail.com/T/#m1569878c41f39fac3aadb3832a30659c323b582a Thanks, Amir, On Wed, May 29, 2019 at 8:43 PM Amir Goldstein <amir73il@gmail.com> wrote: > > Like ->write_iter(), we update mtime and strip setuid of dst file before > copy and like ->read_iter(), we update atime of src file after copy. > > Signed-off-by: Amir Goldstein <amir73il@gmail.com> > --- > fs/fuse/file.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/fs/fuse/file.c b/fs/fuse/file.c > index e03901ae729b..7f33d68f66d9 100644 > --- a/fs/fuse/file.c > +++ b/fs/fuse/file.c > @@ -3128,6 +3128,10 @@ static ssize_t __fuse_copy_file_range(struct file *file_in, loff_t pos_in, > > inode_lock(inode_out); > > + err = file_modified(file_out); > + if (err) > + goto out; > + > if (fc->writeback_cache) { > err = filemap_write_and_wait_range(inode_out->i_mapping, > pos_out, pos_out + len); > @@ -3169,6 +3173,7 @@ static ssize_t __fuse_copy_file_range(struct file *file_in, loff_t pos_in, > clear_bit(FUSE_I_SIZE_UNSTABLE, &fi_out->state); > > inode_unlock(inode_out); > + file_accessed(file_in); > > return err; > } > -- > 2.17.1 >
On Wed, May 29, 2019 at 9:38 PM Amir Goldstein <amir73il@gmail.com> wrote: > > Hi Miklos, > > Could we get an ACK on this patch. > It is a prerequisite for merging the cross-device copy_file_range work. > > It depends on a new helper introduced here: > https://lore.kernel.org/linux-fsdevel/CAOQ4uxjbcSWX1hUcuXbn8hFH3QYB+5bAC9Z1yCwJdR=T-GGtCg@mail.gmail.com/T/#m1569878c41f39fac3aadb3832a30659c323b582a That likely is actually an unlikely. Otherwise ACK. Thanks, Miklos
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index e03901ae729b..7f33d68f66d9 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -3128,6 +3128,10 @@ static ssize_t __fuse_copy_file_range(struct file *file_in, loff_t pos_in, inode_lock(inode_out); + err = file_modified(file_out); + if (err) + goto out; + if (fc->writeback_cache) { err = filemap_write_and_wait_range(inode_out->i_mapping, pos_out, pos_out + len); @@ -3169,6 +3173,7 @@ static ssize_t __fuse_copy_file_range(struct file *file_in, loff_t pos_in, clear_bit(FUSE_I_SIZE_UNSTABLE, &fi_out->state); inode_unlock(inode_out); + file_accessed(file_in); return err; }
Like ->write_iter(), we update mtime and strip setuid of dst file before copy and like ->read_iter(), we update atime of src file after copy. Signed-off-by: Amir Goldstein <amir73il@gmail.com> --- fs/fuse/file.c | 5 +++++ 1 file changed, 5 insertions(+)