Message ID | 20181119211742.8824-6-david@fromorbit.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | iomap: data corruption fixes and more | expand |
On Tue, Nov 20, 2018 at 08:17:42AM +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> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Looks good. And I really like the removal of the pointless goto out uses.. Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/fs/read_write.c b/fs/read_write.c index bfcb4ced5664..4dae0399c75a 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 (S_ISDIR(src->i_mode)) - goto out; + return -EISDIR; - ret = -EINVAL; if (!S_ISREG(src->i_mode)) - goto out; + return -EINVAL; + + if (!file->f_op->remap_file_range) + return -EOPNOTSUPP; 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);