--------------------- PatchSet 364 Date: 2002/12/14 00:02:01 Author: rbcollins Branch: unify-io Tag: (none) Log: move IOStrategy down to UFSSwapDir level - it's too broad at the moment Members: src/SwapDir.cc:1.1.2.16->1.1.2.17 src/SwapDir.h:1.1.2.21->1.1.2.22 src/ufscommon.h:1.1.20.43->1.1.20.44 src/fs/aufs/store_dir_aufs.cc:1.2.12.23->1.2.12.24 src/fs/aufs/store_io_aufs.cc:1.3.12.37->1.3.12.38 src/fs/coss/store_coss.h:1.3.10.19->1.3.10.20 src/fs/coss/store_dir_coss.cc:1.4.10.20->1.4.10.21 src/fs/coss/store_io_coss.cc:1.3.10.12->1.3.10.13 src/fs/diskd/store_dir_diskd.cc:1.2.16.31->1.2.16.32 src/fs/null/store_null.cc:1.1.20.9->1.1.20.10 src/fs/ufs/store_dir_ufs.cc:1.1.20.26->1.1.20.27 src/fs/ufs/store_io_ufs.cc:1.3.10.43->1.3.10.44 Index: squid3/src/SwapDir.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/SwapDir.cc,v retrieving revision 1.1.2.16 retrieving revision 1.1.2.17 diff -u -r1.1.2.16 -r1.1.2.17 --- squid3/src/SwapDir.cc 13 Dec 2002 23:23:31 -0000 1.1.2.16 +++ squid3/src/SwapDir.cc 14 Dec 2002 00:02:01 -0000 1.1.2.17 @@ -1,6 +1,6 @@ /* - * $Id: SwapDir.cc,v 1.1.2.16 2002/12/13 23:23:31 rbcollins Exp $ + * $Id: SwapDir.cc,v 1.1.2.17 2002/12/14 00:02:01 rbcollins Exp $ * * DEBUG: section ?? Swap Dir base object * AUTHOR: Robert Collins @@ -41,13 +41,11 @@ SwapDir::Factory (_storefs_entry const &fs) { SwapDir *result = fs.newfunc(); - assert (result->IO); result->type = fs.typestr; return result; } SwapDir::~SwapDir() { - IO->deleteSelf(); xfree(path); } Index: squid3/src/SwapDir.h =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/SwapDir.h,v retrieving revision 1.1.2.21 retrieving revision 1.1.2.22 diff -u -r1.1.2.21 -r1.1.2.22 --- squid3/src/SwapDir.h 13 Dec 2002 23:23:31 -0000 1.1.2.21 +++ squid3/src/SwapDir.h 14 Dec 2002 00:02:03 -0000 1.1.2.22 @@ -1,6 +1,6 @@ /* - * $Id: SwapDir.h,v 1.1.2.21 2002/12/13 23:23:31 rbcollins Exp $ + * $Id: SwapDir.h,v 1.1.2.22 2002/12/14 00:02:03 rbcollins Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -44,12 +44,11 @@ struct SwapDir { public: static SwapDir *Factory (_storefs_entry const &fs); - SwapDir() : IO(NULL), max_objsize (-1){ + SwapDir() : max_objsize (-1){ fs.blksize = 1024; } virtual ~SwapDir(); const char *type; - IOStrategy *IO; int cur_size; int low_size; int max_size; Index: squid3/src/ufscommon.h =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/Attic/ufscommon.h,v retrieving revision 1.1.20.43 retrieving revision 1.1.20.44 diff -u -r1.1.20.43 -r1.1.20.44 --- squid3/src/ufscommon.h 13 Dec 2002 22:29:35 -0000 1.1.20.43 +++ squid3/src/ufscommon.h 14 Dec 2002 00:02:03 -0000 1.1.20.44 @@ -1,6 +1,6 @@ /* - * $Id: ufscommon.h,v 1.1.20.43 2002/12/13 22:29:35 rbcollins Exp $ + * $Id: ufscommon.h,v 1.1.20.44 2002/12/14 00:02:03 rbcollins Exp $ * * SQUID Web Proxy Cache http://www.squid-cache.org/ * ---------------------------------------------------------- @@ -79,6 +79,7 @@ class UFSSwapDir : public SwapDir { public: + UFSSwapDir(); virtual void init(); virtual void newFileSystem(); virtual void dump(StoreEntry &) const; @@ -94,6 +95,7 @@ void unlinkFile(sfileno f); // move down when unlink is a virtual method //protected: + IOStrategy *IO; char *fullPath(sfileno, char *) const; private: static EVH CleanEvent; Index: squid3/src/fs/aufs/store_dir_aufs.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/fs/aufs/Attic/store_dir_aufs.cc,v retrieving revision 1.2.12.23 retrieving revision 1.2.12.24 diff -u -r1.2.12.23 -r1.2.12.24 --- squid3/src/fs/aufs/store_dir_aufs.cc 13 Dec 2002 23:23:31 -0000 1.2.12.23 +++ squid3/src/fs/aufs/store_dir_aufs.cc 14 Dec 2002 00:02:03 -0000 1.2.12.24 @@ -1,6 +1,6 @@ /* - * $Id: store_dir_aufs.cc,v 1.2.12.23 2002/12/13 23:23:31 rbcollins Exp $ + * $Id: store_dir_aufs.cc,v 1.2.12.24 2002/12/14 00:02:03 rbcollins Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels @@ -218,7 +218,7 @@ static SwapDir * storeAufsNew(void) { - SwapDir *result = new AUFSSwapDir; + AUFSSwapDir *result = new AUFSSwapDir; result->IO = &AufsIO::Instance; return result; } Index: squid3/src/fs/aufs/store_io_aufs.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/fs/aufs/Attic/store_io_aufs.cc,v retrieving revision 1.3.12.37 retrieving revision 1.3.12.38 diff -u -r1.3.12.37 -r1.3.12.38 --- squid3/src/fs/aufs/store_io_aufs.cc 13 Dec 2002 20:43:47 -0000 1.3.12.37 +++ squid3/src/fs/aufs/store_io_aufs.cc 14 Dec 2002 00:02:04 -0000 1.3.12.38 @@ -221,7 +221,7 @@ storeAufsOpen(SwapDir * SD, StoreEntry * e, STFNCB * file_callback, STIOCB * callback, void *callback_data) { - UFSStrategy *IO = dynamic_cast (SD->IO); + UFSStrategy *IO = dynamic_cast (((AUFSSwapDir *)SD)->IO); assert (IO); return IO->open (SD, e, file_callback, callback, callback_data); } @@ -230,7 +230,7 @@ StoreIOState::Pointer storeAufsCreate(SwapDir * SD, StoreEntry * e, STFNCB * file_callback, STIOCB * callback, void *callback_data) { - UFSStrategy *IO = dynamic_cast (SD->IO); + UFSStrategy *IO = dynamic_cast (((AUFSSwapDir *)SD)->IO); assert (IO); return IO->create (SD, e, file_callback, callback, callback_data); } Index: squid3/src/fs/coss/store_coss.h =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/fs/coss/store_coss.h,v retrieving revision 1.3.10.19 retrieving revision 1.3.10.20 diff -u -r1.3.10.19 -r1.3.10.20 --- squid3/src/fs/coss/store_coss.h 13 Dec 2002 23:23:31 -0000 1.3.10.19 +++ squid3/src/fs/coss/store_coss.h 14 Dec 2002 00:02:04 -0000 1.3.10.20 @@ -120,14 +120,4 @@ extern void storeCossAdd(SwapDir *, StoreEntry *); extern void storeCossRemove(SwapDir *, StoreEntry *); extern void storeCossStartMembuf(SwapDir * SD); - -#include "IOStrategy.h" -class COSSIO : public IOStrategy -{ -public: - virtual bool shedLoad(); - virtual void deleteSelf() const; - virtual StoreIOState::Pointer createState(SwapDir *SD, StoreEntry *e, STIOCB * callback, void *callback_data) const; - static COSSIO Instance; -}; #endif Index: squid3/src/fs/coss/store_dir_coss.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/fs/coss/store_dir_coss.cc,v retrieving revision 1.4.10.20 retrieving revision 1.4.10.21 diff -u -r1.4.10.20 -r1.4.10.21 --- squid3/src/fs/coss/store_dir_coss.cc 13 Dec 2002 23:23:31 -0000 1.4.10.20 +++ squid3/src/fs/coss/store_dir_coss.cc 14 Dec 2002 00:02:05 -0000 1.4.10.21 @@ -1,6 +1,6 @@ /* - * $Id: store_dir_coss.cc,v 1.4.10.20 2002/12/13 23:23:31 rbcollins Exp $ + * $Id: store_dir_coss.cc,v 1.4.10.21 2002/12/14 00:02:05 rbcollins Exp $ * * DEBUG: section 47 Store COSS Directory Routines * AUTHOR: Eric Stern @@ -869,7 +869,6 @@ storeCossNew(void) { SwapDir *result = new CossSwapDir; - result->IO = &COSSIO::Instance; return result; } Index: squid3/src/fs/coss/store_io_coss.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/fs/coss/store_io_coss.cc,v retrieving revision 1.3.10.12 retrieving revision 1.3.10.13 diff -u -r1.3.10.12 -r1.3.10.13 --- squid3/src/fs/coss/store_io_coss.cc 13 Dec 2002 23:23:31 -0000 1.3.10.12 +++ squid3/src/fs/coss/store_io_coss.cc 14 Dec 2002 00:02:05 -0000 1.3.10.13 @@ -1,6 +1,6 @@ /* - * $Id: store_io_coss.cc,v 1.3.10.12 2002/12/13 23:23:31 rbcollins Exp $ + * $Id: store_io_coss.cc,v 1.3.10.13 2002/12/14 00:02:05 rbcollins Exp $ * * DEBUG: section 79 Storage Manager COSS Interface * AUTHOR: Eric Stern @@ -55,26 +55,6 @@ /* === PUBLIC =========================================================== */ -COSSIO COSSIO::Instance; - -bool -COSSIO::shedLoad() -{ - return false; -} -void -COSSIO::deleteSelf() const -{ - /* Do nothing, we use a single instance */ -} - -StoreIOState::Pointer -COSSIO::createState(SwapDir *SD, StoreEntry *e, STIOCB * callback, void *callback_data) const -{ - assert(0); - return NULL; -} - MemPool *CossState::Pool = NULL; void * Index: squid3/src/fs/diskd/store_dir_diskd.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/fs/diskd/Attic/store_dir_diskd.cc,v retrieving revision 1.2.16.31 retrieving revision 1.2.16.32 diff -u -r1.2.16.31 -r1.2.16.32 --- squid3/src/fs/diskd/store_dir_diskd.cc 13 Dec 2002 23:23:32 -0000 1.2.16.31 +++ squid3/src/fs/diskd/store_dir_diskd.cc 14 Dec 2002 00:02:06 -0000 1.2.16.32 @@ -1,6 +1,6 @@ /* - * $Id: store_dir_diskd.cc,v 1.2.16.31 2002/12/13 23:23:32 rbcollins Exp $ + * $Id: store_dir_diskd.cc,v 1.2.16.32 2002/12/14 00:02:06 rbcollins Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels @@ -245,7 +245,7 @@ static void storeDiskdDirParseQ1(SwapDir * sd, const char *name, const char *value, int reconfiguring) { - DiskdIO *IO = dynamic_cast(sd->IO); + DiskdIO *IO = dynamic_cast(((DiskdSwapDir *)sd)->IO); int old_magic1 = IO->magic1; IO->magic1 = atoi(value); if (!reconfiguring) @@ -270,14 +270,14 @@ static void storeDiskdDirDumpQ1(StoreEntry * e, const char *option, SwapDir const * sd) { - DiskdIO *IO = dynamic_cast(sd->IO); + DiskdIO *IO = dynamic_cast(((DiskdSwapDir *)sd)->IO); storeAppendPrintf(e, " Q1=%d", IO->magic1); } static void storeDiskdDirParseQ2(SwapDir * sd, const char *name, const char *value, int reconfiguring) { - DiskdIO *IO = dynamic_cast(sd->IO); + DiskdIO *IO = dynamic_cast(((DiskdSwapDir *)sd)->IO); assert (IO); int old_magic2 = IO->magic2; IO->magic2 = atoi(value); @@ -297,7 +297,7 @@ static void storeDiskdDirDumpQ2(StoreEntry * e, const char *option, SwapDir const * sd) { - DiskdIO *IO = dynamic_cast(sd->IO); + DiskdIO *IO = dynamic_cast(((DiskdSwapDir *)sd)->IO); storeAppendPrintf(e, " Q2=%d", IO->magic2); } @@ -420,7 +420,7 @@ static SwapDir * storeDiskdNew(void) { - SwapDir *result = new DiskdSwapDir; + DiskdSwapDir *result = new DiskdSwapDir; result->IO = new DiskdIO; return result; } Index: squid3/src/fs/null/store_null.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/fs/null/store_null.cc,v retrieving revision 1.1.20.9 retrieving revision 1.1.20.10 diff -u -r1.1.20.9 -r1.1.20.10 --- squid3/src/fs/null/store_null.cc 13 Dec 2002 22:03:38 -0000 1.1.20.9 +++ squid3/src/fs/null/store_null.cc 14 Dec 2002 00:02:07 -0000 1.1.20.10 @@ -1,6 +1,6 @@ /* - * $Id: store_null.cc,v 1.1.20.9 2002/12/13 22:03:38 rbcollins Exp $ + * $Id: store_null.cc,v 1.1.20.10 2002/12/14 00:02:07 rbcollins Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels @@ -41,15 +41,6 @@ #endif #include "SwapDir.h" #include "Store.h" -#include "IOStrategy.h" -class NullIO : public IOStrategy -{ -public: - virtual bool shedLoad(); - virtual void deleteSelf() const; - virtual StoreIOState::Pointer createState(SwapDir *SD, StoreEntry *e, STIOCB * callback, void *callback_data) const; - static NullIO Instance; -}; class NullSwapDir : public SwapDir { @@ -67,25 +58,6 @@ /* The only externally visible interface */ STSETUP storeFsSetup_null; -extern NullIO NullIO::Instance; -bool -NullIO::shedLoad() -{ - return true; -} -void -NullIO::deleteSelf() const -{ - /* Do nothing, we use a single instance */ -} - -StoreIOState::Pointer -NullIO::createState(SwapDir *SD, StoreEntry *e, STIOCB * callback, void *callback_data) const -{ - assert (0); - return NULL; -} - static void storeNullDirReconfigure(SwapDir * sd, int index, char *path) { @@ -102,7 +74,6 @@ storeNullNew(void) { SwapDir *result = new NullSwapDir; - result->IO = &NullIO::Instance; return result; } Index: squid3/src/fs/ufs/store_dir_ufs.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/fs/ufs/store_dir_ufs.cc,v retrieving revision 1.1.20.26 retrieving revision 1.1.20.27 diff -u -r1.1.20.26 -r1.1.20.27 --- squid3/src/fs/ufs/store_dir_ufs.cc 13 Dec 2002 23:23:32 -0000 1.1.20.26 +++ squid3/src/fs/ufs/store_dir_ufs.cc 14 Dec 2002 00:02:07 -0000 1.1.20.27 @@ -1,6 +1,6 @@ /* - * $Id: store_dir_ufs.cc,v 1.1.20.26 2002/12/13 23:23:32 rbcollins Exp $ + * $Id: store_dir_ufs.cc,v 1.1.20.27 2002/12/14 00:02:07 rbcollins Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels @@ -215,6 +215,8 @@ createSwapSubDirs(); } +UFSSwapDir::UFSSwapDir() : IO(NULL) {} + UFSSwapDir::~UFSSwapDir() { squidufsinfo_t *ioinfo = (squidufsinfo_t *) fsdata; @@ -226,6 +228,9 @@ xfree(ioinfo); /* This memory leaks. XXX: FIXME - fsdata needs to go away */ fsdata = NULL; /* Will aid debugging... */ + if (IO) + IO->deleteSelf(); + IO = NULL; } static void @@ -237,7 +242,7 @@ static SwapDir * storeUfsNew(void) { - SwapDir *result = new UfsSwapDir; + UfsSwapDir *result = new UfsSwapDir; result->IO = &UfsIO::Instance; return result; } Index: squid3/src/fs/ufs/store_io_ufs.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/fs/ufs/store_io_ufs.cc,v retrieving revision 1.3.10.43 retrieving revision 1.3.10.44 diff -u -r1.3.10.43 -r1.3.10.44 --- squid3/src/fs/ufs/store_io_ufs.cc 13 Dec 2002 20:44:03 -0000 1.3.10.43 +++ squid3/src/fs/ufs/store_io_ufs.cc 14 Dec 2002 00:02:08 -0000 1.3.10.44 @@ -1,6 +1,6 @@ /* - * $Id: store_io_ufs.cc,v 1.3.10.43 2002/12/13 20:44:03 rbcollins Exp $ + * $Id: store_io_ufs.cc,v 1.3.10.44 2002/12/14 00:02:08 rbcollins Exp $ * * DEBUG: section 79 Storage Manager UFS Interface * AUTHOR: Duane Wessels @@ -217,7 +217,7 @@ commonUFSOpen(SwapDir * SD, StoreEntry * e, STFNCB * file_callback, STIOCB * callback, void *callback_data) { - UFSStrategy *IO = dynamic_cast (SD->IO); + UFSStrategy *IO = dynamic_cast (((UfsSwapDir *)SD)->IO); assert (IO); return IO->open (SD, e, file_callback, callback, callback_data); } @@ -225,7 +225,7 @@ StoreIOState::Pointer commonUFSCreate(SwapDir * SD, StoreEntry * e, STFNCB * file_callback, STIOCB * callback, void *callback_data) { - UFSStrategy *IO = dynamic_cast (SD->IO); + UFSStrategy *IO = dynamic_cast (((UfsSwapDir *)SD)->IO); assert (IO); return IO->create (SD, e, file_callback, callback, callback_data); } @@ -527,7 +527,7 @@ UFSStrategy::open(SwapDir * SD, StoreEntry * e, STFNCB * file_callback, STIOCB * callback, void *callback_data) { - assert (SD->IO == this); + assert (((UfsSwapDir *)SD)->IO == this); debug(79, 3) ("UFSStrategy::open: fileno %08X\n", e->swap_filen); if (shedLoad()) { openFailed(); @@ -557,7 +557,7 @@ UFSStrategy::create(SwapDir * SD, StoreEntry * e, STFNCB * file_callback, STIOCB * callback, void *callback_data) { - assert (SD->IO == this); + assert (((UfsSwapDir *)SD)->IO == this); /* Allocate a number */ sfileno filn = commonUfsDirMapBitAllocate(SD); debug(79, 3) ("UFSStrategy::create: fileno %08X\n", filn);