Guix System cannot shutdown when there are NFS mounts

  • Open
  • quality assurance status badge
Details
2 participants
  • Maxim Cournoyer
  • Bruno Victal
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
M
M
Maxim Cournoyer wrote on 21 Apr 2023 05:53
(name . bug-guix)(address . bug-guix@gnu.org)
87edodyjpi.fsf@gmail.com
Hello,

This has been reported by others in #guix as well, although we're
currently short on details.

When an NFS mount is active at the time a shutdown is requested, the
system hangs, and doesn't shut down. The power button must be
long-pressed to power off the machine.

--
Thanks,
Maxim
B
B
Bruno Victal wrote on 18 May 2023 20:13
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 62986@debbugs.gnu.org)
c980a04d-df8b-4d4f-d2d8-1ee1fa020765@makinata.eu
Hi Maxim,

On 2023-04-21 04:53, Maxim Cournoyer wrote:
Toggle quote (9 lines)
> Hello,
>
> This has been reported by others in #guix as well, although we're
> currently short on details.
>
> When an NFS mount is active at the time a shutdown is requested, the
> system hangs, and doesn't shut down. The power button must be
> long-pressed to power off the machine.

I suspect this is because 'networking is disengaged before the NFS mount is unmounted.
Supposing that a NFS volume is mounted at /x/y/z (either manually or via a shepherd service),
probably what's happening is that the parent shepherd service of that path (be it /x/y, /x or /)
never unmounts due to the NFS child path.
It can't unmount the NFS path because:

a. manual NFS mount, 'networking has no knowledge of this and is already gone;
b. if provisioned through operating-system, since it doesn't support adding arbitrary shepherd dependencies
and it does not add 'networking to its 'requires' field, 'networking is already gone by the time it reaches here. [1]

If the NFS volume is manually unmounted (or there's some mechanism in place to unmount it before 'networking)
then no hang should occur.


[1]: Though it's tempting to simply add a 'networking dependency to any file-system-type = “nfs”, this
is not the best idea since:

a. not every service has a way to indicate that 'networking is ready (NFS mounts will fail to be automatically
mounted but in theory they should be able to unmount without interaction)
b. Interfaces that are configured outside of the 'networking service (be it manually, via custom shepherd service, etc.)
or that do not “depend” on the general idea of 'networking, such as NFS mounts using interface scoped Link-Local addresses.


Cheers,
Bruno
?