windows-findacl-optimize-20060213
authorJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 13 Feb 2006 16:33:49 +0000 (16:33 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 13 Feb 2006 16:33:49 +0000 (16:33 +0000)
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

index e34470a..0a1779f 100644 (file)
@@ -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;