From: Liliana Marie Prikler <liliana.prikler@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>,
"Maxim Cournoyer" <maxim.cournoyer@gmail.com>
Cc: 51427@debbugs.gnu.org
Subject: [bug#51427] [PATCH] nix: libstore: Do not remove unused links when deleting specific items.
Date: Sun, 31 Oct 2021 09:50:15 +0100 [thread overview]
Message-ID: <5c2dd60acfaa7d74b7554babb3e223bc855bac8a.camel@gmail.com> (raw)
In-Reply-To: <87o8795j61.fsf@gnu.org>
Hi,
Am Donnerstag, den 28.10.2021, 16:16 +0200 schrieb Ludovic Courtès:
> Hi,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
> > Deleting unused links can be a very costly operation, especially on
> > rotative hard drives. As removing single store items is often used
> > for experimentation rather than for cleaning purposes, this change
> > allows it to run without the links cleanup.
> >
> > * nix/libstore/gc.cc (LocalStore::collectGarbage): Do not clean up
> > links when
> > the specified action is GCOptions::gcDeleteSpecific.
> > ---
> > nix/libstore/gc.cc | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc
> > index e1d0765154..7d872d8cc1 100644
> > --- a/nix/libstore/gc.cc
> > +++ b/nix/libstore/gc.cc
> > @@ -771,7 +771,7 @@ void LocalStore::collectGarbage(const GCOptions
> > & options, GCResults & results)
> > deleteGarbage(state, state.trashDir);
> >
> > /* Clean up the links directory. */
> > - if (options.action == GCOptions::gcDeleteDead ||
> > options.action == GCOptions::gcDeleteSpecific) {
> > + if (options.action == GCOptions::gcDeleteDead) {
>
> I believe the effect is that ‘guix gc -D /gnu/store/…-disk-image’
> would remove nothing: /gnu/store/.links would still contain a copy of
> that big disk image, so as a result, you’ve freed zero bytes.
>
> Am I right?
I think that might be the point. As Maxim said, single items are
(likely) not removed for cleaning purposes, so freeing the disk image
has little effect. Plus, you could invoke it like
guix gc -D dead-item dead-item live-item dead-item
It would fail at live-item and then not continue to free the links of
the two dead items prior.
So there's a few things we could do here:
1. simply fail and have the user deal with it (including the option of
doing a normal `guix gc' or `guix gc -C 1')
2. remember which paths were live and dead and always clean up the
links, only reporting errors afterwards
3. add an option to explicitly check the .links directory (which
defaults to true for the current things, but could also be used to
clean links after a liveness check or after a do-nothing `guix gc -F').
4. ...
WDYT?
next prev parent reply other threads:[~2021-10-31 8:51 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-27 3:49 [bug#51427] [PATCH] nix: libstore: Do not remove unused links when deleting specific items Maxim Cournoyer
2021-10-28 14:16 ` Ludovic Courtès
2021-10-31 8:50 ` Liliana Marie Prikler [this message]
2021-10-31 14:07 ` Ludovic Courtès
2021-10-31 14:39 ` Liliana Marie Prikler
2021-10-31 20:51 ` Maxim Cournoyer
2021-11-03 10:45 ` zimoun
2021-11-06 16:57 ` Ludovic Courtès
2021-11-09 4:11 ` Maxim Cournoyer
2021-11-09 4:57 ` Jack Hill
2021-11-09 12:56 ` Ludovic Courtès
2021-11-09 18:10 ` zimoun
2021-11-17 10:02 ` Ludovic Courtès
2021-11-17 11:49 ` zimoun
2022-07-18 13:57 ` Ludovic Courtès
2022-07-18 17:03 ` Liliana Marie Prikler
2022-07-19 8:34 ` Ludovic Courtès
2022-07-19 18:42 ` Liliana Marie Prikler
2022-07-19 19:25 ` Tobias Geerinckx-Rice via Guix-patches via
2022-07-21 9:21 ` Ludovic Courtès
2022-07-21 18:02 ` Liliana Marie Prikler
2022-07-22 12:14 ` Ludovic Courtès
2022-07-22 13:39 ` Maxime Devos
2022-07-22 23:07 ` Ludovic Courtès
2022-07-23 6:52 ` Liliana Marie Prikler
2022-07-23 10:24 ` Maxime Devos
2023-06-12 20:55 ` Felix Lechner via Guix-patches via
2023-06-13 4:26 ` Liliana Marie Prikler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5c2dd60acfaa7d74b7554babb3e223bc855bac8a.camel@gmail.com \
--to=liliana.prikler@gmail.com \
--cc=51427@debbugs.gnu.org \
--cc=ludo@gnu.org \
--cc=maxim.cournoyer@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.