diff mbox series

[bug#65335,v2,5/5] gnu: home: symlink-manager: Allow dedicated device skip.

Message ID 108a67c0ef10e00162d81bcf7bc6243d6895c49b.1692569807.git.ngraves@ngraves.fr
State New
Headers show
Series [bug#65335,v2,1/5] file-systems: canonicalize-device-name: Ignore the "none" case. | expand

Commit Message

Nicolas Graves Aug. 20, 2023, 10:16 p.m. UTC
---
 gnu/home/services/symlink-manager.scm | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Ludovic Courtès Aug. 21, 2023, 2:12 p.m. UTC | #1
Nicolas Graves <ngraves@ngraves.fr> skribis:

> ---
>  gnu/home/services/symlink-manager.scm | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/symlink-manager.scm
> index e4c931fbee..d3c4d01db4 100644
> --- a/gnu/home/services/symlink-manager.scm
> +++ b/gnu/home/services/symlink-manager.scm
> @@ -157,6 +157,11 @@ (define (update-symlinks-script)
>                             #t
>                             (G_ "Skipping ~a (not an empty directory)... done\n")
>                             directory))
> +                         ((= EBUSY errno)
> +                          (format
> +                           #t
> +                           (G_ "Skipping ~a (dedicated device)... done\n")
> +                           directory))

How does that relate to the rest of the patch series?  What does
“dedicate device” mean here?

Maybe add a comment giving some context.

Ludo’.
Ludovic Courtès Sept. 9, 2023, 10:47 a.m. UTC | #2
Hi,

(You forgot to Cc the bug in your reply, so our conversation went off
the record…)

Ludovic Courtès <ludo@gnu.org> skribis:

> Nicolas Graves <ngraves@ngraves.fr> skribis:
>
>> ---
>>  gnu/home/services/symlink-manager.scm | 5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/symlink-manager.scm
>> index e4c931fbee..d3c4d01db4 100644
>> --- a/gnu/home/services/symlink-manager.scm
>> +++ b/gnu/home/services/symlink-manager.scm
>> @@ -157,6 +157,11 @@ (define (update-symlinks-script)
>>                             #t
>>                             (G_ "Skipping ~a (not an empty directory)... done\n")
>>                             directory))
>> +                         ((= EBUSY errno)
>> +                          (format
>> +                           #t
>> +                           (G_ "Skipping ~a (dedicated device)... done\n")
>> +                           directory))
>
> How does that relate to the rest of the patch series?  What does
> “dedicate device” mean here?

Your use case is for when ~/.local (for instance) is a separate mount
point (an uncommon use case because mounting file systems on Linux
usually requires root privileges).

I’d suggested “dedicated device” → “underlying device is busy”, and a
short comment above explaining the kind of situation where this can
occur.

Thanks,
Ludo’.
Ludovic Courtès Oct. 5, 2023, 1:07 p.m. UTC | #3
Hi Nicolas,

Did you have a chance to work on a revised version of this patch set?

  https://issues.guix.gnu.org/65335

Seems to me that little was missing.

Thanks in advance!

Ludo’.

Ludovic Courtès <ludo@gnu.org> skribis:

> Hi,
>
> (You forgot to Cc the bug in your reply, so our conversation went off
> the record…)
>
> Ludovic Courtès <ludo@gnu.org> skribis:
>
>> Nicolas Graves <ngraves@ngraves.fr> skribis:
>>
>>> ---
>>>  gnu/home/services/symlink-manager.scm | 5 +++++
>>>  1 file changed, 5 insertions(+)
>>>
>>> diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/symlink-manager.scm
>>> index e4c931fbee..d3c4d01db4 100644
>>> --- a/gnu/home/services/symlink-manager.scm
>>> +++ b/gnu/home/services/symlink-manager.scm
>>> @@ -157,6 +157,11 @@ (define (update-symlinks-script)
>>>                             #t
>>>                             (G_ "Skipping ~a (not an empty directory)... done\n")
>>>                             directory))
>>> +                         ((= EBUSY errno)
>>> +                          (format
>>> +                           #t
>>> +                           (G_ "Skipping ~a (dedicated device)... done\n")
>>> +                           directory))
>>
>> How does that relate to the rest of the patch series?  What does
>> “dedicate device” mean here?
>
> Your use case is for when ~/.local (for instance) is a separate mount
> point (an uncommon use case because mounting file systems on Linux
> usually requires root privileges).
>
> I’d suggested “dedicated device” → “underlying device is busy”, and a
> short comment above explaining the kind of situation where this can
> occur.
>
> Thanks,
> Ludo’.
Nicolas Graves Oct. 5, 2023, 2:30 p.m. UTC | #4
On 2023-10-05 15:07, Ludovic Courtès wrote:

