From: wessels <> Date: Fri, 22 May 1998 04:23:59 +0000 (+0000) Subject: - Changed storeGetMemSpace(). Only purge down to the HIGH X-Git-Tag: SQUID_3_0_PRE1~3289 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d6ea85ce17c9c97fb8bc3d86562a157777033d48;p=thirdparty%2Fsquid.git - Changed storeGetMemSpace(). Only purge down to the HIGH water mark; move locked entries to the head of the inmem list. --- diff --git a/src/store.cc b/src/store.cc index ce300a941c..3a4215ae46 100644 --- a/src/store.cc +++ b/src/store.cc @@ -1,6 +1,6 @@ /* - * $Id: store.cc,v 1.415 1998/05/15 15:16:35 wessels Exp $ + * $Id: store.cc,v 1.416 1998/05/21 22:23:59 wessels Exp $ * * DEBUG: section 20 Storage Manager * AUTHOR: Harvest Derived @@ -609,6 +609,7 @@ storeGetMemSpace(int size) static time_t last_check = 0; int pages_needed; dlink_node *m; + dlink_node *head; dlink_node *prev = NULL; if (squid_curtime == last_check) return; @@ -619,14 +620,20 @@ storeGetMemSpace(int size) if (store_rebuilding) return; debug(20, 2) ("storeGetMemSpace: Starting, need %d pages\n", pages_needed); + head = inmem_list.head; for (m = inmem_list.tail; m; m = prev) { + if (m == head) + break; prev = m->prev; e = m->data; - if (storeEntryLocked(e)) + if (storeEntryLocked(e)) { + dlinkDelete(m, &inmem_list); + dlinkAdd(e, m, &inmem_list); continue; + } released++; storePurgeMem(e); - if (memInUse(MEM_STMEM_BUF) + pages_needed < store_pages_low) + if (memInUse(MEM_STMEM_BUF) + pages_needed < store_pages_high) break; } debug(20, 3) ("storeGetMemSpace stats:\n");