[Pvfs2-developers] patch: PVFS2 group permission checking for groups with large number of members

Phil Carns carns at mcs.anl.gov
Tue Mar 24 09:39:55 EST 2009


Thanks David!  This is a big improvement over the way the code worked 
before.

The patch is in cvs trunk now with some minor formatting updates.

-Phil

David Metheny wrote:
> The attached patch corrects a bug where group permission checking was 
> failing for a group with 221 members. The patch changes the logic for 
> group permission checking up a bit. Rather than get the user list from 
> the group, this patch gets the groups that the user is a member of. I’m 
> taking the assumption that groups probably have a large number of 
> members, but users usually have less number of groups. This also seemed 
> to help out a bit on the required memory allocations.
> 
>  
> 
>  
> 
> ------------------------------------------------------------------------
> 
> *From:* pvfs2-developers-bounces at beowulf-underground.org 
> [mailto:pvfs2-developers-bounces at beowulf-underground.org] *On Behalf Of 
> *David Metheny
> *Sent:* Thursday, March 12, 2009 11:32 AM
> *To:* pvfs2-developers at beowulf-underground.org
> *Subject:* [Pvfs2-developers] PVFS2 group permission checking failing 
> forgroups with large number of members
> 
>  
> 
> I’ve run into an issue where permissions are failing during group 
> permission checking (PINT_check_group).
> 
>  
> 
> The example case is where userA is a member of groupA.  groupA has 221 
> member users.
> 
>  
> 
> drwxrwx---  1 userB groupA       4096 Mar 11 15:35 subdir
> 
>  
> 
> The PINT_check_mode uses the sysconf call to determine the size of the 
> buffer to use for lookups on groups and users. In this case, the 
> users/groups are stored in LDAP. The call here is 
> check_group_gr_buffer_size = sysconf(_SC_GETGR_R_SIZE_MAX). As a 
> default, if we can’t make the sysconf call, it is being set to 1024 
> bytes. For RHEL4 systems in our environments, the sysconf is also 
> returning 1024.
> 
>  
> 
> In the above situation, 1024 isn’t a large enough buffer to allocate all 
> of the member usernames associated with the group, and the getgrgid_r 
> function call returns an error.
> 
>  
> 
> As easy enough change would be to increase the buffer size used. Another 
> idea would be to change the call up a bit to get the groups that the 
> user is part of, and compare those groups against the group for the 
> file. Are there any thoughts on which approach to implement? I’m not 
> sure which would be faster in general, but in the environments I’m 
> seeing, users are in less groups, than groups have members. If we change 
> the logic on group checking, I’m assuming we would also want to 
> implement a larger buffer size for both the group and user lookups.
> 
>  
> 
>  
> 
>  
> 
>  
> 
>  
> 
>  
> 
>  
> 
>  
> 
>  
> 
>  
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Pvfs2-developers mailing list
> Pvfs2-developers at beowulf-underground.org
> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers



More information about the Pvfs2-developers mailing list