]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Use Blocking DiskIO module when runnining in a no-daemon mode.
authorAlex Rousskov <rousskov@measurement-factory.com>
Tue, 1 Feb 2011 20:18:27 +0000 (13:18 -0700)
committerAlex Rousskov <rousskov@measurement-factory.com>
Tue, 1 Feb 2011 20:18:27 +0000 (13:18 -0700)
We cannot use IpcIo module in no-daemon mode because there are no diskers
to communicate with. If our implementation is correct, IpcIo module should
contain no shared map or other rock-specific manipulations and, hence,
should not be required for Rock Store to work.

configure.ac
src/fs/rock/RockSwapDir.cc

index 79682c3c60bf562bcd799d690a0014584612afac..584ba3655c14d905583ab407518b231bf5340cd7 100644 (file)
@@ -728,8 +728,9 @@ for fs in $squid_storeio_module_candidates none; do
       STORE_TESTS="$STORE_TESTS tests/testCoss$EXEEXT"
       ;;
     rock)
-       if ! test "x$squid_disk_module_candidates_IpcIo" = "xyes"; then
-         AC_MSG_ERROR([Storage modeule Rock requires IpcIo DiskIO module])
+       if ! test "x$squid_disk_module_candidates_IpcIo" = "xyes" -a \
+         "x$squid_disk_module_candidates_Blocking" = "xyes"; then
+         AC_MSG_ERROR([Storage module Rock requires IpcIo and Blocking DiskIO modules])
        fi
        STORE_TESTS="$STORE_TESTS tests/testRock$EXEEXT"
        ;;
index ac6eac00ad6fef0200e6862b4f14ced8b18992ed..d9a1ccb5758c3a6b9bb1ed320e7bf2a4abecb4c5 100644 (file)
@@ -173,10 +173,15 @@ Rock::SwapDir::init()
         map = new DirMap(path, eAllowed);
     }
 
-    DiskIOModule *m = DiskIOModule::Find("IpcIo"); // TODO: configurable?
-    assert(m);
-    io = m->createStrategy();
-    io->init();
+    const char *ioModule = UsingSmp() ? "IpcIo" : "Blocking";
+    if (DiskIOModule *m = DiskIOModule::Find(ioModule)) {
+        debugs(47,2, HERE << "Using DiskIO module: " << ioModule);
+        io = m->createStrategy();
+        io->init();
+    } else {
+        debugs(47,1, "Rock store is missing DiskIO module: " << ioModule);
+        fatal("Rock Store missing a required DiskIO module");
+    }
 
     theFile = io->newFile(filePath);
     theFile->open(O_RDWR, 0644, this);