HttpRequestMethod.cc \
int.h \
int.cc \
++ $(SBUF_SOURCE) \
SquidList.h \
SquidList.cc \
- $(SBUF_SOURCE) \
+ MasterXaction.cc \
+ MasterXaction.h \
Mem.h \
mem.cc \
MemBuf.cc \
higher hit ratio at the expense of an increase in response
time.
- The rock store type:
- cache_dir rock Directory-Name Mbytes <max-size=bytes> [options]
+ ==== The rock store type ====
+
+ Usage:
+ cache_dir rock Directory-Name Mbytes [options]
The Rock Store type is a database-style storage. All cached
- entries are stored in a "database" file, using fixed-size slots,
- one entry per slot. The database size is specified in MB. The
- slot size is specified in bytes using the max-size option. See
- below for more info on the max-size option.
+ entries are stored in a "database" file, using fixed-size slots.
+ A single entry occupies one or more slots.
If possible, Squid using Rock Store creates a dedicated kid
process called "disker" to avoid blocking Squid worker(s) on disk
and when set to zero, disables the disk I/O rate limit
enforcement. Currently supported by IpcIo module only.
+ slot-size=bytes: The size of a database "record" used for
+ storing cached responses. A cached response occupies at least
+ one slot and all database I/O is done using individual slots so
+ increasing this parameter leads to more disk space waste while
+ decreasing it leads to more disk I/O overheads. Should be a
+ multiple of your operating system I/O page size. Defaults to
+ 16KBytes. A housekeeping header is stored with each slot and
+ smaller slot-sizes will be rejected. The header is smaller than
+ 100 bytes.
+
- The coss store type:
+ ==== The coss store type ====
NP: COSS filesystem in Squid-3 has been deemed too unstable for
production use and has thus been removed from this release.
#include "comm.h"
#include "comm/Loops.h"
#include "comm/Write.h"
++#include "dlink.h"
#include "event.h"
#include "fd.h"
#include "fde.h"
#include "squid.h"
#include "cbdata.h"
#include "CacheManager.h"
++#include "dlink.h"
#include "DnsLookupDetails.h"
#include "event.h"
#include "ip/Address.h"
CBDATA_CLASS_INIT(ps_state);
- static void
- peerSelectStateFree(ps_state * psstate)
+ ps_state::~ps_state()
{
- if (psstate->entry) {
- debugs(44, 3, HERE << psstate->entry->url());
+ if (entry) {
+ debugs(44, 3, entry->url());
- if (psstate->entry->ping_status == PING_WAITING)
- eventDelete(peerPingTimeout, psstate);
+ if (entry->ping_status == PING_WAITING)
+ eventDelete(peerPingTimeout, this);
- psstate->entry->ping_status = PING_DONE;
+ entry->ping_status = PING_DONE;
}
- if (psstate->acl_checklist) {
- debugs(44, DBG_IMPORTANT, "calling aclChecklistFree() from peerSelectStateFree");
- delete (psstate->acl_checklist);
+ if (acl_checklist) {
+ debugs(44, DBG_IMPORTANT, "calling aclChecklistFree() from ps_state destructor");
+ delete acl_checklist;
}
- HTTPMSGUNLOCK(psstate->request);
+ HTTPMSGUNLOCK(request);
- if (psstate->entry) {
- assert(psstate->entry->ping_status != PING_WAITING);
- psstate->entry->unlock("peerSelect");
- psstate->entry = NULL;
+ if (entry) {
+ assert(entry->ping_status != PING_WAITING);
- entry->unlock();
++ entry->unlock("peerSelect");
+ entry = NULL;
}
- delete psstate->lastError;
-
- cbdataFree(psstate);
+ delete lastError;
}
static int
// TODO: consume parsed metadata?
-- debugs(47,7, HERE << "successful swap meta unpacking");
++ debugs(47,7, HERE << "successful swap meta unpacking; swap_file_sz=" << tmpe.swap_file_sz);
memset(key, '\0', SQUID_MD5_DIGEST_LENGTH);
InitStoreEntry visitor(&tmpe, key);
debugs(52, 3, "urnStart: '" << e->url() << "'" );
entry = e;
request = r;
- HTTPMSGLOCK(request);
- entry->lock();
+ entry->lock("UrnState::start");
setUriResFromRequest(r);
if (urlres_r == NULL)
if (urlres_e->isNull()) {
urlres_e = storeCreateEntry(urlres, urlres, RequestFlags(), Http::METHOD_GET);
sc = storeClientListAdd(urlres_e, this);
- FwdState::fwdStart(Comm::ConnectionPointer(), urlres_e, urlres_r);
+ FwdState::fwdStart(Comm::ConnectionPointer(), urlres_e, urlres_r.getRaw());
} else {
-
- urlres_e->lock();
+ urlres_e->lock("UrnState::created");
sc = storeClientListAdd(urlres_e, this);
}
static void
urnHandleReplyError(UrnState *urnState, StoreEntry *urlres_e)
{
- urlres_e->unlock();
- urnState->entry->unlock();
+ urlres_e->unlock("urnHandleReplyError+res");
+ urnState->entry->unlock("urnHandleReplyError+prime");
- HTTPMSGUNLOCK(urnState->request);
- HTTPMSGUNLOCK(urnState->urlres_r);
delete urnState;
}