Re: [2.6.22.y] {12/17} - nfsacl-retval.diff - series for stable kernel #2

From: Oliver Pinter
Date: Wed Feb 06 2008 - 18:06:21 EST


From: J. Bruce Fields <bfields@xxxxxxxxxxxxxx>
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@xxxxxx> for bug report and data collection.

Cc: Roland <devzero@xxxxxx>
Acked-by: Andreas Gruenbacher <agruen@xxxxxxx>
Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxxxxxx>

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) <oliver.pntr@xxxxxxxxx> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/