From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Dave Chinner <david@fromorbit.com>
Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 1/2] vfs: vfs_dedupe_file_range() doesn't return EOPNOTSUPP
Date: Thu, 8 Nov 2018 22:47:13 -0800 [thread overview]
Message-ID: <20181109064713.GD15721@magnolia> (raw)
In-Reply-To: <20181108230349.GC15721@magnolia>
On Thu, Nov 08, 2018 at 03:03:49PM -0800, Darrick J. Wong wrote:
> On Fri, Nov 09, 2018 at 09:19:08AM +1100, Dave Chinner wrote:
> > From: Dave Chinner <dchinner@redhat.com>
> >
> > It returns EINVAL when the operation is not supported by the
> > filesystem. Fix it to return EOPNOTSUPP to be consistent with
> > the man page and clone_file_range().
> >
> > Clean up the inconsistent error return handling while I'm there.
> > (I know, lipstick on a pig, but every little bit helps...)
> >
> > Signed-off-by: Dave Chinner <dchinner@redhat.com>
>
> Looks ok, would rather just shred this ioctl and make a better one. :P
>
> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
>
> --D
>
> > ---
> > fs/read_write.c | 15 +++++++--------
> > 1 file changed, 7 insertions(+), 8 deletions(-)
> >
> > diff --git a/fs/read_write.c b/fs/read_write.c
> > index bfcb4ced5664..aa43224bcec6 100644
> > --- a/fs/read_write.c
> > +++ b/fs/read_write.c
> > @@ -2094,17 +2094,18 @@ int vfs_dedupe_file_range(struct file *file, struct file_dedupe_range *same)
> > off = same->src_offset;
> > len = same->src_length;
> >
> > - ret = -EISDIR;
> > + if (!file->f_op->remap_file_range)
> > + return -EOPNOTSUPP;
Minor downside: this causes regressions in generic/158 because
directories and device files don't have a ->remap_file_range
implementation. I think it can be solved by moving this check after the
!S_ISREG check below.
--D
> > +
> > if (S_ISDIR(src->i_mode))
> > - goto out;
> > + return -EISDIR;
> >
> > - ret = -EINVAL;
> > if (!S_ISREG(src->i_mode))
> > - goto out;
> > + return -EINVAL;
> >
> > ret = remap_verify_area(file, off, len, false);
> > if (ret < 0)
> > - goto out;
> > + return ret;
> > ret = 0;
> >
> > if (off + len > i_size_read(src))
> > @@ -2147,10 +2148,8 @@ int vfs_dedupe_file_range(struct file *file, struct file_dedupe_range *same)
> > fdput(dst_fd);
> > next_loop:
> > if (fatal_signal_pending(current))
> > - goto out;
> > + break;
> > }
> > -
> > -out:
> > return ret;
> > }
> > EXPORT_SYMBOL(vfs_dedupe_file_range);
> > --
> > 2.19.1
> >
next prev parent reply other threads:[~2018-11-09 16:26 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-08 22:19 [PATCH 0/2]: dedupe/copy_file_range fixes Dave Chinner
2018-11-08 22:19 ` [PATCH 1/2] vfs: vfs_dedupe_file_range() doesn't return EOPNOTSUPP Dave Chinner
2018-11-08 23:03 ` Darrick J. Wong
2018-11-09 6:47 ` Darrick J. Wong [this message]
2018-11-16 5:33 ` Dave Chinner
2018-11-08 22:19 ` [PATCH 2/2] iomap: dio data corruption and spurious errors when pipes fill Dave Chinner
2018-11-13 16:25 ` Darrick J. Wong
2018-11-15 10:15 ` Christoph Hellwig
2018-11-09 0:54 ` [PATCH 3/2] splice: increase pipe size in splice_direct_to_actor() Dave Chinner
2018-11-13 16:22 ` Darrick J. Wong
2018-11-13 21:41 ` Dave Chinner
2018-11-15 10:17 ` Christoph Hellwig
2018-11-16 5:42 ` Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181109064713.GD15721@magnolia \
--to=darrick.wong@oracle.com \
--cc=david@fromorbit.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.