Attached is a debdiff for Focal which fixes this issue.

** Summary changed:

- Issue with nfs4.0 mounts after upgrade to 3.6
+ Fix minor version parsing when '-t nfs4' and '-o vers=4.x' are used together

** Summary changed:

- Fix minor version parsing when '-t nfs4' and '-o vers=4.x' are used together
+ mount.nfs: Fix minor version parsing when '-t nfs4' and '-o vers=4.x' are 
used together

** Description changed:

- Hello,
+ [Impact]
  
- On Ubuntu Server 20.04.6 LTS with the update of nfs-common package =>
- "nfs-common/focal-updates 1:1.3.4-2.5ubuntu3.5" to "nfs-common/focal-
- updates 1:1.3.4-2.5ubuntu3.6" I started having issues mounting ntf4.0
- volumes. The NFS server supports 4.0, 4.1 and 4.2
+ When specifying both '-t nfs4' and '-o vers=4.x' on the mount command
+ line, mount.nfs ignores any specific version set with '-o vers=4.x' or
+ '-o vers=4,minorversion=x', and simply attempts version negotiation,
+ which due to my recent changes in bug 2049262, would land on the highest
+ supported nfs version, likely 4.2.
  
- The issue appears when using '-t ntfs4' and setting the version using -o
- vers=.
+ Users who specify what version they want should get the version they ask
+ for, and thus, this is a regression introduced in 1:1.3.4-2.5ubuntu3.6.
  
- When using 1:1.3.4-2.5ubuntu3.5 I am able to use '-o vers' to set the version 
when using -t ntfs4 eg
-   mount -t nfs4 -o vers=4.0 -vvv SERVER.local:/srv/data /mnt/test
-     mount.nfs4: trying text-based options 
'vers=4.0,addr=xx.xx.xx.xx,clientaddr=xx.xx.xx.xx'  
+ A workaround is to drop '-t nfs4' and to use mount.nfs directly instead,
+ i.e.:
  
-   mount -t nfs4 -o vers=4.1 -vvv SERVER.local:/srv/data /mnt/test
-     mount.nfs4: trying text-based options 
'vers=4.1,addr=xx.xx.xx.xx,clientaddr=xx.xx.xx.xx'  
+ $ sudo mount.nfs -o vers=4.1 -vvv jammy-nfs-server:/ /mnt
  
- However after upgrading to 1:1.3.4-2.5ubuntu3.6 it always mounts as nfs4.2
-   mount -t nfs4 -o vers=4.0 -vvv SERVER.local:/srv/data /mnt/test
-   mount.nfs4: trying text-based options 
'vers=4.2,addr=xx.xx.xx.xx,clientaddr=xx.xx.xx.xx'  
+ [Testcase]
  
-   mount -t nfs4 -o vers=4.1 -vvv SERVER.local:/srv/data /mnt/test
-   mount.nfs4: trying text-based options 
'vers=4.2,addr=xx.xx.xx.xx,clientaddr=xx.xx.xx.xx'
+ Create two VMs, one jammy and one focal.
  
- I would have expected the specified version in -o vers to be used when
- using '-t nfs4'
+ The jammy VM will be the server.
  
