aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Cama <benjamin.cama@telecom-bretagne.eu>2012-06-22 12:17:01 +0200
committermaximilian attems <max@stro.at>2012-06-28 17:23:14 +0200
commit029622dfbfe25203275a385a5bf33d44c2409b00 (patch)
tree2190c6deeba125324a8b6656fba42a6adcffe9c9
parent7cd9efd314a3d567c62f354bc2b5c0aaa3b35024 (diff)
downloadklibc-029622dfbfe25203275a385a5bf33d44c2409b00.tar.gz
[klibc] nfsmount: Fix wrong NFS umount path
Hi, When mounting a NFS share and an error occurs for some reason, the NFS share is not unmounted correctly: the local path is used instead of the remote path in the umount_v[23]() call. This patch fixes this. I found this while debugging some problems mounting the root file system on NFS in a test system; I saw this in the logs (/mnt/duplicated is the legitimate remote path): Jun 21 21:52:35 pangolin-test rpc.mountd[11155]: authenticated mount request from 192.168.42.2:984 for /mnt/duplicated (/mnt/duplicated) Jun 21 21:52:35 pangolin-test rpc.mountd[11155]: refused unmount request from 192.168.42.2 for /root (/): no export ent ry I didn't understand why the hell it was trying to umount /root. You can look at google for this and you'll find a lot of people wondering what this is. I think that the big issue with this is that _a lot_ of problems appearing _after_ not unmounting correctly the share the first time are caused by this: I used to get mounting errors with “Stale NFS file handle” that would never go away (NFS is so much a PITA for this statefull behavior). You'll find a lot of people on the net trying to reboot their NFS server and the like, in hope this errors goes away. It was also quite misleading that the mount point for the root FS in the initramfs is called /root. Anyway, a lot of these problems go away with this patch. BTW, this bug is more than 9 years old, since the inception of nfsmount! Signed-off-by: Benjamin Cama <benjamin.cama@telecom-bretagne.eu> Signed-off-by: maximilian attems <max@stro.at>
-rw-r--r--usr/kinit/nfsmount/mount.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/usr/kinit/nfsmount/mount.c b/usr/kinit/nfsmount/mount.c
index e3838f4d11297..e0687a6fa8fe4 100644
--- a/usr/kinit/nfsmount/mount.c
+++ b/usr/kinit/nfsmount/mount.c
@@ -329,9 +329,9 @@ int nfs_mount(const char *pathname, const char *hostname,
bail:
if (mounted) {
if (data->flags & NFS_MOUNT_VER3)
- umount_v3(path, clnt);
+ umount_v3(rem_path, clnt);
else
- umount_v2(path, clnt);
+ umount_v2(rem_path, clnt);
}
ret = -1;