lkml.org 
[lkml]   [2008]   [Feb]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[2.6.22.y] {12/17} - nfsacl-retval.diff - series for stable kernel #2
    mainline: ac8587dcb58e40dd336d99d60f852041e06cc3dd

    --
    Thanks,
    Oliver
    From: J. Bruce Fields <bfields@citi.umich.edu>
    Date: Fri, 2 Nov 2007 15:36:08 -0400
    Subject: [PATCH] knfsd: fix spurious EINVAL errors on first access of new filesystem
    References: 340873

    The v2/v3 acl code in nfsd is translating any return from fh_verify() to
    nfserr_inval. This is particularly unfortunate in the case of an
    nfserr_dropit return, which is an internal error meant to indicate to
    callers that this request has been deferred and should just be dropped
    pending the results of an upcall to mountd.

    Thanks to Roland <devzero@web.de> for bug report and data collection.

    Cc: Roland <devzero@web.de>
    Acked-by: Andreas Gruenbacher <agruen@suse.de>
    Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

    Index: linux-2.6.23/fs/nfsd/nfs2acl.c
    ===================================================================
    --- linux-2.6.23.orig/fs/nfsd/nfs2acl.c
    +++ linux-2.6.23/fs/nfsd/nfs2acl.c
    @@ -41,7 +41,7 @@ static __be32 nfsacld_proc_getacl(struct

    fh = fh_copy(&resp->fh, &argp->fh);
    if ((nfserr = fh_verify(rqstp, &resp->fh, 0, MAY_NOP)))
    - RETURN_STATUS(nfserr_inval);
    + RETURN_STATUS(nfserr);

    if (argp->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT))
    RETURN_STATUS(nfserr_inval);
    Index: linux-2.6.23/fs/nfsd/nfs3acl.c
    ===================================================================
    --- linux-2.6.23.orig/fs/nfsd/nfs3acl.c
    +++ linux-2.6.23/fs/nfsd/nfs3acl.c
    @@ -37,7 +37,7 @@ static __be32 nfsd3_proc_getacl(struct s

    fh = fh_copy(&resp->fh, &argp->fh);
    if ((nfserr = fh_verify(rqstp, &resp->fh, 0, MAY_NOP)))
    - RETURN_STATUS(nfserr_inval);
    + RETURN_STATUS(nfserr);

    if (argp->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT))
    RETURN_STATUS(nfserr_inval);
    \
     
     \ /
      Last update: 2008-02-02 02:41    [W:0.028 / U:32.604 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site