From owner-freebsd-fs@FreeBSD.ORG Tue Jan 15 12:52:59 2013 Return-Path: Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id D94589A for ; Tue, 15 Jan 2013 12:52:59 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: from mail-qa0-f48.google.com (mail-qa0-f48.google.com [209.85.216.48]) by mx1.freebsd.org (Postfix) with ESMTP id 8A304655 for ; Tue, 15 Jan 2013 12:52:59 +0000 (UTC) Received: by mail-qa0-f48.google.com with SMTP id l8so121903qaq.7 for ; Tue, 15 Jan 2013 04:52:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=MUVcmjAyXuMFqtoC/Sb1vGEv1i/1T1T7E8U0HKFX6FE=; b=c85W1MlFJTEVEHyuqaZegPM0sVc6hJ30z89gQBMa8SB6vHLdVY7MAL++yYhTbSdFvC cVEt/IGpfBYG6Ocelzlwau6F/AXRdfVuv+x22jxtF99qwM/1uqWZ4212zWUxGvU0hvN8 U5mCqVKSPuLm2gqu1F+1HsKe7TTO2JzVbGIBQkwS6h8DRH4FBuPS+us9qktaByh/AvCW ZVXZ/u2Mhih+zeuEBPvooztSw516UDZy9qj625xlyO05TTGYjtlLFPTv+MldYC776DIJ He0Hqzi6YoEky/iPy51c9WYEa8aPLHuMgnweVI752EIW2MhCs4OgPs/W9GGUiqN2rKn9 6XIw== MIME-Version: 1.0 Received: by 10.224.60.12 with SMTP id n12mr75306031qah.23.1358254378886; Tue, 15 Jan 2013 04:52:58 -0800 (PST) Received: by 10.229.78.96 with HTTP; Tue, 15 Jan 2013 04:52:58 -0800 (PST) Date: Tue, 15 Jan 2013 15:52:58 +0300 Message-ID: Subject: getcwd lies on/under nfs4-mounted zfs dataset From: Sergey Kandaurov To: freebsd-fs@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jan 2013 12:52:59 -0000 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