Linux: Make keyring destructor remove all tokens
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Sat, 6 Mar 2010 00:13:06 +0000 (00:13 +0000)
committerDerrick Brashear <shadow@dementia.org>
Sat, 6 Mar 2010 14:43:10 +0000 (06:43 -0800)
commitd9410aba89c5a257635fa33dbd78db2c0cb32ac8
tree241bb031bc8feace4f59ddad5f88c567362ce9c3
parentb7b0b4dea74e829ce0e36edd87a881a6f11df472
Linux: Make keyring destructor remove all tokens

The keyring destructor on Linux was only destroying the first
unixuser structure found for the PAG being destroyed. In environments
where each PAG contains tokens for multiple cells, this led to us
leaking unixuser structures, and eventually grinding to a hault due
to the length of the resulting hash chains (and some horrific
O(n-squared) performance in the PAG statistics code).

Add a utility function for the keyring destruction function to call
which will mark as deleted all unixuser structures for a particular
PAG, and use it.

Change-Id: I355465c43cc2cf9d70f613d6f97cd65552260157
Cc: Eric.Hagberg@morganstanley.com
Reviewed-on: http://gerrit.openafs.org/1524
Tested-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/afs/LINUX/osi_groups.c
src/afs/afs_prototypes.h
src/afs/afs_user.c