From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: Suresh Jayaraman <sjayaraman@suse.de>
Cc: Masahiro Tamori <masahiro.tamori@gmail.com>,
Mathieu Desnoyers <compudj@krystal.dyndns.org>,
linux-nfs@vger.kernel.org, ltt-dev@lists.casi.polymtl.ca,
LKML <linux-kernel@vger.kernel.org>,
linux-embedded@vger.kernel.org,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: Re: [ltt-dev] [PATCH] nfs: add support for splice writes
Date: Mon, 20 Apr 2009 10:21:14 -0400 [thread overview]
Message-ID: <1240237274.13636.9.camel@heimdal.trondhjem.org> (raw)
In-Reply-To: <49EC6CB3.8080800@suse.de>
On Mon, 2009-04-20 at 18:08 +0530, Suresh Jayaraman wrote:
> Trond Myklebust wrote:
> > On Mon, 2009-04-20 at 11:09 +0530, Suresh Jayaraman wrote:
> >> Hi Trond,
> >>
> >> Do you think this patch is OK? Can this be considered for merging?
> >>
> >> Thanks,
> >>
> >>>>>> diff --git a/fs/nfs/file.c b/fs/nfs/file.c
> >>>>>> index 90f292b..13d6a00 100644
> >>>>>> --- a/fs/nfs/file.c
> >>>>>> +++ b/fs/nfs/file.c
> >>>>>> @@ -47,6 +47,9 @@ static ssize_t nfs_file_splice_read(struct file *filp, loff_t *ppos,
> >>>>>> size_t count, unsigned int flags);
> >>>>>> static ssize_t nfs_file_read(struct kiocb *, const struct iovec *iov,
> >>>>>> unsigned long nr_segs, loff_t pos);
> >>>>>> +static ssize_t nfs_file_splice_write(struct pipe_inode_info *pipe,
> >>>>>> + struct file *filp, loff_t *ppos,
> >>>>>> + size_t count, unsigned int flags);
> >>>>>> static ssize_t nfs_file_write(struct kiocb *, const struct iovec *iov,
> >>>>>> unsigned long nr_segs, loff_t pos);
> >>>>>> static int nfs_file_flush(struct file *, fl_owner_t id);
> >>>>>> @@ -76,6 +79,7 @@ const struct file_operations nfs_file_operations = {
> >>>>>> .lock = nfs_lock,
> >>>>>> .flock = nfs_flock,
> >>>>>> .splice_read = nfs_file_splice_read,
> >>>>>> + .splice_write = nfs_file_splice_write,
> >>>>>> .check_flags = nfs_check_flags,
> >>>>>> .setlease = nfs_setlease,
> >>>>>> };
> >>>>>> @@ -550,6 +554,26 @@ out_swapfile:
> >>>>>> goto out;
> >>>>>> }
> >>>>>>
> >>>>>> +static ssize_t nfs_file_splice_write(struct pipe_inode_info *pipe,
> >>>>>> + struct file *filp, loff_t *ppos,
> >>>>>> + size_t count, unsigned int flags)
> >>>>>> +{
> >>>>>> + struct dentry *dentry = filp->f_path.dentry;
> >>>>>> + struct inode *inode = dentry->d_inode;
> >>>>>> +
> >>>>>> + dprintk("NFS splice_write(%s/%s, %lu@%Lu)\n",
> >>>>>> + dentry->d_parent->d_name.name, dentry->d_name.name,
> >>>>>> + (unsigned long) count, (unsigned long long) *ppos);
> >>>>>> +
> >>>>>> + if (IS_SWAPFILE(inode)) {
> >>>>>> + printk(KERN_INFO "NFS: attempt to write to active swap"
> >>>>>> + "file!\n");
> >>>>>> + return -EBUSY;
> >>>>>> + }
> >
> > I don't know that we really need this. We should sweep through the NFS
> > code and kill all those IS_SWAPFILE() thingys. Or at least #define
> > IS_SWAPFILE(a) (0)
> > ...
>
> Hmm.. I'm not sure whether we should kill them now. I think originally,
> these were added keeping in mind the future NFS swap support. Given that
> the recent work from Peterz Zilstra on "Swap over NFS" and multiple
> iterations/review on the same, I think those patches will eventually get
> merged sooner or later. Perhaps, it's a good idea to #define
> IS_SWAPFILE(a) 0 than killing them entirely..?
Why are they needed at all? AFAICS, other filesystems check IS_SWAPFILE
when truncating a file, but don't litter their code with all these weird
checks for writing, reading, etc.
It's not as if these checks can stop a determined privileged person from
writing to the swapfile anyway. All they have to do is go to another
client or write directly to the file on the server...
Trond
next prev parent reply other threads:[~2009-04-20 14:21 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-02 6:21 [PATCH] nfs: add support for splice writes Suresh Jayaraman
[not found] ` <49D45974.2060202-l3A5Bk7waGM@public.gmane.org>
2009-04-02 6:29 ` Mathieu Desnoyers
2009-04-02 6:32 ` Mathieu Desnoyers
2009-04-02 6:42 ` Suresh Jayaraman
2009-04-02 12:42 ` [ltt-dev] " Masahiro Tamori
2009-04-20 5:39 ` Suresh Jayaraman
2009-04-20 12:23 ` Trond Myklebust
[not found] ` <1240230224.8073.6.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2009-04-20 12:38 ` Suresh Jayaraman
2009-04-20 14:21 ` Trond Myklebust [this message]
2009-04-20 15:47 ` Suresh Jayaraman
2009-04-21 14:48 ` Christoph Hellwig
[not found] ` <20090421144810.GA7036-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2009-04-21 17:35 ` Trond Myklebust
[not found] ` <1240335302.5390.20.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2009-04-21 18:48 ` Chuck Lever
2009-04-22 8:33 ` Suresh Jayaraman
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=1240237274.13636.9.camel@heimdal.trondhjem.org \
--to=trond.myklebust@fys.uio.no \
--cc=a.p.zijlstra@chello.nl \
--cc=compudj@krystal.dyndns.org \
--cc=linux-embedded@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=ltt-dev@lists.casi.polymtl.ca \
--cc=masahiro.tamori@gmail.com \
--cc=sjayaraman@suse.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).