Date: Wed, 27 Feb 2013 21:59:22 -0500 (EST) From: Rick Macklem <rmacklem@uoguelph.ca> To: FreeBSD Filesystems <freebsd-fs@freebsd.org> Cc: Sergey Kandaurov <pluknet@freebsd.org>, Kostik Belousov <kib@freebsd.org> Subject: should vn_fullpath1() ever return a path with "." in it? Message-ID: <707174204.3391839.1362020362019.JavaMail.root@erie.cs.uoguelph.ca> In-Reply-To: <860349954.3391816.1362020304865.JavaMail.root@erie.cs.uoguelph.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_3391838_1284162422.1362020362017 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi, Sergey Kandaurov reported a problem where getcwd() returns a path with "/./" imbedded in it for an NFSv4 mount. This is caused by a mount point crossing on the server when at the server's root because vn_fullpath1() uses VV_ROOT to spot mount point crossings. The current workaround is to use the sysctls: debug.disablegetcwd=1 debug.disablefullpath=1 However, it would be nice to fix this when vn_fullpath1() is being used. A simple fix is to have vn_fullpath1() fail when it finds "." as a directory match in the path. When vn_fullpath1() fails, the syscalls fail and that allows the libc algorithm to be used (which works for this case because it doesn't depend on VV_ROOT being set, etc). So, I am wondering if a patch (I have attached one) that makes vn_fullpath1() fail when it matches "." will break anything else? (I don't think so, since the code checks for VV_ROOT in the loop above the check for a match of ".", but I am not sure?) Thanks for any input w.r.t. this, rick ------=_Part_3391838_1284162422.1362020362017 Content-Type: text/x-patch; name=getcwd.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=getcwd.patch LS0tIGtlcm4vdmZzX2NhY2hlLmMuc2F2CTIwMTMtMDItMjcgMjA6NDQ6NDIuMDAwMDAwMDAwIC0w NTAwCisrKyBrZXJuL3Zmc19jYWNoZS5jCTIwMTMtMDItMjcgMjE6MTA6MzkuMDAwMDAwMDAwIC0w NTAwCkBAIC0xMzMzLDYgKzEzMzMsMjAgQEAgdm5fZnVsbHBhdGgxKHN0cnVjdCB0aHJlYWQgKnRk LCBzdHJ1Y3QgdgogCQkJICAgIHN0YXJ0dnAsIE5VTEwsIDAsIDApOwogCQkJYnJlYWs7CiAJCX0K KwkJaWYgKGJ1ZltidWZsZW5dID09ICcuJyAmJiAoYnVmW2J1ZmxlbiArIDFdID09ICdcMCcgfHwK KwkJICAgIGJ1ZltidWZsZW4gKyAxXSA9PSAnLycpKSB7CisJCQkvKgorCQkJICogRmFpbCBpZiBp dCBtYXRjaGVkICIuIi4gVGhpcyBzaG91bGQgb25seSBoYXBwZW4KKwkJCSAqIGZvciBORlN2NCBt b3VudHMgdGhhdCBjcm9zcyBzZXJ2ZXIgbW91bnQgcG9pbnRzLgorCQkJICovCisJCQlDQUNIRV9S VU5MT0NLKCk7CisJCQl2cmVsZSh2cCk7CisJCQludW1mdWxscGF0aGZhaWwxKys7CisJCQllcnJv ciA9IEVOT0VOVDsKKwkJCVNEVF9QUk9CRSh2ZnMsIG5hbWVjYWNoZSwgZnVsbHBhdGgsIHJldHVy biwKKwkJCSAgICBlcnJvciwgdnAsIE5VTEwsIDAsIDApOworCQkJYnJlYWs7CisJCX0KIAkJYnVm Wy0tYnVmbGVuXSA9ICcvJzsKIAkJc2xhc2hfcHJlZml4ZWQgPSAxOwogCX0K ------=_Part_3391838_1284162422.1362020362017--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?707174204.3391839.1362020362019.JavaMail.root>