* Fix and simplify the garbage collector (it's still not concurrent,
though). In particular it's now much easier to register a GC root. Just place a symlink to whatever store path it is that you want to keep in /nix/var/nix/gcroots.
This commit is contained in:
parent
59682e6188
commit
c505702265
10 changed files with 124 additions and 109 deletions
|
|
@ -3,24 +3,15 @@
|
|||
|
||||
#include "util.hh"
|
||||
|
||||
/* Garbage collector operation. */
|
||||
typedef enum { gcReturnLive, gcReturnDead, gcDeleteDead } GCAction;
|
||||
|
||||
/* Determine the set of "live" store paths, given a set of root store
|
||||
expressions. The live store paths are those that are reachable
|
||||
from the roots. The roots are reachable by definition. Any path
|
||||
mentioned in a reachable store expression is also reachable. If a
|
||||
derivation store expression is reachable, then its successor (if it
|
||||
exists) if also reachable. It is not an error for store
|
||||
expressions not to exist (since this can happen on derivation store
|
||||
expressions, for instance, due to the substitute mechanism), but
|
||||
successor links are followed even for non-existant derivations. */
|
||||
PathSet findLivePaths(const Paths & roots);
|
||||
|
||||
/* Given a set of "live" store paths, determine the set of "dead"
|
||||
store paths (which are simply all store paths that are not in the
|
||||
live set). The value `minAge' specifies the minimum age in seconds
|
||||
for an unreachable file to be considered dead (0 meaning that any
|
||||
unreachable file is dead). */
|
||||
PathSet findDeadPaths(const PathSet & live, time_t minAge);
|
||||
|
||||
/* If `action' is set to `soReturnLive', return the set of paths
|
||||
reachable from (i.e. in the closure of) the specified roots. If
|
||||
`action' is `soReturnDead', return the set of paths not reachable
|
||||
from the roots. If `action' is `soDeleteDead', actually delete the
|
||||
latter set. */
|
||||
void collectGarbage(const PathSet & roots, GCAction action,
|
||||
PathSet & result);
|
||||
|
||||
#endif /* !__GC_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue