lkml.org 
[lkml]   [2011]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[110/272] NFS: Fix NFSv3 exclusive open semantics
    2.6.37-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Trond Myklebust <Trond.Myklebust@netapp.com>

    commit 8a0eebf66e3b1deae036553ba641a9c2bdbae678 upstream.

    Commit c0204fd2b8fe047b18b67e07e1bf2a03691240cd (NFS: Clean up
    nfs4_proc_create()) broke NFSv3 exclusive open by removing the code
    that passes the O_EXCL flag down to nfs3_proc_create(). This patch
    reverts that offending hunk from the original commit.

    Reported-by: Nick Bowler <nbowler@elliptictech.com>
    Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
    Tested-by: Nick Bowler <nbowler@elliptictech.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    fs/nfs/dir.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    --- a/fs/nfs/dir.c
    +++ b/fs/nfs/dir.c
    @@ -1577,6 +1577,7 @@ static int nfs_create(struct inode *dir,
    {
    struct iattr attr;
    int error;
    + int open_flags = 0;

    dfprintk(VFS, "NFS: create(%s/%ld), %s\n",
    dir->i_sb->s_id, dir->i_ino, dentry->d_name.name);
    @@ -1584,7 +1585,10 @@ static int nfs_create(struct inode *dir,
    attr.ia_mode = mode;
    attr.ia_valid = ATTR_MODE;

    - error = NFS_PROTO(dir)->create(dir, dentry, &attr, 0, NULL);
    + if ((nd->flags & LOOKUP_CREATE) != 0)
    + open_flags = nd->intent.open.flags;
    +
    + error = NFS_PROTO(dir)->create(dir, dentry, &attr, open_flags, NULL);
    if (error != 0)
    goto out_err;
    return 0;



    \
     
     \ /
      Last update: 2011-02-16 02:35    [W:4.405 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site