- When using '-t nfs' I am able to mount volumes as nfs 4.0. I understand
- that 1:1.3.4-2.5ubuntu3.6 fixes version negotiation so maybe this isn't
- a bug and the intent with '-t nfs4' is to always use the highest
- version. If so please feel free to close the report
+ Server VM:
+ $ sudo hostnamectl set-hostname jammy-nfs-server
+ $ sudo apt update && sudo apt upgrade -y
+ $ sudo apt install nfs-kernel-server
+ $ sudo mkdir /export
+ $ sudo mkdir /export/users
+ $ sudo mkdir /home/users
+ $ sudo vi /etc/fstab # add the following line:
+ /home/users /export/users none bind 0 0
+ $ sudo mount -a
+ $ sudo vi /etc/exports # add the following lines:
+ /export 192.168.122.0/24(rw,fsid=0,no_subtree_check,sync)
+ /export/users 192.168.122.0/24(rw,nohide,insecure,no_subtree_check,sync)
+ $ sudo systemctl restart nfs-server.service
+ 
+ Focal VM:
+ $ sudo hostnamectl set-hostname focal-nfs-client
+ $ sudo apt update && sudo apt upgrade -y
+ $ sudo apt install nfs-common
+ 
+ And then try mounting with both '-t nfs4' and '-o vers=4.1':
+ 
+ $ sudo mount -t nfs4 -o vers=4.1 -vvv jammy-nfs-server:/ /mnt
+ mount.nfs4: timeout set for Wed Apr  3 00:51:23 2024
+ mount.nfs4: trying text-based options 
'vers=4.2,addr=192.168.122.217,clientaddr=192.168.122.9'
+ 
+ and then try with both '-t nfs4' and '-o vers=4,minorversion=1':
+ 
+ $ sudo mount -t nfs4 -o vers=4,minorversion=1 -vvv jammy-nfs-server:/ /mnt
+ mount.nfs4: timeout set for Wed Apr  3 02:19:03 2024
+ mount.nfs4: trying text-based options 
'minorversion=1,vers=4.2,addr=192.168.122.217,clientaddr=192.168.122.9'
+ 
+ In each of those mounts, it incorrectly uses protocol version 4.2,
+ instead of requested 4.1.
+ 
+ If you install the test packages in the following ppa:
+ 
+ https://launchpad.net/~mruffell/+archive/ubuntu/lp2059197-test
+ 
+ then vers should always be 4.1, instead of 4.2.
+ 
+ [Where problems can occur]
+ 
+ It is quite clear now that changing version negotiation and parsing is
+ quite problematic, after the number of regressions the previous
+ 1:1.3.4-2.5ubuntu3.6 caused the community, and the sheer number of
+ commits upstream took to resolve lingering issues.
+ 
+ We need to be careful, to make sure we don't introduce any further
+ regressions.
+ 
+ This time, we are only changing how mount.nfs parses and processes
+ command line arguments for version specification, and not changing
+ version negotiation itself. This could impact NFS clients, when they go
+ to mount NFS filesystems.
+ 
+ If a regression were to occur, then users might have to manually mount
+ their NFS filesystems or look into autofs. There should be no breaking
+ changes to any behaviour when mounting NFS filesystems.
+ 
+ There are no changes to nfs server.
+ 
+ [Other Info]
+ 
+ This was fixed multiple times, across the following three commits:
+ 
+ commit 1e3ca7fe199531a372bb8e1c1033d8973097be50
+ Author: NeilBrown <ne...@suse.com>
+ Date:   Wed Jul 26 13:47:42 2017 -0400
+ Subject: mount: move handling of "-t nfs4" into nfs_nfs_version()
+ Link: 
https://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commitdiff;h=1e3ca7fe199531a372bb8e1c1033d8973097be50
+     
+ commit 050153ef6a86ff5ab06ef65be36336824a323779
+ Author: NeilBrown <ne...@suse.com>
+ Date:   Wed Jul 26 13:51:51 2017 -0400
+ Subject: mount: Fix problems with parsing minorversion=
+ Link: 
https://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commitdiff;h=050153ef6a86ff5ab06ef65be36336824a323779
+     
+ commit 71b807e1a69940beb31fdeb481c2e54509e8bd32
+ Author: Steve Dickson <ste...@redhat.com>
+ Date:   Thu Mar 1 13:52:47 2018 -0500
+ Subject: mount.nfs: minorversion setting is being ignored with the -t flag
+ Link: 
https://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commitdiff;h=71b807e1a69940beb31fdeb481c2e54509e8bd32
+ 
+ Jammy has all of these, and does not need any fixes.

** Tags added: seg

** Patch added: "Debdiff for nfs-utils on Focal"
   
https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/2059197/+attachment/5761398/+files/lp2059197_focal.debdiff

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

Title:
  mount.nfs: Fix minor version parsing when '-t nfs4' and '-o vers=4.x'
  are used together

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


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to