> Hi Nicolas,
>
> Did you have a chance to work on a revised version of this patch set?
>
>   https://issues.guix.gnu.org/65335
>
> Seems to me that little was missing.

Indeed, I have to finish this among other things. I still use it locally
and it works well for system impermanence. 

I couldn't answer your following question :

>   Should /var/run be removed (in the same commit) from ‘directives’ in
>   (gnu build install)?

Maybe you can help a bit if you have worked on this, so that I
understand correctly if something should be done here or not. 

>
> Thanks in advance!
>
> Ludo’.
>
> Ludovic Courtès <ludo@gnu.org> skribis:
>
>> Hi,
>>
>> (You forgot to Cc the bug in your reply, so our conversation went off
>> the record…)
>>
>> Ludovic Courtès <ludo@gnu.org> skribis:
>>
>>> Nicolas Graves <ngraves@ngraves.fr> skribis:
>>>
>>>> ---
>>>>  gnu/home/services/symlink-manager.scm | 5 +++++
>>>>  1 file changed, 5 insertions(+)
>>>>
>>>> diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/symlink-manager.scm
>>>> index e4c931fbee..d3c4d01db4 100644
>>>> --- a/gnu/home/services/symlink-manager.scm
>>>> +++ b/gnu/home/services/symlink-manager.scm
>>>> @@ -157,6 +157,11 @@ (define (update-symlinks-script)
>>>>                             #t
>>>>                             (G_ "Skipping ~a (not an empty directory)... done\n")
>>>>                             directory))
>>>> +                         ((= EBUSY errno)
>>>> +                          (format
>>>> +                           #t
>>>> +                           (G_ "Skipping ~a (dedicated device)... done\n")
>>>> +                           directory))
>>>
>>> How does that relate to the rest of the patch series?  What does
>>> “dedicate device” mean here?
>>
>> Your use case is for when ~/.local (for instance) is a separate mount
>> point (an uncommon use case because mounting file systems on Linux
>> usually requires root privileges).
>>
>> I’d suggested “dedicated device” → “underlying device is busy”, and a
>> short comment above explaining the kind of situation where this can
>> occur.
>>
>> Thanks,
>> Ludo’.
Ludovic Courtès Oct. 12, 2023, 6:55 a.m. UTC | #5
Hi,

Nicolas Graves <ngraves@ngraves.fr> skribis:

> On 2023-10-05 15:07, Ludovic Courtès wrote:

[...]

>>   Should /var/run be removed (in the same commit) from ‘directives’ in
>>   (gnu build install)?
>
> Maybe you can help a bit if you have worked on this, so that I
> understand correctly if something should be done here or not. 

The directives in (gnu build install) specify files and directories that
should be created upfront when initializing a system—meaning when
running ‘guix system init’, or when populating a VM image.  The
boot/activation code assumes that these files already exist when the
system boots.

If we’re now creating /var/run in an activation snippet, then it no
longer needs to be here.

When doing such changes, I would suggest to at least run:

  make check-system TESTS=basic

to detect obvious mistakes, and perhaps run the “installed-os” test as
well (it’s much more expensive, so run it once you’re essentially done).

HTH!

Ludo’.
Nicolas Graves Feb. 15, 2024, 11:45 a.m. UTC | #6
Hi Ludo,

Just to tell that the v3 I sent a few weeks ago is indeed fully tested,
and that commit messages are properly written.

