From: wessels <> Date: Thu, 27 May 1999 02:41:15 +0000 (+0000) Subject: committing first stab at async disk IO with new disk storage interface X-Git-Tag: SQUID_3_0_PRE1~2168 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=53fa92a55abc907c7142e64826df0b684ecac2fd;p=thirdparty%2Fsquid.git committing first stab at async disk IO with new disk storage interface --- diff --git a/src/Makefile.in b/src/Makefile.in index 8d8418d978..12223101be 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.174 1999/05/25 22:05:47 wessels Exp $ +# $Id: Makefile.in,v 1.175 1999/05/26 20:41:15 wessels Exp $ # # Uncomment and customize the following to suit your needs: # @@ -185,7 +185,8 @@ DELAY_OBJS = delay_pools.o ASYNC_OBJS = \ aiops.o \ - async_io.o + async_io.o \ + store_io_asyncufs.o LEAKFINDER_OBJS = \ leakfinder.o diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 25cbcdb3b5..ed095322b4 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,6 +1,6 @@ /* - * $Id: cache_cf.cc,v 1.330 1999/05/22 07:42:01 wessels Exp $ + * $Id: cache_cf.cc,v 1.331 1999/05/26 20:41:18 wessels Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -757,6 +757,7 @@ dump_cachedir(StoreEntry * entry, const char *name, cacheSwap swap) s = swap.swapDirs + i; switch (s->type) { case SWAPDIR_UFS: + case SWAPDIR_ASYNCUFS: storeUfsDirDump(entry, name, s); break; default: @@ -804,6 +805,8 @@ parse_cachedir(cacheSwap * swap) self_destruct(); if (0 == strcasecmp(type_str, "ufs")) { storeUfsDirParse(swap); + } else if (0 == strcasecmp(type_str, "asyncufs")) { + storeAufsDirParse(swap); } else { fatalf("Unknown cache_dir type '%s'\n", type_str); } @@ -821,6 +824,7 @@ free_cachedir(cacheSwap * swap) s = swap->swapDirs + i; switch (s->type) { case SWAPDIR_UFS: + case SWAPDIR_ASYNCUFS: storeUfsDirFree(s); break; default: diff --git a/src/enums.h b/src/enums.h index 4a0912ec79..b6a10f9989 100644 --- a/src/enums.h +++ b/src/enums.h @@ -1,6 +1,6 @@ /* - * $Id: enums.h,v 1.153 1999/05/22 07:42:03 wessels Exp $ + * $Id: enums.h,v 1.154 1999/05/26 20:41:19 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -628,6 +628,6 @@ enum { typedef enum { SWAPDIR_UFS, - SWAPDIR_UFS_ASYNC, + SWAPDIR_ASYNCUFS, SWAPDIR_MAX } swapdir_t; diff --git a/src/protos.h b/src/protos.h index c6d3ed37ea..1bc7f5c34a 100644 --- a/src/protos.h +++ b/src/protos.h @@ -1,6 +1,6 @@ /* - * $Id: protos.h,v 1.335 1999/05/26 17:08:00 wessels Exp $ + * $Id: protos.h,v 1.336 1999/05/26 20:41:21 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -80,12 +80,12 @@ extern int aio_operations_pending(void); extern int aio_overloaded(void); extern int aio_sync(void); -extern void aioCancel(int, void *); -extern void aioOpen(const char *, int, mode_t, AIOCB *, void *, void *); +extern void aioCancel(int); +extern void aioOpen(const char *, int, mode_t, AIOCB *, void *); extern void aioClose(int); -extern void aioWrite(int, int offset, char *, int size, AIOCB *, void *); +extern void aioWrite(int, int offset, char *, int size, AIOCB *, void *, FREE *); extern void aioRead(int, int offset, char *, int size, AIOCB *, void *); -extern void aioStat(char *, struct stat *, AIOCB *, void *, void *); +extern void aioStat(char *, struct stat *, AIOCB *, void *); extern void aioUnlink(const char *, AIOCB *, void *); extern void aioCheckCallbacks(void); extern void aioSync(void); @@ -862,13 +862,25 @@ extern STOBJWRITE storeWrite; extern STOBJUNLINK storeUnlink; extern off_t storeOffset(storeIOState *); -/* store_io_ufs.c */ -extern storeIOState *storeUfsOpen(sfileno f, mode_t mode, STIOCB * callback, void *callback_data); +/* + * store_io_ufs.c + */ +extern storeIOState *storeUfsOpen(sfileno, mode_t, STIOCB *, void *); extern void storeUfsClose(storeIOState * sio); -extern void storeUfsRead(storeIOState * sio, char *buf, size_t size, off_t offset, STRCB * callback, void *callback_data); -extern void storeUfsWrite(storeIOState * sio, char *buf, size_t size, off_t offset, FREE *); +extern void storeUfsRead(storeIOState *, char *, size_t, off_t, STRCB *, void *); +extern void storeUfsWrite(storeIOState *, char *, size_t, off_t, FREE *); extern void storeUfsUnlink(int fileno); -extern char *storeUfsFullPath(sfileno fn, char *fullpath); /* XXX want this to be static */ + +#if USE_ASYNC_IO +/* + * store_io_ufs.c + */ +extern storeIOState *storeAufsOpen(sfileno, mode_t, STIOCB *, void *); +extern void storeAufsClose(storeIOState * sio); +extern void storeAufsRead(storeIOState *, char *, size_t, off_t, STRCB *, void *); +extern void storeAufsWrite(storeIOState *, char *, size_t, off_t, FREE *); +extern void storeAufsUnlink(int fileno); +#endif /* * store_log.c @@ -940,6 +952,10 @@ extern OBJH storeUfsDirStats; extern void storeUfsDirParse(cacheSwap * swap); extern void storeUfsDirDump(StoreEntry * entry, const char *name, SwapDir * s); extern void storeUfsDirFree(SwapDir *); +extern char *storeUfsFullPath(sfileno fn, char *fullpath); +#if USE_ASYNC_IO +extern void storeAufsDirParse(cacheSwap * swap); +#endif /* diff --git a/src/structs.h b/src/structs.h index 1b70d1453f..a643df88be 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1,6 +1,6 @@ /* - * $Id: structs.h,v 1.294 1999/05/26 06:48:10 wessels Exp $ + * $Id: structs.h,v 1.295 1999/05/26 20:41:24 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -1343,6 +1343,15 @@ struct _storeIOState { unsigned int writing:1; } flags; } ufs; + struct { + int fd; + const char *read_buf; + struct { + unsigned int close_request:1; + unsigned int reading:1; + unsigned int writing:1; + } flags; + } aufs; } type; };