From: Dave Chinner <david@fromorbit.com>
To: Peng Tao <tao.peng@primarydata.com>
Cc: linux-fsdevel@vger.kernel.org,
Trond Myklebust <trond.myklebust@primarydata.com>,
Anna Schumaker <anna.schumaker@netapp.com>,
Christoph Hellwig <hch@infradead.org>, Zach Brown <zab@zabbo.net>,
Darren Hart <dvhart@linux.intel.com>,
bfields@fieldses.org, Jeff Layton <jeff.layton@primarydata.com>,
linux-nfs@vger.kernel.org,
"Darrick J. Wong" <darrick.wong@oracle.com>,
linux-btrfs@vger.kernel.org
Subject: Re: [PATCH-RFC-RESEND 1/9] vfs: pull btrfs clone API to vfs layer
Date: Thu, 27 Aug 2015 08:52:32 +1000 [thread overview]
Message-ID: <20150826225232.GX714@dastard> (raw)
In-Reply-To: <1440577010-122867-2-git-send-email-tao.peng@primarydata.com>
On Wed, Aug 26, 2015 at 04:16:42PM +0800, Peng Tao wrote:
> Now that a few file systems are adding clone functionality, namingly
> btrfs, NFS (later in the series) and XFS
> (ttp://oss.sgi.com/archives/xfs/2015-06/msg00407.html), it makes sense
> to pull the ioctl to common code.
>
> Add vfs_file_clone_range() helper and .clone_range file operation interface
> to allow underlying filesystems to clone between regular files.
>
> The change in do_vfs_ioctl() is defered to next patch where btrfs
> .clone_range is added, just so that we don't break btrfs CLONE ioctl
> with this patch.
>
> Signed-off-by: Peng Tao <tao.peng@primarydata.com>
> ---
> fs/ioctl.c | 24 ++++++++++++++++++++++++
> fs/read_write.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
> include/linux/fs.h | 4 ++++
> include/uapi/linux/fs.h | 9 +++++++++
> 4 files changed, 82 insertions(+)
.....
> +int vfs_file_clone_range(struct file *src_file, struct file *dst_file,
> + loff_t off, size_t len, loff_t dstoff)
> +{
> + struct inode *src_ino;
> + struct inode *dst_ino;
> + ssize_t ret;
> +
> + if (!(src_file->f_mode & FMODE_READ) ||
> + !(dst_file->f_mode & FMODE_WRITE) ||
> + (dst_file->f_flags & O_APPEND) ||
> + !src_file->f_op || !src_file->f_op->clone_range)
> + return -EINVAL;
> +
> + src_ino = file_inode(src_file);
> + dst_ino = file_inode(dst_file);
> +
> + if (S_ISDIR(src_ino->i_mode) || S_ISDIR(dst_ino->i_mode))
> + return -EISDIR;
Whacky whitespace.
Also, shouldn't this call be restricted to S_ISREG() inodes? This
only checks for directories...
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
WARNING: multiple messages have this Message-ID (diff)
From: Dave Chinner <david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org>
To: Peng Tao <tao.peng-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>
Cc: linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Trond Myklebust
<trond.myklebust-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>,
Anna Schumaker
<anna.schumaker-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org>,
Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Zach Brown <zab-ugsP4Wv/S6ZeoWH0uzbU5w@public.gmane.org>,
Darren Hart <dvhart-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org,
Jeff Layton <jeff.layton-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>,
linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
"Darrick J. Wong"
<darrick.wong-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>,
linux-btrfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH-RFC-RESEND 1/9] vfs: pull btrfs clone API to vfs layer
Date: Thu, 27 Aug 2015 08:52:32 +1000 [thread overview]
Message-ID: <20150826225232.GX714@dastard> (raw)
In-Reply-To: <1440577010-122867-2-git-send-email-tao.peng-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>
On Wed, Aug 26, 2015 at 04:16:42PM +0800, Peng Tao wrote:
> Now that a few file systems are adding clone functionality, namingly
> btrfs, NFS (later in the series) and XFS
> (ttp://oss.sgi.com/archives/xfs/2015-06/msg00407.html), it makes sense
> to pull the ioctl to common code.
>
> Add vfs_file_clone_range() helper and .clone_range file operation interface
> to allow underlying filesystems to clone between regular files.
>
> The change in do_vfs_ioctl() is defered to next patch where btrfs
> .clone_range is added, just so that we don't break btrfs CLONE ioctl
> with this patch.
>
> Signed-off-by: Peng Tao <tao.peng-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>
> ---
> fs/ioctl.c | 24 ++++++++++++++++++++++++
> fs/read_write.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
> include/linux/fs.h | 4 ++++
> include/uapi/linux/fs.h | 9 +++++++++
> 4 files changed, 82 insertions(+)
.....
> +int vfs_file_clone_range(struct file *src_file, struct file *dst_file,
> + loff_t off, size_t len, loff_t dstoff)
> +{
> + struct inode *src_ino;
> + struct inode *dst_ino;
> + ssize_t ret;
> +
> + if (!(src_file->f_mode & FMODE_READ) ||
> + !(dst_file->f_mode & FMODE_WRITE) ||
> + (dst_file->f_flags & O_APPEND) ||
> + !src_file->f_op || !src_file->f_op->clone_range)
> + return -EINVAL;
> +
> + src_ino = file_inode(src_file);
> + dst_ino = file_inode(dst_file);
> +
> + if (S_ISDIR(src_ino->i_mode) || S_ISDIR(dst_ino->i_mode))
> + return -EISDIR;
Whacky whitespace.
Also, shouldn't this call be restricted to S_ISREG() inodes? This
only checks for directories...
Cheers,
Dave.
--
Dave Chinner
david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-08-26 22:52 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-26 8:16 [PATCH-RFC-RESEND 0/9] NFS/NFSD: add NFSv42 CLONE operation support Peng Tao
2015-08-26 8:16 ` [PATCH-RFC-RESEND 1/9] vfs: pull btrfs clone API to vfs layer Peng Tao
2015-08-26 13:37 ` David Sterba
2015-08-26 13:37 ` David Sterba
2015-08-26 16:21 ` Darrick J. Wong
2015-08-26 16:36 ` David Sterba
2015-08-26 16:36 ` David Sterba
2015-08-28 3:09 ` Peng Tao
2015-08-28 3:09 ` Peng Tao
2015-08-26 22:52 ` Dave Chinner [this message]
2015-08-26 22:52 ` Dave Chinner
2015-08-27 6:23 ` Peng Tao
2015-08-27 6:23 ` Peng Tao
2015-08-26 8:16 ` [PATCH-RFC-RESEND 2/9] vfs/btrfs: add .clone_range file operation Peng Tao
2015-08-26 13:17 ` Christoph Hellwig
2015-08-27 6:15 ` Peng Tao
2015-08-26 8:16 ` [PATCH-RFC-RESEND 3/9] nfs42: add CLONE xdr functions Peng Tao
2015-08-26 8:16 ` [PATCH-RFC-RESEND 4/9] nfs42: add CLONE proc functions Peng Tao
2015-08-26 8:16 ` [PATCH-RFC-RESEND 5/9] nfs42: add .copy_range file operation Peng Tao
2015-08-26 22:48 ` Dave Chinner
2015-08-26 22:48 ` Dave Chinner
2015-08-27 6:17 ` Peng Tao
2015-08-27 6:17 ` Peng Tao
2015-08-26 8:16 ` [PATCH-RFC-RESEND 6/9] nfs: get clone_blksize when probing fsinfo Peng Tao
2015-08-26 8:16 ` [PATCH-RFC-RESEND 7/9] nfs42: respect clone_blksize Peng Tao
2015-08-26 8:16 ` [PATCH-RFC-RESEND 8/9] nfsd: Pass filehandle to nfs4_preprocess_stateid_op() Peng Tao
2015-08-26 8:16 ` [PATCH-RFC-RESEND 9/9] NFSD: Implement the CLONE call Peng Tao
2015-08-26 8:16 ` Peng Tao
2015-08-26 13:11 ` [PATCH-RFC-RESEND 0/9] NFS/NFSD: add NFSv42 CLONE operation support Christoph Hellwig
2015-08-26 13:11 ` Christoph Hellwig
2015-08-27 6:24 ` Peng Tao
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=20150826225232.GX714@dastard \
--to=david@fromorbit.com \
--cc=anna.schumaker@netapp.com \
--cc=bfields@fieldses.org \
--cc=darrick.wong@oracle.com \
--cc=dvhart@linux.intel.com \
--cc=hch@infradead.org \
--cc=jeff.layton@primarydata.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=tao.peng@primarydata.com \
--cc=trond.myklebust@primarydata.com \
--cc=zab@zabbo.net \
/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.