Should we also think about a blog post on impermanence like nix did?

Nicolas

On 2023-10-12 08:55, Ludovic Courtès wrote:

> Hi,
>
> Nicolas Graves <ngraves@ngraves.fr> skribis:
>
>> On 2023-10-05 15:07, Ludovic Courtès wrote:
>
> [...]
>
>>>   Should /var/run be removed (in the same commit) from ‘directives’ in
>>>   (gnu build install)?
>>
>> Maybe you can help a bit if you have worked on this, so that I
>> understand correctly if something should be done here or not. 
>
> The directives in (gnu build install) specify files and directories that
> should be created upfront when initializing a system—meaning when
> running ‘guix system init’, or when populating a VM image.  The
> boot/activation code assumes that these files already exist when the
> system boots.
>
> If we’re now creating /var/run in an activation snippet, then it no
> longer needs to be here.
>
> When doing such changes, I would suggest to at least run:
>
>   make check-system TESTS=basic
>
> to detect obvious mistakes, and perhaps run the “installed-os” test as
> well (it’s much more expensive, so run it once you’re essentially done).
>
> HTH!
>
> Ludo’.
>
>
>
Ludovic Courtès Feb. 19, 2024, 5:48 p.m. UTC | #7
Hi Nicolas,

Nicolas Graves <ngraves@ngraves.fr> skribis:

> Just to tell that the v3 I sent a few weeks ago is indeed fully tested,
> and that commit messages are properly written.

Just pushed v3 as b1ec85533a63c10616d9260f90411ca6f362de00!

I did tweak the commit messages but that’s because I’m too picky :-) and
the changes were minor.

> Should we also think about a blog post on impermanence like nix did?

Yes, definitely!

There could also be a section in the manual with a complete OS
definition, to show how one can set up a volatile image.

Last, I realize there’s no system tests.  I’m not sure how to do that
(because system tests already run on a tmpfs overlay) but it’d be nice
to make sure “root=none” handling keeps working.

Thoughts?

Thanks for all the work!

Ludo’.
Nicolas Graves Feb. 19, 2024, 11:47 p.m. UTC | #8
On 2024-02-19 18:48, Ludovic Courtès wrote:

> Hi Nicolas,
>
> Nicolas Graves <ngraves@ngraves.fr> skribis:
>
>> Just to tell that the v3 I sent a few weeks ago is indeed fully tested,
>> and that commit messages are properly written.
>
> Just pushed v3 as b1ec85533a63c10616d9260f90411ca6f362de00!
>
> I did tweak the commit messages but that’s because I’m too picky :-) and
> the changes were minor.
>
>> Should we also think about a blog post on impermanence like nix did?
>
> Yes, definitely!
>
> There could also be a section in the manual with a complete OS
> definition, to show how one can set up a volatile image.

On my todo list, though my priority right now is node-build-system to
try and package zotero properly.

>
> Last, I realize there’s no system tests.  I’m not sure how to do that
> (because system tests already run on a tmpfs overlay) but it’d be nice
> to make sure “root=none” handling keeps working.
>
> Thoughts?

I don't have a better view on this than you have. Basically I mostly
test it directly since for most changes I can always roll-back. Indeed
here it doesn't seem straightforward to check it fully, we can still
test the function bootable-kernel-arguments, but it's not that useful.
>
> Thanks for all the work!
>
> Ludo’.
diff mbox series

Patch

diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/symlink-manager.scm
index e4c931fbee..d3c4d01db4 100644
--- a/gnu/home/services/symlink-manager.scm
+++ b/gnu/home/services/symlink-manager.scm
@@ -157,6 +157,11 @@  (define (update-symlinks-script)
                            #t
                            (G_ "Skipping ~a (not an empty directory)... done\n")
                            directory))
+                         ((= EBUSY errno)
+                          (format
+                           #t
+                           (G_ "Skipping ~a (dedicated device)... done\n")
+                           directory))
                          ((= ENOENT errno) #t)
                          ((= ENOTDIR errno) #t)
                          (else