/*
- * $Id: store_dir_diskd.cc,v 1.5 2000/05/28 22:42:39 wessels Exp $
+ * $Id: store_dir_diskd.cc,v 1.6 2000/05/29 00:19:45 wessels Exp $
*
* DEBUG: section 47 Store Directory Routines
* AUTHOR: Duane Wessels
{
sfileno filn = fn;
diskdinfo_t *diskdinfo;
- diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo = SD->fsdata;
return file_map_bit_test(diskdinfo->map, filn);
}
{
sfileno filn = fn;
diskdinfo_t *diskdinfo;
- diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo = SD->fsdata;
file_map_bit_set(diskdinfo->map, filn);
}
{
sfileno filn = fn;
diskdinfo_t *diskdinfo;
- diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo = SD->fsdata;
file_map_bit_reset(diskdinfo->map, filn);
}
int
storeDiskdDirMapBitAllocate(SwapDir * SD)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo_t *diskdinfo = SD->fsdata;
int fn;
fn = file_map_allocate(diskdinfo->map, diskdinfo->suggest);
file_map_bit_set(diskdinfo->map, fn);
static void
storeDiskdDirInitBitmap(SwapDir * sd)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
if (diskdinfo->map == NULL) {
/* First time */
static char *
storeDiskdDirSwapSubDir(SwapDir * sd, int subdirn)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
LOCAL_ARRAY(char, fullfilename, SQUID_MAXPATHLEN);
assert(0 <= subdirn && subdirn < diskdinfo->l1);
static int
storeDiskdDirVerifyCacheDirs(SwapDir * sd)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
int j;
const char *path = sd->path;
static void
storeDiskdDirCreateSwapSubDirs(SwapDir * sd)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
int i, k;
int should_exist;
LOCAL_ARRAY(char, name, MAXPATHLEN);
static void
storeDiskdDirOpenSwapLog(SwapDir * sd)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
char *path;
int fd;
path = storeDiskdDirSwapLogFile(sd, NULL);
static void
storeDiskdDirCloseSwapLog(SwapDir * sd)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
if (diskdinfo->swaplog_fd < 0) /* not open */
return;
file_close(diskdinfo->swaplog_fd);
char skey1[32];
char skey2[32];
char skey3[32];
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
static const char *errmsg =
"\tFailed to verify one of the swap directories, Check cache.log\n"
"\tfor details. Run 'squid -z' to create swap directories\n"
{
diomsg M;
int x;
- diskdinfo_t *diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo_t *diskdinfo = SD->fsdata;
if (diskdinfo->away >= diskdinfo->magic2)
diskd_stats.block_queue_len++;
storeDiskdDirGetNextFile(RebuildState * rb, int *sfileno, int *size)
{
SwapDir *SD = rb->sd;
- diskdinfo_t *diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo_t *diskdinfo = SD->fsdata;
int fd = -1;
int used = 0;
int dirs_opened = 0;
static void
storeDiskdDirCloseTmpSwapLog(SwapDir * sd)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
char *swaplog_path = xstrdup(storeDiskdDirSwapLogFile(sd, NULL));
char *new_path = xstrdup(storeDiskdDirSwapLogFile(sd, ".new"));
int fd;
static FILE *
storeDiskdDirOpenTmpSwapLog(SwapDir * sd, int *clean_flag, int *zero_flag)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
char *swaplog_path = xstrdup(storeDiskdDirSwapLogFile(sd, NULL));
char *clean_path = xstrdup(storeDiskdDirSwapLogFile(sd, ".last-clean"));
char *new_path = xstrdup(storeDiskdDirSwapLogFile(sd, ".new"));
static void
storeDiskdDirSwapLog(const SwapDir * sd, const StoreEntry * e, int op)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
storeSwapLogData *s = xcalloc(1, sizeof(storeSwapLogData));
s->op = (char) op;
s->swap_filen = e->swap_filen;
N0 = n_diskd_dirs;
D0 = diskd_dir_index[swap_index % N0];
SD = &Config.cacheSwap.swapDirs[D0];
- diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo = SD->fsdata;
N1 = diskdinfo->l1;
D1 = (swap_index / N0) % N1;
N2 = diskdinfo->l2;
if (!storeDiskdDirIs(sd))
continue;
diskd_dir_index[n++] = i;
- diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo = sd->fsdata;
j += (diskdinfo->l1 * diskdinfo->l2);
}
assert(n == n_diskd_dirs);
int filn = fn;
diskdinfo_t *diskdinfo;
assert(F0 < Config.cacheSwap.n_configured);
- diskdinfo = (diskdinfo_t *) Config.cacheSwap.swapDirs[F0].fsdata;
+ diskdinfo = Config.cacheSwap.swapDirs[F0].fsdata;
L1 = diskdinfo->l1;
L2 = diskdinfo->l2;
D1 = ((filn / L2) / L2) % L1;
int
storeDiskdDirValidFileno(SwapDir * SD, sfileno filn)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo_t *diskdinfo = SD->fsdata;
if (filn < 0)
return 0;
if (filn > diskdinfo->map->max_n_files)
{
int loadav;
- diskdinfo_t *diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo_t *diskdinfo = SD->fsdata;
#if !HEAP_REPLACEMENT
if (storeDiskdDirExpiredReferenceAge(SD) < 300) {
debug(20, 3) ("storeDiskdDirCheckObj: NO: LRU Age = %d\n",
storeDiskdShmGet(SwapDir * sd, int *shm_offset)
{
char *buf;
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
buf = linklistShift(&diskdinfo->shm.stack);
assert(buf);
*shm_offset = buf - diskdinfo->shm.buf;
storeDiskdShmPut(SwapDir * sd, int offset)
{
char *buf;
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
assert(offset >= 0);
assert(offset < SHMBUFS * SHMBUF_BLKSZ);
buf = diskdinfo->shm.buf + offset;
#if HAVE_STATVFS
struct statvfs sfs;
#endif
- diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo = SD->fsdata;
storeAppendPrintf(sentry, "First level subdirectories: %d\n", diskdinfo->l1);
storeAppendPrintf(sentry, "Second level subdirectories: %d\n", diskdinfo->l2);
storeAppendPrintf(sentry, "Maximum Size: %d KB\n", SD->max_size);
if (sd->flags.read_only != read_only)
debug(3, 1) ("Cache dir '%s' now %s\n",
path, read_only ? "Read-Only" : "Read-Write");
- diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo = sd->fsdata;
diskdinfo->magic1 = magic1;
diskdinfo->magic2 = magic2;
sd->flags.read_only = read_only;
void
storeDiskdDirDump(StoreEntry * entry, const char *name, SwapDir * s)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) s->fsdata;
+ diskdinfo_t *diskdinfo = s->fsdata;
storeAppendPrintf(entry, "%s %s %s %d %d %d\n",
name,
"diskd",
static void
storeDiskdDirFree(SwapDir * s)
{
- diskdinfo_t *diskdinfo = (diskdinfo_t *) s->fsdata;
+ diskdinfo_t *diskdinfo = s->fsdata;
if (diskdinfo->swaplog_fd > -1) {
file_close(diskdinfo->swaplog_fd);
diskdinfo->swaplog_fd = -1;
storeDiskdDirFullPath(SwapDir * SD, sfileno filn, char *fullpath)
{
LOCAL_ARRAY(char, fullfilename, SQUID_MAXPATHLEN);
- diskdinfo_t *diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo_t *diskdinfo = SD->fsdata;
int L1 = diskdinfo->l1;
int L2 = diskdinfo->l2;
if (!fullpath)
int x;
storeIOState *sio;
char *buf;
+ diskdstate_t *diskdstate;
int shm_offset;
- diskdinfo_t *diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo_t *diskdinfo = SD->fsdata;
debug(81, 3) ("storeDiskdOpen: fileno %08X\n", f);
/*
* XXX Eventually there should be an option here to fail on open()
}
sio = memAllocate(MEM_STORE_IO);
cbdataAdd(sio, storeDiskdIOFreeEntry, MEM_STORE_IO);
- sio->fsstate = memPoolAlloc(diskd_state_pool);
+ sio->fsstate = diskdstate = memPoolAlloc(diskd_state_pool);
sio->swap_filen = f;
sio->swap_dirn = SD->index;
sio->e = e;
cbdataLock(callback_data);
- ((diskdstate_t *) (sio->fsstate))->flags.writing = 0;
- ((diskdstate_t *) (sio->fsstate))->flags.reading = 0;
- ((diskdstate_t *) (sio->fsstate))->flags.close_request = 0;
- ((diskdstate_t *) (sio->fsstate))->id = diskd_stats.sio_id++;
+ diskdstate->flags.writing = 0;
+ diskdstate->flags.reading = 0;
+ diskdstate->flags.close_request = 0;
+ diskdstate->id = diskd_stats.sio_id++;
buf = storeDiskdShmGet(SD, &shm_offset);
/* XXX WRONG!!! :) */
strcpy(buf, storeDiskdDirFullPath(SD, f, NULL));
x = storeDiskdSend(_MQD_OPEN,
SD,
- ((diskdstate_t *) (sio->fsstate))->id,
+ diskdstate->id,
sio,
strlen(buf) + 1,
O_RDONLY,
storeIOState *sio;
char *buf;
int shm_offset;
- diskdinfo_t *diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo_t *diskdinfo = SD->fsdata;
+ diskdstate_t *diskdstate;
/*
* XXX Eventually there should be an option here to fail on open()
* If there are too many requests queued.
sio = memAllocate(MEM_STORE_IO);
cbdataAdd(sio, storeDiskdIOFreeEntry, MEM_STORE_IO);
- sio->fsstate = memPoolAlloc(diskd_state_pool);
+ sio->fsstate = diskdstate = memPoolAlloc(diskd_state_pool);
sio->swap_filen = f;
sio->swap_dirn = SD->index;
sio->e = e;
cbdataLock(callback_data);
- ((diskdstate_t *) (sio->fsstate))->flags.writing = 0;
- ((diskdstate_t *) (sio->fsstate))->flags.reading = 0;
- ((diskdstate_t *) (sio->fsstate))->flags.close_request = 0;
- ((diskdstate_t *) (sio->fsstate))->id = diskd_stats.sio_id++;
+ diskdstate->flags.writing = 0;
+ diskdstate->flags.reading = 0;
+ diskdstate->flags.close_request = 0;
+ diskdstate->id = diskd_stats.sio_id++;
buf = storeDiskdShmGet(SD, &shm_offset);
/* XXX WRONG!!! :) */
strcpy(buf, storeDiskdDirFullPath(SD, f, NULL));
x = storeDiskdSend(_MQD_OPEN,
SD,
- ((diskdstate_t *) (sio->fsstate))->id,
+ diskdstate->id,
sio,
strlen(buf) + 1,
sio->mode,
storeDiskdClose(SwapDir * SD, storeIOState * sio)
{
int x;
- diskdstate_t *diskdstate = (diskdstate_t *) sio->fsstate;
+ diskdstate_t *diskdstate = sio->fsstate;
debug(81, 3) ("storeDiskdClose: dirno %d, fileno %08X\n", SD->index,
sio->swap_filen);
x = storeDiskdSend(_MQD_CLOSE,
int x;
int shm_offset;
char *rbuf;
- diskdstate_t *diskdstate = (diskdstate_t *) sio->fsstate;
+ diskdstate_t *diskdstate = sio->fsstate;
if (!cbdataValid(sio))
return;
if (diskdstate->flags.reading) {
int x;
char *sbuf;
int shm_offset;
- diskdstate_t *diskdstate = (diskdstate_t *) sio->fsstate;
+ diskdstate_t *diskdstate = sio->fsstate;
debug(81, 3) ("storeDiskdWrite: dirno %d, fileno %08X\n", SD->index, sio->swap_filen);
if (!cbdataValid(sio)) {
free_func(buf);
int x;
int shm_offset;
char *buf;
- diskdinfo_t *diskdinfo = (diskdinfo_t *) SD->fsdata;
+ diskdinfo_t *diskdinfo = SD->fsdata;
debug(81, 3) ("storeDiskdUnlink: dirno %d, fileno %08X\n", SD->index,
e->swap_filen);
storeDiskdWriteDone(diomsg * M)
{
storeIOState *sio = M->callback_data;
- diskdstate_t *diskdstate = (diskdstate_t *) sio->fsstate;
+ diskdstate_t *diskdstate = sio->fsstate;
Counter.syscalls.disk.writes++;
diskdstate->flags.writing = 0;
debug(81, 3) ("storeDiskdWriteDone: dirno %d, fileno %08x status %d\n",
static int send_errors = 0;
static int last_seq_no = 0;
static int seq_no = 0;
- diskdinfo_t *diskdinfo = (diskdinfo_t *) sd->fsdata;
+ diskdinfo_t *diskdinfo = sd->fsdata;
M.mtype = mtype;
M.callback_data = sio;
M.size = size;