about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2007-03-19T09·16+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2007-03-19T09·16+0000
commitb2b6cf3fc83f0e1625214ae31b0b088a266234bf (patch)
tree6cdbe3deaaf4431ac75fd80586d0d979aafd05e5 /src
parenteb2dd4815c05fcc592d049bddcd2f42d13216eab (diff)
* Undocumented option `gc-check-reachability' to allow reachability
  checking to be turned off on machines with way too many roots.

Diffstat (limited to 'src')
-rw-r--r--src/libstore/gc.cc16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc
index 2c75b16f61e6..e04e9c1071cb 100644
--- a/src/libstore/gc.cc
+++ b/src/libstore/gc.cc
@@ -118,13 +118,15 @@ Path addPermRoot(const Path & _storePath, const Path & _gcRoot,
     }
 
     /* Check that the root can be found by the garbage collector. */
-    Roots roots = store->findRoots();
-    if (roots.find(gcRoot) == roots.end())
-        printMsg(lvlError, 
-            format(
-                "warning: `%1%' is not in a directory where the garbage collector looks for roots; "
-                "therefore, `%2%' might be removed by the garbage collector")
-            % gcRoot % storePath);
+    if (queryBoolSetting("gc-check-reachability", true)) {
+        Roots roots = store->findRoots();
+        if (roots.find(gcRoot) == roots.end())
+            printMsg(lvlError, 
+                format(
+                    "warning: `%1%' is not in a directory where the garbage collector looks for roots; "
+                    "therefore, `%2%' might be removed by the garbage collector")
+                % gcRoot % storePath);
+    }
         
     /* Grab the global GC root, causing us to block while a GC is in
        progress.  This prevents the set of permanent roots from