about summary refs log tree commit diff
path: root/src/libstore/store.hh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2006-02-16T13·19+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2006-02-16T13·19+0000
commit651ab439cf5b0c6ab2044257a30b0d94406d57d3 (patch)
treefafb731298c3bdf6f7b81a804864ab9e31e37d67 /src/libstore/store.hh
parentd6f586d0eaa9344a99248cc4dfb7825972f2a174 (diff)
* A simple hack to fix NIX-18: the garbage collector cannot run when
  the disk is full (because to delete something from the Nix store, we
  need a Berkeley DB transaction, which takes up disk space).  Under
  normal operation, we make sure that there exists a file
  /nix/var/nix/db/reserved of 1 MB.  When running the garbage
  collector, we delete that file before we open the Berkeley DB
  environment.

Diffstat (limited to 'src/libstore/store.hh')
-rw-r--r--src/libstore/store.hh10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libstore/store.hh b/src/libstore/store.hh
index 2d8018d5fabc..c617585bab96 100644
--- a/src/libstore/store.hh
+++ b/src/libstore/store.hh
@@ -37,8 +37,14 @@ struct Substitute
 typedef list<Substitute> Substitutes;
 
 
-/* Open the database environment. */
-void openDB();
+/* Open the database environment.  If `reserveSpace' is true, make
+   sure that a big empty file exists in /nix/var/nix/db/reserved.  If
+   `reserveSpace' is false, delete this file if it exists.  The idea
+   is that on normal operation, the file exists; but when we run the
+   garbage collector, it is deleted.  This is to ensure that the
+   garbage collector has a small amount of disk space available, which
+   is required to open the Berkeley DB environment. */
+void openDB(bool reserveSpace = true);
 
 /* Create the required database tables. */
 void initDB();