Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Jan 2013 15:52:58 +0300
From:      Sergey Kandaurov <pluknet@gmail.com>
To:        freebsd-fs@freebsd.org
Subject:   getcwd lies on/under nfs4-mounted zfs dataset
Message-ID:  <CAE-mSOJk1HbxvF=ZpoSP21b9j65qMov=AE-OM6wcUkbadQeZbw@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
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

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAE-mSOJk1HbxvF=ZpoSP21b9j65qMov=AE-OM6wcUkbadQeZbw>