[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Guix to participate in the Google Summer of Code
From: |
Chris Marusich |
Subject: |
Re: Guix to participate in the Google Summer of Code |
Date: |
Wed, 21 Feb 2018 07:23:22 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) |
Ricardo Wurmus <address@hidden> writes:
> Garbage collection in the context of Guix is not very difficult to
> understand. The garbage collector may remove any item that has zero
> users; the link count on a store item is indicative of the number of
> users that item has. For garbage collection you essentially go through
> all items and check if the link count is zero.
Is this correct? My understanding is that the link count of a store
path (i.e., the count of hard links for a given file in the store) is
unrelated to whether or not that store path is live. It looks like, in
nix/libstore/gc.cc, we basically walk the references graph starting from
the GC roots and delete anything that can't be reached from a root.
This makes sense, since anything that can be reached from a root is live
and must not be deleted, and anything that can't be reached from any
root can be deleted. Link counts (e.g., the number of hard links) do
not seem to play a role here.
In addition to the C++ code, the Nix thesis has a good discussion of the
garbage collection algorithm. I don't know if it's accurate, but it
helps shed light on the intent.
--
Chris
signature.asc
Description: PGP signature