Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Jan 2013 22:10:35 -0500 (EST)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Sergey Kandaurov <pluknet@gmail.com>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: getcwd lies on/under nfs4-mounted zfs dataset
Message-ID:  <980540815.2029630.1358305835362.JavaMail.root@erie.cs.uoguelph.ca>
In-Reply-To: <CAE-mSOJk1HbxvF=ZpoSP21b9j65qMov=AE-OM6wcUkbadQeZbw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_2029629_336101775.1358305835359
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

pluknet@gmail.com wrote:
> Hi.
> 
> We stuck with the problem getting wrong current directory path
> when sitting on/under zfs dataset filesystem mounted over NFSv4.
> Both nfs server and client are 10.0-CURRENT from December or so.
> 
> The component path "user3" unexpectedly appears to be "." (dot).
> nfs-client:/home/user3 # pwd
> /home/.
> nfs-client:/home/user3/var/run # pwd
> /home/./var/run
> 
Yep, it was broken for UFS too. I think the attached patch for
the client might fix it. (It fixes a trivial test case for UFS,
but I haven't gone through the code to check if it might break
something else.)

I vaguely recall bumping into a non-FreeBSD server that only
returned the Mounted_on_fileno attribute for mount points at
a testing bakeathon and hacking around the problem that caused.
(I think that hack made it into head, oops.;-)

So, I wouldn't test this patch for a production type system,
but if you can test it, that would be great.

Sorry about the breakage, rick

> nfs-client:~ # procstat -f 3225
> PID COMM FD T V FLAGS REF OFFSET PRO NAME
> 3225 a.out text v r r-------- - - - /home/./var/a.out
> 3225 a.out ctty v c rw------- - - - /dev/pts/2
> 3225 a.out cwd v d r-------- - - - /home/./var
> 3225 a.out root v d r-------- - - - /
> 
> The used setup follows.
> 
> 1. NFS Server with local ZFS:
> # cat /etc/exports
> V4: / -sec=sys
> 
> # zfs list
> pool1 10.4M 122G 580K /pool1
> pool1/user3 on /pool1/user3 (zfs, NFS exported, local, nfsv4acls)
> 
> Exports list on localhost:
> /pool1/user3 109.70.28.0
> /pool1 109.70.28.0
> 
> # zfs get sharenfs pool1/user3
> NAME PROPERTY VALUE SOURCE
> pool1/user3 sharenfs -alldirs -maproot=root -network=109.70.28.0/24
> local
> 
> 2. pool1 is mounted on NFSv4 client:
> nfs-server:/pool1 on /home (nfs, noatime, nfsv4acls)
> 
> So that on NFS client the "pool1/user3" dataset comes at /home/user3.
> / - ufs
> /home - zpool-over-nfsv4
> /home/user3 - zfs dataset "pool1/user3"
> 
> At the same time it works as expected when we're not on zfs dataset,
> but directly on its parent zfs pool (also over NFSv4), e.g.
> nfs-client:/home/non_dataset_dir # pwd
> /home/non_dataset_dir
> 
> The ls command works as expected:
> nfs-client:/# ls -dl /home/user3/var/
> drwxrwxrwt+ 6 root wheel 6 Jan 10 16:19 /home/user3/var/
> 
> --
> wbr,
> pluknet
> _______________________________________________
> freebsd-fs@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-fs
> To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org"

------=_Part_2029629_336101775.1358305835359
Content-Type: text/x-patch; name=client-getcwd.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=client-getcwd.patch

LS0tIGZzL25mcy9uZnNwcm90by5oLnNhdjIJMjAxMy0wMS0xNSAyMTozNDo0OS4wMDAwMDAwMDAg
LTA1MDAKKysrIGZzL25mcy9uZnNwcm90by5oCTIwMTMtMDEtMTUgMjE6MzY6NTUuMDAwMDAwMDAw
IC0wNTAwCkBAIC05ODQsNyArOTg0LDggQEAgc3RydWN0IG5mc3YzX3NhdHRyIHsKICAJTkZTQVRU
UkJNX1NQQUNFVVNFRCB8CQkJCQkJXAogIAlORlNBVFRSQk1fVElNRUFDQ0VTUyB8CQkJCQkJXAog
IAlORlNBVFRSQk1fVElNRU1FVEFEQVRBIHwJCQkJCVwKLSAJTkZTQVRUUkJNX1RJTUVNT0RJRlkp
CisgCU5GU0FUVFJCTV9USU1FTU9ESUZZIHwJCQkJCQlcCisJTkZTQVRUUkJNX01PVU5URURPTkZJ
TEVJRCkKIAogLyoKICAqIFN1YnNldCBvZiB0aGUgYWJvdmUgdGhhdCB0aGUgV3JpdGUgUlBDIGdl
dHMuCi0tLSBmcy9uZnMvbmZzX2NvbW1vbnN1YnMuYy5zYXYyCTIwMTMtMDEtMTUgMjE6Mzg6NTMu
MDAwMDAwMDAwIC0wNTAwCisrKyBmcy9uZnMvbmZzX2NvbW1vbnN1YnMuYwkyMDEzLTAxLTE1IDIx
OjQwOjA0LjAwMDAwMDAwMCAtMDUwMApAQCAtMTcyNiw2ICsxNzI2LDcgQEAgbmZzdjRfbG9hZGF0
dHIoc3RydWN0IG5mc3J2X2Rlc2NyaXB0ICpuZAogCQkJICAgIGlmICgqdGwrKykKIAkJCQlwcmlu
dGYoIk5GU3Y0IG1vdW50ZWQgb24gZmlsZWlkID4gMzJiaXRzXG4iKTsKIAkJCSAgICBuYXAtPm5h
X21udG9uZmlsZW5vID0gdGh5cDsKKwkJCSAgICBuYXAtPm5hX2ZpbGVpZCA9IG5hcC0+bmFfbW50
b25maWxlbm87CiAJCQl9CiAJCQlhdHRyc3VtICs9IE5GU1hfSFlQRVI7CiAJCQlicmVhazsK
------=_Part_2029629_336101775.1358305835359--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?980540815.2029630.1358305835362.JavaMail.root>