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.
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 var/lib/ nfs/rpc_ pipefs
Where=/
The generator will just exit silently if the nfs.conf config matches that default:
conf_ init_file( NFS_CONFFILE) ; str("general" , "pipefs- directory" ); RPC_PIPEFS_ DEFAULT) &&
strcmp( s, RPC_PIPEFS_DEFAULT) == 0)
s = conf_get_
if (!s)
exit(0);
if (strlen(s) == strlen(
exit(0);
In the ubuntu/debian case, it won't match:
# nfsconf --get general pipefs-directory
/run/rpc_pipefs
So the generator kicks in: generator/ run-rpc_ pipefs. mount run/rpc_ pipefs
# grep Where /run/systemd/
Where=/
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.