Message ID | 1441397823-1203-5-git-send-email-Anna.Schumaker@Netapp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Sep 04, 2015 at 04:16:58PM -0400, Anna Schumaker wrote: > We need to verify that both the source and the destination files are > part of the same filesystem, otherwise we can't create a reflink. > > Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> > --- > fs/btrfs/ioctl.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c > index 62ae286..9c0c955 100644 > --- a/fs/btrfs/ioctl.c > +++ b/fs/btrfs/ioctl.c > @@ -3856,6 +3856,10 @@ ssize_t btrfs_copy_file_range(struct file *file_in, loff_t pos_in, > { > ssize_t ret; > > + if (inode_in->i_sb != inode_out->i_sb || > + file_in->f_path.mnt != file_out->f_path.mnt) > + return -EXDEV; The same check exists in btrfs_clone_files (added in the previous patch), what's the reason to add it here again? > + > ret = btrfs_clone_files(file_out, file_in, pos_in, len, pos_out); -- 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 09/09/2015 05:18 AM, David Sterba wrote: > On Fri, Sep 04, 2015 at 04:16:58PM -0400, Anna Schumaker wrote: >> We need to verify that both the source and the destination files are >> part of the same filesystem, otherwise we can't create a reflink. >> >> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> >> --- >> fs/btrfs/ioctl.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c >> index 62ae286..9c0c955 100644 >> --- a/fs/btrfs/ioctl.c >> +++ b/fs/btrfs/ioctl.c >> @@ -3856,6 +3856,10 @@ ssize_t btrfs_copy_file_range(struct file *file_in, loff_t pos_in, >> { >> ssize_t ret; >> >> + if (inode_in->i_sb != inode_out->i_sb || >> + file_in->f_path.mnt != file_out->f_path.mnt) >> + return -EXDEV; > > The same check exists in btrfs_clone_files (added in the previous > patch), what's the reason to add it here again? To be really, really sure that it's not a cross-device copy? :) In reality, it was an oversight and I'll drop the patch. Thanks for letting me know! Anna > >> + >> ret = btrfs_clone_files(file_out, file_in, pos_in, len, pos_out); -- 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/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 62ae286..9c0c955 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -3856,6 +3856,10 @@ ssize_t btrfs_copy_file_range(struct file *file_in, loff_t pos_in, { ssize_t ret; + if (inode_in->i_sb != inode_out->i_sb || + file_in->f_path.mnt != file_out->f_path.mnt) + return -EXDEV; + ret = btrfs_clone_files(file_out, file_in, pos_in, len, pos_out); if (ret == 0) ret = len;
We need to verify that both the source and the destination files are part of the same filesystem, otherwise we can't create a reflink. Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> --- fs/btrfs/ioctl.c | 4 ++++ 1 file changed, 4 insertions(+)