Comment 13 for bug 1971935

Revision history for this message
Andreas Hasenack (ahasenack) wrote :

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.