Skip to content

nfs-utils: Update version from 2.4.1 to 2.5.3 #2043

Merged
merged 1 commit into from
Dec 1, 2021
Merged

Conversation

donald
Copy link
Collaborator

@donald donald commented Mar 2, 2021

No description provided.

@donald
Copy link
Collaborator Author

donald commented Mar 2, 2021

  • After update on nfs-client, automounter doesn't work.
  • After update on nfs-server, mount doesn'n work.

@donald
Copy link
Collaborator Author

donald commented Mar 2, 2021

EDIT: More accurate description in mariux64/mxtools@ff6c668

Regarding "After update on nfs-client, automounter does not work":

  • autofs queries the version of the installed mount.nfs from nfs-utils (via mount.nfs -V) 1
  • if nfs-utils version>=1.1.1 2 it is assumed, that mount.nfs passes string options to the kernel mount 3
  • if this is true, it is assumed that mount.nfs doesn't probe hosts, before calling the kernel 4
  • autofs does a stupid dance, to filter and sort "available" and "best" addresses if there are multiple servers and/or addresses which can be used 5
  • For this it uses its own RPC calls to probe the hosts for available nfs versions and rpc transports 6

Probably this logic is not up to date to current nfs versions and filters out the available nfs4 host.

This problem didn't occur with nfs-utils 2.4.1 , because the old mount.nfs doesn't even answer to mount.nfs -V. So this mess is skipped.

One option to avoid this problem, is to set use_hostname_for_mounts = "yes" in /etc/autofs.conf. In that case, automount doesn't resolve the hostnames and does do its thing to the addresses, its just passes the hostname as is to the kernel.

I think, we should try that, because this is the most simple solution. The nfs mount via automount would be identical to the nfs-mount done by typing mount from the command line. This helps with debugging :-) No added intelligence, complexity and failures....

However, when we change that, all automounts would use the kernel name resolver. This might create unexpected new issues, so we should try this first.

For this, I'd like to remove /etc/autofs.conf from the autofs bee package, so that we can maintain it under revision control.

@donald
Copy link
Collaborator Author

donald commented Mar 8, 2021

Regarding "After update on nfs-client, automounter does not work:"

The reason is, that 76c21e3f ("mountd: Check the stat() return values in match_fsid()") 1 added a new error handling. It sets errno to 0 and assumes that it is stable when there are no errors. However, this conflicts with the logic in support/misc/xstat.c, which sets errno to ENOSYS if glibc doesn't support statx() or has an incomplete emulation 2.

We have glibc 2.27 which doesn't support statx().

@donald
Copy link
Collaborator Author

donald commented Mar 8, 2021

Tested on deadbird

@donald
Copy link
Collaborator Author

donald commented Mar 28, 2021

Lets wait for the planned glibc update, so that we don't need the patch.

@donald
Copy link
Collaborator Author

donald commented Nov 30, 2021

Tested on dose (server and client). I think, this is ready to go now.

Copy link
Collaborator

@pmenzel pmenzel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/out glibc/our glibc/ in commit Revert "nfs-utils: Add "statx" patch".

Otherwise looks good.

nfs-utils.be0 Outdated Show resolved Hide resolved
@donald
Copy link
Collaborator Author

donald commented Dec 1, 2021

The "emulates statx" problem has also been been fixed in nfs-utils since 2.5.4-rc3 1.

@donald
Copy link
Collaborator Author

donald commented Dec 1, 2021

When this is installed, the exports seem to be gone until the next exportfs -ra

buczek@sigusr1:~$ showmount -e dose
buczek@sigusr1:~$ sudo mount dose:/amd/dose/0  /mnt
Password (for buczek) : 
Failed to start rpc-statd.service: Unit rpc-statd.service not found.
mount.nfs: access denied by server while mounting dose:/amd/dose/0
# (after exportfs -ra on dose)
buczek@sigusr1:~$ sudo mount dose:/amd/dose/0  /mnt
buczek@sigusr1:~$ showmount -e dose
Export list for dose:
/amd/dose/0 zoophobie.molgen.mpg.de,yoda....


@donald
Copy link
Collaborator Author

donald commented Dec 1, 2021

Not really reproducible. A bee update nfs-utils-2.5.4-0.x86_64;exportfs -ra on dose doesn't produce a single failure of while true;do date;mount dose:/amd/dose/0 /mnt && umount /mnt;done on another system.

Should to same test on a system tagged with "nfs40", too. Will switch dose to nfs40 for that.

@donald
Copy link
Collaborator Author

donald commented Dec 1, 2021

Ok with while true;do date;mount -o vers=4.0 dose:/amd/dose/0 /mnt && umount /mnt;done, too.
Also find . -ls on a mounted filesystem.

Both survive the update as well as a reboot (the later with a small pause, of course). Both with nfs4.2 and nfs4.0.

nfs-utils-2.5.4-0 bee package has been recreated with tip of branch bee file (no patches)

I go for it.

@donald donald merged commit 1c21309 into master Dec 1, 2021
Sign in to join this conversation on GitHub.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants