[Bug 1971935] Re: Invalid pipefs-directory prevents rpc-gssd.service from starting

Andreas Hasenack 1971935 at bugs.launchpad.net
Fri Jun 24 20:59:10 UTC 2022


I'm trying to reproduce this. It's clear that there is a discrepancy in
rpc_pipefs mountpoints between the generator and the var-lib-* mount
unit, but the generator should have kicked in right after installation
of the package via the systemct daemon-reload call that all packages do
in postinst. And the generator, in turn, checks if the rpc_pipefs config
is different from the default, and only then generates the new mount
unit.

The default is:
#define RPC_PIPEFS_DEFAULT NFS_STATEDIR "/rpc_pipefs"

And NFS_STATEDIR is the value of --with-statedir given to ./configure at
build time, and defaults to /var/lib/nfs (ubuntu/debian's case). So
RPC_PIPEFS_DEFAULT is /var/lib/nfs/rpc_pipefs, and this is what we get
in the var-lib-*.mount unit:

# grep Where /lib/systemd/system/var-lib-nfs-rpc_pipefs.mount 
Where=/var/lib/nfs/rpc_pipefs

The generator will just exit silently if the nfs.conf config matches
that default:

    conf_init_file(NFS_CONFFILE);
    s = conf_get_str("general", "pipefs-directory");
    if (!s)
        exit(0);
    if (strlen(s) == strlen(RPC_PIPEFS_DEFAULT) &&
            strcmp(s, RPC_PIPEFS_DEFAULT) == 0)
        exit(0);

In the ubuntu/debian case, it won't match:
# nfsconf --get general pipefs-directory
/run/rpc_pipefs

So the generator kicks in:
# grep Where /run/systemd/generator/run-rpc_pipefs.mount 
Where=/run/rpc_pipefs

and I get the mount:
# mount -t rpc_pipefs
sunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime)


So while we shouldn't be needing the generator, it's doing its job when needed. I still suspect there is some ordering issue that is triggering this bug, but I haven't found it yet.

Still looking.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to nfs-utils in Ubuntu.
https://bugs.launchpad.net/bugs/1971935

Title:
  Invalid pipefs-directory prevents rpc-gssd.service from starting

Status in nfs-utils package in Ubuntu:
  In Progress

Bug description:
  Ubuntu 22.04 Server
  Package version: 1:2.6.1-1ubuntu1

  Package nfs-common/nfs-utils provides /etc/nfs.conf and /lib/systemd/system/rpc-gssd.service.
  /etc/nfs.conf (and seems to be copied from /usr/share/nfs-common/conffiles/nfs.conf) has the configuration:
  ...
  [general]
  pipefs-directory=/run/rpc_pipefs
  ...

  When attempting to start rpc-gssd it gives the following error:
  ...
  ERROR: opendir(/run/rpc_pipefs) failed: No such file or directory
  ...

  There is a systemd unit called var-lib-nfs-rpc_pipefs.mount which
  mounts this directory as /var/lib/nfs/rpc_pipefs. However this does
  not match with the configuration in nfs.conf

  It's worth mentioning that sometimes it seems a systemd unit is
  generated (run-rpc_pipefs.mount) which ensures /run/rpc_pipefs is
  created and everything works as expected. Seems to be random.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/1971935/+subscriptions




More information about the foundations-bugs mailing list