--------------------- PatchSet 5494 Date: 2002/11/18 05:05:54 Author: ymc Branch: dsa Tag: (none) Log: renamed storeRelease to instanceRelease Members: src/client_side.c:1.5.2.9.2.1->1.5.2.9.2.2 src/defines.h:1.3.4.2->1.3.4.2.10.1 src/errorpage.c:1.4.2.3.10.1->1.4.2.3.10.2 src/forward.c:1.4.4.1.10.1->1.4.4.1.10.2 src/ftp.c:1.4.2.7.2.1->1.4.2.7.2.2 src/http.c:1.4.4.4.2.1->1.4.4.4.2.2 src/neighbors.c:1.5.2.4.4.1->1.5.2.4.4.2 src/protos.h:1.4.4.9.2.1->1.4.4.9.2.2 src/store.c:1.4.4.5.6.1->1.4.4.5.6.2 src/store_swapout.c:1.4.4.2.4.1->1.4.4.2.4.2 src/structs.h:1.6.2.11.2.1->1.6.2.11.2.2 src/wais.c:1.3.4.1.10.1->1.3.4.1.10.2 src/repl/heap/Makefile.in:1.2->1.2.64.1 src/repl/lru/Makefile.in:1.2->1.2.94.1 Index: squid/src/client_side.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/client_side.c,v retrieving revision 1.5.2.9.2.1 retrieving revision 1.5.2.9.2.2 diff -u -r1.5.2.9.2.1 -r1.5.2.9.2.2 --- squid/src/client_side.c 15 Nov 2002 09:10:32 -0000 1.5.2.9.2.1 +++ squid/src/client_side.c 18 Nov 2002 05:05:54 -0000 1.5.2.9.2.2 @@ -1,6 +1,6 @@ /* - * $Id: client_side.c,v 1.5.2.9.2.1 2002/11/15 09:10:32 ymc Exp $ + * $Id: client_side.c,v 1.5.2.9.2.2 2002/11/18 05:05:54 ymc Exp $ * * DEBUG: section 33 Client-side Routines * AUTHOR: Duane Wessels @@ -724,12 +724,15 @@ ipcacheInvalidate(http->request->host); #ifdef DSA if ((entry = instanceGetPublic(http->uri, METHOD_GET)) == NULL) { + status = HTTP_NOT_FOUND; + } else { + instanceRelease(entry); #else if ((entry = storeGetPublic(http->uri, METHOD_GET)) == NULL) { -#endif status = HTTP_NOT_FOUND; } else { storeRelease(entry); +#endif status = HTTP_OK; } debug(33, 4) ("clientPurgeRequest: Not modified '%s'\n", @@ -881,10 +884,11 @@ #endif #ifdef DSA if (http->entry && http->entry->p && http->entry->p->ping_status == PING_WAITING) + instanceReleaseRequest(http->entry); #else if (http->entry && http->entry->ping_status == PING_WAITING) -#endif storeReleaseRequest(http->entry); +#endif } assert(http->log_type < LOG_TYPE_MAX); #ifdef DSA @@ -2417,10 +2421,11 @@ } else if (r->method == METHOD_TRACE) { if (r->max_forwards == 0) { http->entry = clientCreateStoreEntry(http, r->method, null_request_flags); - storeReleaseRequest(http->entry); #ifdef DSA + instanceReleaseRequest(http->entry); storeBuffer(http->entry->p); #else + storeReleaseRequest(http->entry); storeBuffer(http->entry); #endif rep = httpReplyCreate(); @@ -2546,13 +2551,15 @@ #if LOG_TCP_REDIRECTS http->log_type = LOG_TCP_REDIRECT; #endif - storeReleaseRequest(http->entry); - httpRedirectReply(rep, http->redirect.status, http->redirect.location); #ifdef DSA + instanceReleaseRequest(http->entry); + httpRedirectReply(rep, http->redirect.status, http->redirect.location); httpReplySwapOut(rep, http->entry->p); httpReplyDestroy(rep); storeComplete(http->entry->p); #else + storeReleaseRequest(http->entry); + httpRedirectReply(rep, http->redirect.status, http->redirect.location); httpReplySwapOut(rep, http->entry); httpReplyDestroy(rep); storeComplete(http->entry); Index: squid/src/defines.h =================================================================== RCS file: /cvsroot/squid-sf//squid/src/defines.h,v retrieving revision 1.3.4.2 retrieving revision 1.3.4.2.10.1 diff -u -r1.3.4.2 -r1.3.4.2.10.1 --- squid/src/defines.h 15 Jan 2001 22:49:18 -0000 1.3.4.2 +++ squid/src/defines.h 18 Nov 2002 05:05:57 -0000 1.3.4.2.10.1 @@ -1,6 +1,6 @@ /* - * $Id: defines.h,v 1.3.4.2 2001/01/15 22:49:18 hno Exp $ + * $Id: defines.h,v 1.3.4.2.10.1 2002/11/18 05:05:57 ymc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -201,8 +201,12 @@ #define SwapMetaType(x) (char)x[0] #define SwapMetaSize(x) &x[sizeof(char)] #define SwapMetaData(x) &x[STORE_META_TLD_START] +#ifdef DSA +#define STORE_HDR_METASIZE (sizeof(time_t)+2*sizeof(u_short)+sizeof(size_t)) +#define INSTANCE_HDR_METASIZE (3*sizeof(time_t)+sizeof(u_short)) +#else #define STORE_HDR_METASIZE (4*sizeof(time_t)+2*sizeof(u_short)+sizeof(size_t)) - +#endif #define STORE_ENTRY_WITH_MEMOBJ 1 #define STORE_ENTRY_WITHOUT_MEMOBJ 0 Index: squid/src/errorpage.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/errorpage.c,v retrieving revision 1.4.2.3.10.1 retrieving revision 1.4.2.3.10.2 diff -u -r1.4.2.3.10.1 -r1.4.2.3.10.2 --- squid/src/errorpage.c 15 Nov 2002 09:10:33 -0000 1.4.2.3.10.1 +++ squid/src/errorpage.c 18 Nov 2002 05:05:57 -0000 1.4.2.3.10.2 @@ -1,6 +1,6 @@ /* - * $Id: errorpage.c,v 1.4.2.3.10.1 2002/11/15 09:10:33 ymc Exp $ + * $Id: errorpage.c,v 1.4.2.3.10.2 2002/11/18 05:05:57 ymc Exp $ * * DEBUG: section 4 Error Generation * AUTHOR: Duane Wessels @@ -309,7 +309,7 @@ storeComplete(entry); #ifdef DSA storeNegativeCache(e); - storeReleaseRequest(e); + instanceReleaseRequest(e); #else storeNegativeCache(entry); storeReleaseRequest(entry); Index: squid/src/forward.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/forward.c,v retrieving revision 1.4.4.1.10.1 retrieving revision 1.4.4.1.10.2 diff -u -r1.4.4.1.10.1 -r1.4.4.1.10.2 --- squid/src/forward.c 15 Nov 2002 09:10:33 -0000 1.4.4.1.10.1 +++ squid/src/forward.c 18 Nov 2002 05:05:58 -0000 1.4.4.1.10.2 @@ -1,6 +1,6 @@ /* - * $Id: forward.c,v 1.4.4.1.10.1 2002/11/15 09:10:33 ymc Exp $ + * $Id: forward.c,v 1.4.4.1.10.2 2002/11/18 05:05:58 ymc Exp $ * * DEBUG: section 17 Request Forwarding * AUTHOR: Duane Wessels @@ -96,7 +96,7 @@ EBIT_CLR(e->flags, ENTRY_FWD_HDR_WAIT); storeComplete(e); #ifdef DSA - storeReleaseRequest(fwdState->entry); + instanceReleaseRequest(fwdState->entry); #else storeReleaseRequest(e); #endif Index: squid/src/ftp.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/ftp.c,v retrieving revision 1.4.2.7.2.1 retrieving revision 1.4.2.7.2.2 diff -u -r1.4.2.7.2.1 -r1.4.2.7.2.2 --- squid/src/ftp.c 15 Nov 2002 09:10:33 -0000 1.4.2.7.2.1 +++ squid/src/ftp.c 18 Nov 2002 05:05:58 -0000 1.4.2.7.2.2 @@ -1,6 +1,6 @@ /* - * $Id: ftp.c,v 1.4.2.7.2.1 2002/11/15 09:10:33 ymc Exp $ + * $Id: ftp.c,v 1.4.2.7.2.2 2002/11/18 05:05:58 ymc Exp $ * * DEBUG: section 9 File Transfer Protocol (FTP) * AUTHOR: Harvest Derived @@ -1135,10 +1135,11 @@ key = storeKeyPublic(entry->mem_obj->url, entry->mem_obj->method); #ifdef DSA if ((pe = instanceGet(key)) != NULL) + instanceRelease(pe); #else if ((pe = storeGet(key)) != NULL) -#endif storeRelease(pe); +#endif /* create reply */ reply = entry->mem_obj->reply; assert(reply != NULL); @@ -2645,8 +2646,8 @@ #ifdef DSA pe = instanceGetPublic(e->mem_obj->url, e->mem_obj->method); if (pe) - storeRelease(pe); - storeRelease(ftpState->entry); + instanceRelease(pe); + instanceRelease(ftpState->entry); #else pe = storeGetPublic(e->mem_obj->url, e->mem_obj->method); if (pe) @@ -2657,7 +2658,7 @@ #ifdef DSA storeSetPublicKey(ftpState->entry); } else { - storeRelease(ftpState->entry); + instanceRelease(ftpState->entry); #else storeSetPublicKey(e); } else { Index: squid/src/http.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/http.c,v retrieving revision 1.4.4.4.2.1 retrieving revision 1.4.4.4.2.2 diff -u -r1.4.4.4.2.1 -r1.4.4.4.2.2 --- squid/src/http.c 15 Nov 2002 09:10:34 -0000 1.4.4.4.2.1 +++ squid/src/http.c 18 Nov 2002 05:06:00 -0000 1.4.4.4.2.2 @@ -1,6 +1,6 @@ /* - * $Id: http.c,v 1.4.4.4.2.1 2002/11/15 09:10:34 ymc Exp $ + * $Id: http.c,v 1.4.4.4.2.2 2002/11/18 05:06:00 ymc Exp $ * * DEBUG: section 11 Hypertext Transfer Protocol (HTTP) * AUTHOR: Harvest Derived @@ -136,12 +136,15 @@ static void #ifdef DSA httpMakePrivate(InstanceEntry * entry) +{ + storeExpireNow(entry); + instanceReleaseRequest(entry); /* delete object when not used */ #else httpMakePrivate(StoreEntry * entry) -#endif { storeExpireNow(entry); storeReleaseRequest(entry); /* delete object when not used */ +#endif /* storeReleaseRequest clears ENTRY_CACHABLE flag */ } @@ -211,12 +214,14 @@ #ifdef DSA assert(e->p->mem_obj); if ((pe = instanceGetPublic(e->p->mem_obj->url, e->p->mem_obj->method)) != NULL) { + assert(e != pe); + instanceRelease(pe); #else assert(e->mem_obj); if ((pe = storeGetPublic(e->mem_obj->url, e->mem_obj->method)) != NULL) { -#endif assert(e != pe); storeRelease(pe); +#endif } /* * Also remove any cached HEAD response in case the object has @@ -224,11 +229,13 @@ */ #ifdef DSA if ((pe = instanceGetPublic(e->p->mem_obj->url, METHOD_HEAD)) != NULL) { + assert(e != pe); + instanceRelease(pe); #else if ((pe = storeGetPublic(e->mem_obj->url, METHOD_HEAD)) != NULL) { -#endif assert(e != pe); storeRelease(pe); +#endif } if (forbidden) return; @@ -250,11 +257,13 @@ */ #ifdef DSA if ((pe = instanceGetPublic(e->p->mem_obj->url, METHOD_GET)) != NULL) { + assert(e != pe); + instanceRelease(pe); #else if ((pe = storeGetPublic(e->mem_obj->url, METHOD_GET)) != NULL) { -#endif assert(e != pe); storeRelease(pe); +#endif } break; } @@ -1051,7 +1060,7 @@ */ if (httpState->peer->options.proxy_only) #ifdef DSA - storeReleaseRequest(httpState->entry); + instanceReleaseRequest(httpState->entry); #else storeReleaseRequest(httpState->entry); #endif Index: squid/src/neighbors.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/neighbors.c,v retrieving revision 1.5.2.4.4.1 retrieving revision 1.5.2.4.4.2 diff -u -r1.5.2.4.4.1 -r1.5.2.4.4.2 --- squid/src/neighbors.c 15 Nov 2002 09:10:35 -0000 1.5.2.4.4.1 +++ squid/src/neighbors.c 18 Nov 2002 05:06:00 -0000 1.5.2.4.4.2 @@ -1,6 +1,6 @@ /* - * $Id: neighbors.c,v 1.5.2.4.4.1 2002/11/15 09:10:35 ymc Exp $ + * $Id: neighbors.c,v 1.5.2.4.4.2 2002/11/18 05:06:00 ymc Exp $ * * DEBUG: section 15 Neighbor Routines * AUTHOR: Harvest Derived @@ -1195,7 +1195,7 @@ requestUnlink(fake->mem_obj->request); fake->mem_obj->request = NULL; #ifdef DSA - storeReleaseRequest(psstate->entry); + instanceReleaseRequest(psstate->entry); #else storeReleaseRequest(fake); #endif Index: squid/src/protos.h =================================================================== RCS file: /cvsroot/squid-sf//squid/src/protos.h,v retrieving revision 1.4.4.9.2.1 retrieving revision 1.4.4.9.2.2 diff -u -r1.4.4.9.2.1 -r1.4.4.9.2.2 --- squid/src/protos.h 15 Nov 2002 09:10:35 -0000 1.4.4.9.2.1 +++ squid/src/protos.h 18 Nov 2002 05:06:00 -0000 1.4.4.9.2.2 @@ -1,6 +1,6 @@ /* - * $Id: protos.h,v 1.4.4.9.2.1 2002/11/15 09:10:35 ymc Exp $ + * $Id: protos.h,v 1.4.4.9.2.2 2002/11/18 05:06:00 ymc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -851,8 +851,6 @@ extern StoreEntry *storeCreateEntry(); extern void storeSetPublicKey(InstanceEntry *); extern void storeAbort(InstanceEntry *); -extern void payloadRelease(StoreEntry *); -extern void payloadReleaseRequest(StoreEntry *); #else extern StoreEntry *new_StoreEntry(int, const char *, const char *); extern StoreEntry *storeCreateEntry(const char *, const char *, request_flags, method_t); @@ -865,12 +863,11 @@ extern void storeAppend(StoreEntry *, const char *, int); extern void storeLockObject(StoreEntry *); #ifdef DSA -extern void storeRelease(InstanceEntry *); -extern void storeReleaseRequest(InstanceEntry *); -#else +extern void instanceRelease(InstanceEntry *); +extern void instanceReleaseRequest(InstanceEntry *); +#endif extern void storeRelease(StoreEntry *); extern void storeReleaseRequest(StoreEntry *); -#endif extern int storeUnlockObject(StoreEntry *); extern int storePendingNClients(const StoreEntry *); extern EVH storeMaintainSwapSpace; @@ -880,6 +877,7 @@ extern int expiresMoreThan(time_t, time_t); extern void InvokeHandlers(StoreEntry *); #ifdef DSA +extern void instanceHashInsert(InstanceEntry * e, const cache_key *); extern void storeExpireNow(InstanceEntry *); extern void storeNegativeCache(InstanceEntry *); extern int storeEntryValidToSend(InstanceEntry *); Index: squid/src/store.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/store.c,v retrieving revision 1.4.4.5.6.1 retrieving revision 1.4.4.5.6.2 diff -u -r1.4.4.5.6.1 -r1.4.4.5.6.2 --- squid/src/store.c 15 Nov 2002 09:10:36 -0000 1.4.4.5.6.1 +++ squid/src/store.c 18 Nov 2002 05:06:02 -0000 1.4.4.5.6.2 @@ -1,6 +1,6 @@ /* - * $Id: store.c,v 1.4.4.5.6.1 2002/11/15 09:10:36 ymc Exp $ + * $Id: store.c,v 1.4.4.5.6.2 2002/11/18 05:06:02 ymc Exp $ * * DEBUG: section 20 Storage Manager * AUTHOR: Harvest Derived @@ -132,7 +132,7 @@ #ifdef DSA void -payloadReleaseRequest(StoreEntry * e) +storeReleaseRequest(StoreEntry * e) { if (EBIT_TEST(e->flags, RELEASE_REQUEST)) return; @@ -148,7 +148,7 @@ /* release an object from a cache */ void -payloadRelease(StoreEntry * p) +storeRelease(StoreEntry * p) { // assert(p->instances); debug(20, 3) ("storeRelease: Releasing: '%s'\n", storeKeyText(p->hash.key)); @@ -156,7 +156,7 @@ * outstanding request, mark it for pending release */ if (storeEntryLocked(p)) { debug(20, 3) ("payloadRelease: Only setting RELEASE_REQUEST bit\n"); - payloadReleaseRequest(p); + storeReleaseRequest(p); return; } if (store_dirs_rebuilding && p->swap_filen > -1) { @@ -232,7 +232,7 @@ EBIT_CLR(e->flags, RELEASE_REQUEST); } else { EBIT_CLR(e->p->flags, ENTRY_CACHABLE); - storeReleaseRequest(e); + instanceReleaseRequest(e); } e->timestamp = -1; /* set in storeTimestampsSet() */ EBIT_SET(e->flags, ENTRY_VALIDATED); @@ -342,11 +342,7 @@ storeSetMemStatus(e, NOT_IN_MEMORY); destroy_MemObject(e); if (e->swap_status != SWAPOUT_DONE) -#ifdef DSA - payloadRelease(e); -#else storeRelease(e); -#endif } static void @@ -397,7 +393,7 @@ void #ifdef DSA -storeReleaseRequest(InstanceEntry * e) +instanceReleaseRequest(InstanceEntry * e) #else storeReleaseRequest(StoreEntry * e) #endif @@ -429,11 +425,7 @@ EBIT_SET(e->flags, RELEASE_REQUEST); assert(storePendingNClients(e) == 0); if (EBIT_TEST(e->flags, RELEASE_REQUEST)) -#ifdef DSA - payloadRelease(e); -#else storeRelease(e); -#endif else if (storeKeepInMemory(e)) { storeEntryDereferenced(e); storeSetMemStatus(e, IN_MEMORY); @@ -521,7 +513,7 @@ if ((e2 = (InstanceEntry *) hash_lookup(instance_table, newkey))) { debug(20, 3) ("storeSetPublicKey: Making old '%s' private.\n", mem->url); storeSetPrivateKey(e2); - storeRelease(e2); + instanceRelease(e2); newkey = storeKeyPublic(mem->url, mem->method); } if (e->hash.key) @@ -1078,11 +1070,13 @@ debug(20, 6) ("storeAbort: %s\n", storeKeyText(e->hash.key)); #ifdef DSA storeLockObject(e->p); /* lock while aborting */ + storeNegativeCache(e); + instanceReleaseRequest(e); #else storeLockObject(e); -#endif storeNegativeCache(e); storeReleaseRequest(e); +#endif EBIT_SET(e->flags, ENTRY_ABORTED); #ifdef DSA storeSetMemStatus(e->p, NOT_IN_MEMORY); @@ -1192,7 +1186,7 @@ #ifdef DSA /* release an object from a cache */ void -storeRelease(InstanceEntry * e) +instanceRelease(InstanceEntry * e) { debug(20, 3) ("storeRelease: Releasing: '%s'\n", storeKeyText(e->hash.key)); /* If, for any reason we can't discard this object because of an @@ -1200,7 +1194,7 @@ if (storeEntryLocked(e->p)) { storeExpireNow(e); debug(20, 3) ("storeRelease: Only setting RELEASE_REQUEST bit\n"); - storeReleaseRequest(e); + instanceReleaseRequest(e); return; } if (store_dirs_rebuilding && e->p->swap_dirn > -1) { Index: squid/src/store_swapout.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/store_swapout.c,v retrieving revision 1.4.4.2.4.1 retrieving revision 1.4.4.2.4.2 diff -u -r1.4.4.2.4.1 -r1.4.4.2.4.2 --- squid/src/store_swapout.c 15 Nov 2002 09:10:37 -0000 1.4.4.2.4.1 +++ squid/src/store_swapout.c 18 Nov 2002 05:06:03 -0000 1.4.4.2.4.2 @@ -1,6 +1,6 @@ /* - * $Id: store_swapout.c,v 1.4.4.2.4.1 2002/11/15 09:10:37 ymc Exp $ + * $Id: store_swapout.c,v 1.4.4.2.4.2 2002/11/18 05:06:03 ymc Exp $ * * DEBUG: section 20 Storage Manager Swapout Functions * AUTHOR: Duane Wessels @@ -170,7 +170,7 @@ */ #ifdef DSA assert(e->instances->count == 1); - storeReleaseRequest((InstanceEntry *) e->instances->items[0]); + instanceReleaseRequest((InstanceEntry *) e->instances->items[0]); #else storeReleaseRequest(e); #endif @@ -299,7 +299,7 @@ e->swap_status = SWAPOUT_NONE; #ifdef DSA assert(e->instances->count == 1); - storeReleaseRequest((InstanceEntry *) e->instances->items[0]); + instanceReleaseRequest((InstanceEntry *) e->instances->items[0]); #else storeReleaseRequest(e); #endif Index: squid/src/structs.h =================================================================== RCS file: /cvsroot/squid-sf//squid/src/structs.h,v retrieving revision 1.6.2.11.2.1 retrieving revision 1.6.2.11.2.2 diff -u -r1.6.2.11.2.1 -r1.6.2.11.2.2 --- squid/src/structs.h 15 Nov 2002 09:10:37 -0000 1.6.2.11.2.1 +++ squid/src/structs.h 18 Nov 2002 05:06:04 -0000 1.6.2.11.2.2 @@ -1,6 +1,6 @@ /* - * $Id: structs.h,v 1.6.2.11.2.1 2002/11/15 09:10:37 ymc Exp $ + * $Id: structs.h,v 1.6.2.11.2.2 2002/11/18 05:06:04 ymc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -1335,9 +1335,9 @@ #ifdef DSA struct _InstanceEntry { hash_link hash; + time_t timestamp; time_t expires; time_t lastmod; - time_t timestamp; u_short flags; StoreEntry * p; /* pointer to corresponding StoreEntry */ }; Index: squid/src/wais.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/wais.c,v retrieving revision 1.3.4.1.10.1 retrieving revision 1.3.4.1.10.2 diff -u -r1.3.4.1.10.1 -r1.3.4.1.10.2 --- squid/src/wais.c 15 Nov 2002 09:10:37 -0000 1.3.4.1.10.1 +++ squid/src/wais.c 18 Nov 2002 05:06:06 -0000 1.3.4.1.10.2 @@ -1,6 +1,6 @@ /* - * $Id: wais.c,v 1.3.4.1.10.1 2002/11/15 09:10:37 ymc Exp $ + * $Id: wais.c,v 1.3.4.1.10.2 2002/11/18 05:06:06 ymc Exp $ * * DEBUG: section 24 WAIS Relay * AUTHOR: Harvest Derived @@ -148,7 +148,7 @@ ErrorState *err; EBIT_CLR(entry->flags, ENTRY_CACHABLE); #ifdef DSA - storeReleaseRequest(waisState->entry); + instanceReleaseRequest(waisState->entry); #else storeReleaseRequest(entry); #endif