Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ac8587dcb58e40dd336d99d60f852041e06cc3dd
Commit:     ac8587dcb58e40dd336d99d60f852041e06cc3dd
Parent:     44048d700bcbfaf4bcca6e2e0a73d89d01ec0878
Author:     J. Bruce Fields <[EMAIL PROTECTED]>
AuthorDate: Mon Nov 12 16:05:02 2007 -0500
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Mon Nov 12 14:28:08 2007 -0800

    knfsd: fix spurious EINVAL errors on first access of new filesystem
    
    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 <[EMAIL PROTECTED]> for bug report and data collection.
    
    Cc: Roland <[EMAIL PROTECTED]>
    Acked-by: Andreas Gruenbacher <[EMAIL PROTECTED]>
    Signed-off-by: J. Bruce Fields <[EMAIL PROTECTED]>
    Reviewed-By: NeilBrown <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 fs/nfsd/nfs2acl.c |    2 +-
 fs/nfsd/nfs3acl.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c
index b617428..0e5fa11 100644
--- a/fs/nfsd/nfs2acl.c
+++ b/fs/nfsd/nfs2acl.c
@@ -41,7 +41,7 @@ static __be32 nfsacld_proc_getacl(struct svc_rqst * rqstp,
 
        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);
diff --git a/fs/nfsd/nfs3acl.c b/fs/nfsd/nfs3acl.c
index 3e3f2de..b647f2f 100644
--- a/fs/nfsd/nfs3acl.c
+++ b/fs/nfsd/nfs3acl.c
@@ -37,7 +37,7 @@ static __be32 nfsd3_proc_getacl(struct svc_rqst * rqstp,
 
        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);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to