diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-02-16T13·19+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-02-16T13·19+0000 |
commit | 651ab439cf5b0c6ab2044257a30b0d94406d57d3 (patch) | |
tree | fafb731298c3bdf6f7b81a804864ab9e31e37d67 /src/libstore/store.hh | |
parent | d6f586d0eaa9344a99248cc4dfb7825972f2a174 (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.hh | 10 |
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(); |