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 SUSE Labs, SUSE LINUX AG