klibc-bot for Benjamin Cama
2012-Jun-28 15:33 UTC
[klibc] [klibc:master] nfsmount: Fix wrong NFS umount path
Commit-ID: 029622dfbfe25203275a385a5bf33d44c2409b00 Gitweb: http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=029622dfbfe25203275a385a5bf33d44c2409b00 Author: Benjamin Cama <benjamin.cama at telecom-bretagne.eu> AuthorDate: Fri, 22 Jun 2012 12:17:01 +0200 Committer: maximilian attems <max at stro.at> CommitDate: Thu, 28 Jun 2012 17:23:14 +0200 [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 at telecom-bretagne.eu> Signed-off-by: maximilian attems <max at stro.at> --- usr/kinit/nfsmount/mount.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/usr/kinit/nfsmount/mount.c b/usr/kinit/nfsmount/mount.c index e3838f4..e0687a6 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;