/*
- * $Id: cache_cf.cc,v 1.177 1997/03/29 04:45:13 wessels Exp $
+ * $Id: cache_cf.cc,v 1.178 1997/04/25 20:15:31 wessels Exp $
*
* DEBUG: section 3 Configuration File Parsing
* AUTHOR: Harvest Derived
static void parseMemLine _PARAMS((void));
static void parseMgrLine _PARAMS((void));
static void parseKilobytes _PARAMS((int *));
-static void parseSwapLine _PARAMS((void));
static void parseRefreshPattern _PARAMS((int icase));
static void parseVisibleHostnameLine _PARAMS((void));
static void parseWAISRelayLine _PARAMS((void));
Config.Mem.maxSize = i << 20;
}
-static void
-parseSwapLine(void)
-{
- char *token;
- int i;
- GetInteger(i);
- Config.Swap.maxSize = i << 10;
-}
static void
parseRefreshPattern(int icase)
self_destruct();
dir = token;
GetInteger(i);
- size = i;
+ size = i << 10; /* Mbytes to kbytes */
+ Config.Swap.maxSize += size;
GetInteger(i);
l1 = i;
GetInteger(i);
else if (!strcmp(token, "cache_mem"))
parseMemLine();
- else if (!strcmp(token, "cache_swap"))
- parseSwapLine();
-
else if (!strcmp(token, "cache_mgr"))
parseMgrLine();
/*
- * $Id: stat.cc,v 1.130 1997/03/29 04:45:21 wessels Exp $
+ * $Id: stat.cc,v 1.131 1997/04/25 20:15:33 wessels Exp $
*
* DEBUG: section 18 Cache Manager Statistics
* AUTHOR: Harvest Derived
storeAppendPrintf(sentry, "{Cache information for %s:}\n",
appname);
storeAppendPrintf(sentry, "{\tStorage Swap size:\t%d MB}\n",
- storeGetSwapSize() >> 10);
+ store_swap_size >> 10);
storeAppendPrintf(sentry, "{\tStorage Mem size:\t%d KB}\n",
store_mem_size >> 10);
storeAppendPrintf(sentry, "{\tStorage LRU Expiration Age:\t%6.2f days}\n",
/*
- * $Id: store.cc,v 1.218 1997/04/25 06:38:22 wessels Exp $
+ * $Id: store.cc,v 1.219 1997/04/25 20:15:34 wessels Exp $
*
* DEBUG: section 20 Storeage Manager
* AUTHOR: Harvest Derived
/* current file name, swap file, use number as a filename */
static int swapfileno = 0;
-static int store_swap_size = 0; /* kilobytes !! */
+int store_swap_size = 0; /* kilobytes !! */
static int store_swap_high = 0;
static int store_swap_low = 0;
static int storelog_fd = -1;
debug(20, 6, "storeSwapOutHandle: store_swap_size = %dk\n", store_swap_size);
mem->swap_offset += mem->e_swap_buf_len;
/* round up */
- store_swap_size += ((mem->e_swap_buf_len + 1023) >> 10);
+ storeDirUpdateSwapSize(e->swap_file_number, mem->e_swap_buf_len);
if (mem->swap_offset >= e->object_len) {
/* swapping complete */
e->swap_status = SWAP_OK;
storeDirCloseTmpSwapLog(d->dirn);
RB->rebuild_dir = d->next;
safe_free(d);
+ eventAdd("storeRebuild", storeDoRebuildFromDisk, RB, 0);
return;
}
if ((++RB->linecount & 0x3FFF) == 0)
continue;
}
/* update store_swap_size */
- store_swap_size += (int) ((size + 1023) >> 10);
+ storeDirUpdateSwapSize(sfileno, size);
RB->objcount++;
e = storeAddDiskRestore(url,
sfileno,
TRUE);
}
RB->rebuild_dir = d->next;
- for (D = &RB->rebuild_dir; (*D)->next; D = &(*D)->next);
+ for (D = &RB->rebuild_dir; *D; D = &(*D)->next);
*D = d;
d->next = NULL;
eventAdd("storeRebuild", storeDoRebuildFromDisk, RB, 0);
}
}
-/* return current swap size in kilo-bytes */
-int
-storeGetSwapSize(void)
-{
- return store_swap_size;
-}
-
static int
storeCheckSwapable(StoreEntry * e)
{
if (e->swap_status == SWAP_OK && (e->swap_file_number > -1)) {
(void) safeunlink(storeSwapFullPath(e->swap_file_number, NULL), 1);
+ storeDirUpdateSwapSize(e->swap_file_number, -(e->object_len));
storeDirMapBitReset(e->swap_file_number);
e->swap_file_number = -1;
- store_swap_size -= (e->object_len + 1023) >> 10;
HTTPCacheInfo->proto_purgeobject(HTTPCacheInfo,
urlParseProtocol(e->url),
e->object_len);
tmp->l2 = l2;
tmp->read_only = read_only;
tmp->map = file_map_create(MAX_FILES_PER_DIR);
- debug(20,0,"storeAddSwapDisk: #%d: %s\n", ncache_dirs, path);
- debug(20,0,"storeAddSwapDisk: l1=%d\n", tmp->l1);
- debug(20,0,"storeAddSwapDisk: l2=%d\n", tmp->l2);
- debug(20,0,"storeAddSwapDisk: sz=%d\n", tmp->max_size);
- debug(20,0,"storeAddSwapDisk: ro=%d\n", tmp->read_only);
- debug(20,0,"storeAddSwapDisk: mp=%d\n", tmp->map);
return ++ncache_dirs;
}
int i;
for (i = 0; i < ncache_dirs; i++) {
this_free = SwapDirs[i].max_size - SwapDirs[i].cur_size;
+debug(20,0,"storeMostFreeSwapDir: most free = #%d with %d\n", dirn, most_free);
+debug(20,0,"storeMostFreeSwapDir: #%d has %d free\n", i, this_free);
if (this_free <= most_free)
continue;
if (SwapDirs[i].read_only)
most_free = this_free;
dirn = i;
}
+debug(20,0,"storeMostFreeSwapDir: most free = #%d with %d\n", dirn, most_free);
+debug(20,0,"storeMostFreeSwapDir: returning %d\n", dirn);
return dirn;
}
}
SD->swaplog_fd = fd;
}
+
+void
+storeDirUpdateSwapSize(int fn, size_t size)
+{
+ int dirn = (fn >> SWAP_DIR_SHIFT) % ncache_dirs;
+ int k = ((size + 1023) >> 10);
+ SwapDirs[dirn].cur_size += k;
+ store_swap_size += k;
+}