From bfdc909b5477e493656b3e9fb744fdf5cd16e179 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 13 Feb 2006 16:33:49 +0000 Subject: [PATCH] windows-findacl-optimize-20060213 don't remove an entry from the queue and add it to the head if it already is the head. --- src/WINNT/afsd/cm_aclent.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/WINNT/afsd/cm_aclent.c b/src/WINNT/afsd/cm_aclent.c index e34470a10..0a1779fe7 100644 --- a/src/WINNT/afsd/cm_aclent.c +++ b/src/WINNT/afsd/cm_aclent.c @@ -91,14 +91,16 @@ long cm_FindACLCache(cm_scache_t *scp, cm_user_t *userp, long *rightsp) &aclp->q); } else { *rightsp = aclp->randomAccess; - if (cm_data.aclLRUEndp == aclp) - cm_data.aclLRUEndp = (cm_aclent_t *) osi_QPrev(&aclp->q); - - /* move to the head of the LRU queue */ - osi_QRemove((osi_queue_t **) &cm_data.aclLRUp, &aclp->q); - osi_QAddH((osi_queue_t **) &cm_data.aclLRUp, - (osi_queue_t **) &cm_data.aclLRUEndp, - &aclp->q); + if (cm_data.aclLRUp != aclp) { + if (cm_data.aclLRUEndp == aclp) + cm_data.aclLRUEndp = (cm_aclent_t *) osi_QPrev(&aclp->q); + + /* move to the head of the LRU queue */ + osi_QRemove((osi_queue_t **) &cm_data.aclLRUp, &aclp->q); + osi_QAddH((osi_queue_t **) &cm_data.aclLRUp, + (osi_queue_t **) &cm_data.aclLRUEndp, + &aclp->q); + } retval = 0; /* success */ } break; -- 2.39.5