]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
committing first stab at async disk IO with new disk storage interface
authorwessels <>
Thu, 27 May 1999 02:41:15 +0000 (02:41 +0000)
committerwessels <>
Thu, 27 May 1999 02:41:15 +0000 (02:41 +0000)
src/Makefile.in
src/cache_cf.cc
src/enums.h
src/protos.h
src/structs.h

index 8d8418d978ba2bc57d0f7610ec6a30373f0507aa..12223101be8d7e221f0e24cc4172f1094922c0ea 100644 (file)
@@ -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
index 25cbcdb3b537295fc1d9285d83e2683099d7c9e0..ed095322b40018f3ac94ab92bca17b15baca1b5e 100644 (file)
@@ -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:
index 4a0912ec79ac8451c32df29ffa2450df13fca619..b6a10f9989e21bf4ad2abce9f17e62c4bf164fb2 100644 (file)
@@ -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;
index c6d3ed37eab2b37de7a884ed8ee39804ba65be8b..1bc7f5c34a43d00f5429738f981ef7104a140f86 100644 (file)
@@ -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
 
 
 /*
index 1b70d1453f2b43afd84b66e4191ed5a9ffc3cb54..a643df88beb131ef8d09fe6388fee116e957bf0b 100644 (file)
@@ -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;
 };