mirror of
https://git.openafs.org/openafs.git
synced 2025-01-31 05:27:44 +00:00
afs: Check UHasTokens in afs_GCUserData
It looks that EndTimestamp holds the user’s token expiration time even after function afs_MarkUserExpired() gets called from afs_pag_destroy(). So it seems that the PAGs/tokens are not being reclaimed. This will lead to pag buildup on the system. The PAG/'struct unixuser' is not being freed because afs_GCUserData() checks afs_HasUsableTokens(), which checks EndTimestamp, which says the tokens still haven't expired. So the PAG doesn't get freed. This behavior has existed since commit ba1d050c6e (Make unixuser's vid advisory). To fix this, change afs_GCuserData() to check for the UHasTokens flag, and ignore any tokens if UHasTokens isn't set. This causes the PAG to be freed, since we don't look at the EndTimestamp of the tokens at all. Thanks Todd DeSantis for your support. Signed-off-by: Kailas Zadbuke <kailashsz@in.ibm.com> Reviewed-on: https://gerrit.openafs.org/15404 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Andrew Deason <adeason@sinenomine.net> Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> (cherry picked from commit 630d423897e5fffed1873aa9d12c4e74a8481041) Change-Id: I74b1ea1173df904928ad027e48b231058c1e0f1d Reviewed-on: https://gerrit.openafs.org/15506 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com> Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> Reviewed-by: Andrew Deason <adeason@sinenomine.net> Reviewed-by: Mark Vitale <mvitale@sinenomine.net> Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
This commit is contained in:
parent
a0b7f71122
commit
bb1b7b1adc
@ -77,7 +77,7 @@ afs_GCUserData(void)
|
||||
delFlag = 0; /* should we delete this dude? */
|
||||
/* Don't garbage collect users in use now (refCount) */
|
||||
if (tu->refCount == 0) {
|
||||
if (tu->tokens) {
|
||||
if (tu->tokens != NULL && (tu->states & UHasTokens) != 0) {
|
||||
/* Need to walk the token stack, and dispose of
|
||||
* all expired tokens */
|
||||
afs_DiscardExpiredTokens(&tu->tokens, now);
|
||||
|
Loading…
x
Reference in New Issue
Block a user