3
* $Id: DiskdIOStrategy.h,v 1.2 2006/05/22 19:58:51 wessels Exp $
5
* DEBUG: section 79 Squid-side DISKD I/O functions.
6
* AUTHOR: Duane Wessels
8
* SQUID Web Proxy Cache http://www.squid-cache.org/
9
* ----------------------------------------------------------
11
* Squid is the result of efforts by numerous individuals from
12
* the Internet community; see the CONTRIBUTORS file for full
13
* details. Many organizations have provided support for Squid's
14
* development; see the SPONSORS file for full details. Squid is
15
* Copyrighted (C) 2001 by the Regents of the University of
16
* California; see the COPYRIGHT file for full details. Squid
17
* incorporates software developed and/or copyrighted by other
18
* sources; see the CREDITS file for full details.
20
* This program is free software; you can redistribute it and/or modify
21
* it under the terms of the GNU General Public License as published by
22
* the Free Software Foundation; either version 2 of the License, or
23
* (at your option) any later version.
25
* This program is distributed in the hope that it will be useful,
26
* but WITHOUT ANY WARRANTY; without even the implied warranty of
27
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28
* GNU General Public License for more details.
30
* You should have received a copy of the GNU General Public License
31
* along with this program; if not, write to the Free Software
32
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
34
* Copyright (c) 2003, Robert Collins <robertc@squid-cache.org>
37
#ifndef __STORE_DISKDIOSTRATEGY_H__
38
#define __STORE_DISKDIOSTRATEGY_H__
41
* magic2 is the point at which we start blocking on msgsnd/msgrcv.
42
* If a queue has magic2 (or more) messages away, then we read the
43
* queue until the level falls below magic2. Recommended value
44
* is 75% of SHMBUFS. magic1 is the number of messages away which we
45
* stop allowing open/create for.
59
void init (int ikey, int magic2);
70
#include "DiskIO/DiskIOStrategy.h"
71
#include "StoreIOState.h"
79
class DiskdIOStrategy : public DiskIOStrategy
84
virtual bool shedLoad();
86
virtual RefCount<DiskFile> newFile(char const *path);
87
virtual void unlinkFile (char const *);
88
virtual ConfigOption *getOptionTree() const;
91
virtual int callback();
92
virtual void statfs(StoreEntry & sentry)const;
93
int send(int mtype, int id, DiskdFile *theFile, int size, int offset, off_t shm_offset, RefCountable_ *);
94
/* public for accessing return address's */
98
static size_t newInstance();
99
static size_t nextInstanceID;
101
bool optionQ1Parse(char const *option, const char *value, int reconfiguring);
102
void optionQ1Dump(StoreEntry * e) const;
103
bool optionQ2Parse(char const *option, const char *value, int reconfiguring);
104
void optionQ2Dump(StoreEntry * e) const;
105
int send(int mtype, int id, RefCount<StoreIOState> sio, int size, int offset, off_t shm_offset);
106
void handle(diomsg * M);
107
void unlinkDone(diomsg * M);
117
#define SHMBUF_BLKSZ SM_PAGE_SIZE
122
int open_fail_queue_len;
138
open, create, close, unlink, read, write;
141
extern diskd_stats_t diskd_stats;