From: J. Bruce Fields <[EMAIL PROTECTED]> 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 <[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]> 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); On 2/2/08, Oliver Pinter (Pintér Olivér) <[EMAIL PROTECTED]> wrote: > mainline: ac8587dcb58e40dd336d99d60f852041e06cc3dd > > -- > Thanks, > Oliver > -- Thanks, Oliver -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/