Bug#669314: [squeeze -> wheezy regression] nfs: kernel forces trailing slash for export in /proc/self/mounts
reassign 669314 src:linux-2.6 3.2.15-1
found 669314 linux-2.6/3.3.2-1~experimental.1
quit
Hi,
Chris Hiestand wrote:
> I expect /proc/self/mounts to show (notice no trailing slash on the export):
> nfsserver:/srv/ubuntu-32 /mnt/ubuntu-32 nfs ro,nosuid,nodev,noatime,vers=3,rsize=32768,wsize=32768,namlen=255,soft,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=198.202.1.1,mountvers=3,mountport=41576,mountproto=tcp,local_lock=none,addr=198.202.1.1 0 0
>
> But instead in /proc/self/mounts I get (notice the trailing slash):
> nfsserver:/srv/ubuntu-32/ /mnt/ubuntu-32 nfs ro,nosuid,nodev,noatime,vers=3,rsize=32768,wsize=32768,namlen=255,soft,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=198.202.1.1,mountvers=3,mountport=41576,mountproto=tcp,local_lock=none,addr=198.202.1.1 0 0
>
> This simple change has a lot of implications because lots of things
> parse /proc/self/mounts, for example mount.nfs and umount.nfs
>
> user@hostname:/proc/self$ sudo umount.nfs nfsserver:/srv/ubuntu-32
> umount.nfs: nfsserver:/srv/ubuntu-32: not found
>
> And if you run "sudo mount -va", mount will not recognize that the
> fstab mounts have already been mounted; mounting all mounts twice on
> the same mount point. This quickly gets messy.
[...]
> As a workaround, I can boot into the squeeze kernel,
> linux-image-2.6.32-5-amd64, and the problem no longer reproduces.
> This is why I believe it is a problem in the kernel and not in
> nfs-common.
Laurent Désarmes wrote:
> I've been able to reproduce this bug.
> It doesn't happen when using nfs4, it does with nfsvers=2 or
> nfsvers=3.
Thanks for a clear report, and sorry for the slow response.
I suspect this behavior change was introduced by v2.6.39-rc1~460^2~3
(vfs: new superblock methods to override /proc/*/mount{s,info},
2011-03-16). Can you confirm, like so?
0. prerequisites:
apt-get install git build-essential
1. get the kernel history, if you don't already have it:
git clone \
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
2. configure, build, test:
cd linux
git checkout v2.6.39-rc1~460^2~3
git checkout HEAD^
cp /boot/config-$(uname -r) .config; # current configuration
scripts/config --disable DEBUG_INFO
make localmodconfig; # optional: minimize configuration
make deb-pkg; # optionally with -j<num> for parallel build
dpkg -i ../<name of package>; # as root
reboot
... test test test ...
3. Hopefully it does not reproduce the bug. So try the patch:
cd linux
git checkout v2.6.39-rc1~460^2~3
make deb-pkg; # maybe with -j4
dpkg -i ../<name of package>; # as root
reboot
... test test test ...
An alternative way to confirm would be to try packages from before and
after that change from snapshot.debian.org.
I suspect that commit was just preparation for removing get_sb() and
was not supposed to change behavior, though I'm not sure.
Hope that helps,
Jonathan
Reply to: