Messages in this thread Patches in this message |  | | | Subject | Re: [PATCH] Return more useful error number when acls are too large | | From | Andreas Gruenbacher <> | | Date | Tue, 27 Apr 2004 20:07:36 +0200 |
| |
On Tue, 2004-04-27 at 03:24, Nathan Scott wrote: > hi Andreas, > > On Mon, Apr 26, 2004 at 12:27:58PM +0200, Andreas Gruenbacher wrote: > > Hello, > > > > could you please add this to mainline? Getting EINVAL when an acl > > becomes too large is quite confusing. > > > > if (acl) { > > if (acl->a_count > EXT2_ACL_MAX_ENTRIES) > > - return -EINVAL; > > + return -ENOSPC; > > That seems an odd error code to change it to, since its not > related to the device running out of free space right? Maybe > use -E2BIG instead?
I don't see a problem with giving ENOSPC this particular meaning here. The error number used must be among those defined for NFSv3, so E2BIG won't do.
> XFS has a similar check (different limit as you know), so is > also affected by this; could you update XFS at the same time > with whatever value gets chosen, if its not EINVAL? Or just > let me know what gets chosen & I'll fix it up later.
I think this patch is correct for xfs. Nathan, would you mind to double-check? Thanks.
Index: linux-2.6.6-rc2/fs/xfs/xfs_acl.c =================================================================== --- linux-2.6.6-rc2.orig/fs/xfs/xfs_acl.c +++ linux-2.6.6-rc2/fs/xfs/xfs_acl.c @@ -148,10 +148,7 @@ posix_acl_xattr_to_xfs( return EINVAL; } } - if (xfs_acl_invalid(dest)) - return EINVAL; - - return 0; + return xfs_acl_invalid(dest); } /* @@ -249,10 +246,9 @@ xfs_acl_vget( if (!size) { error = -posix_acl_xattr_size(XFS_ACL_MAX_ENTRIES); } else { - if (xfs_acl_invalid(xfs_acl)) { - error = EINVAL; + error = xfs_acl_invalid(xfs_acl); + if (error) goto out; - } if (kind == _ACL_TYPE_ACCESS) { vattr_t va; @@ -590,7 +586,7 @@ xfs_acl_invalid( goto acl_invalid; if (aclp->acl_cnt > XFS_ACL_MAX_ENTRIES) - goto acl_invalid; + return ENOSPC; for (i = 0; i < aclp->acl_cnt; i++) { entry = &aclp->acl_entry[i];
Thanks, -- Andreas Gruenbacher <agruen@suse.de> SUSE Labs, SUSE LINUX AG Index: linux-2.6.6-rc2/fs/xfs/xfs_acl.c =================================================================== --- linux-2.6.6-rc2.orig/fs/xfs/xfs_acl.c +++ linux-2.6.6-rc2/fs/xfs/xfs_acl.c @@ -148,10 +148,7 @@ posix_acl_xattr_to_xfs( return EINVAL; } } - if (xfs_acl_invalid(dest)) - return EINVAL; - - return 0; + return xfs_acl_invalid(dest); } /* @@ -249,10 +246,9 @@ xfs_acl_vget( if (!size) { error = -posix_acl_xattr_size(XFS_ACL_MAX_ENTRIES); } else { - if (xfs_acl_invalid(xfs_acl)) { - error = EINVAL; + error = xfs_acl_invalid(xfs_acl); + if (error) goto out; - } if (kind == _ACL_TYPE_ACCESS) { vattr_t va; @@ -590,7 +586,7 @@ xfs_acl_invalid( goto acl_invalid; if (aclp->acl_cnt > XFS_ACL_MAX_ENTRIES) - goto acl_invalid; + return ENOSPC; for (i = 0; i < aclp->acl_cnt; i++) { entry = &aclp->acl_entry[i]; |  |