From owner-freebsd-fs@FreeBSD.ORG Fri Mar 15 13:59:56 2013 Return-Path: Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 168FE199 for ; Fri, 15 Mar 2013 13:59:56 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) by mx1.freebsd.org (Postfix) with ESMTP id 4E8B6258 for ; Fri, 15 Mar 2013 13:59:55 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.6/8.14.6) with ESMTP id r2FDxo98092642; Fri, 15 Mar 2013 15:59:50 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.8.0 kib.kiev.ua r2FDxo98092642 Received: (from kostik@localhost) by tom.home (8.14.6/8.14.6/Submit) id r2FDxo9B092641; Fri, 15 Mar 2013 15:59:50 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 15 Mar 2013 15:59:50 +0200 From: Konstantin Belousov To: Ilia Noskov Subject: Re: should vn_fullpath1() ever return a path with "." in it? Message-ID: <20130315135950.GU3794@kib.kiev.ua> References: <1208475167.3432384.1362099531469.JavaMail.root@erie.cs.uoguelph.ca> <51417C47.8010304@phantom.su> <20130314090847.GH3794@kib.kiev.ua> <5141A212.9050909@phantom.su> <5143204E.90003@phantom.su> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="IcaJnnNV5xAPxpBT" Content-Disposition: inline In-Reply-To: <5143204E.90003@phantom.su> User-Agent: Mutt/1.5.21 (2010-09-15) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home Cc: freebsd-fs@freebsd.org 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: Fri, 15 Mar 2013 13:59:56 -0000 --IcaJnnNV5xAPxpBT Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Mar 15, 2013 at 05:21:18PM +0400, Ilia Noskov wrote: > On 03/14/2013 02:10 PM, Ilia Noskov wrote: > > On 03/14/2013 01:08 PM, Konstantin Belousov wrote: > >> On Thu, Mar 14, 2013 at 11:29:11AM +0400, Noskov Ilia wrote: > >>> Strange behavior on nfs-client after apply this patch: > >>> > >>> sysctl debug.disablecwd=3D0 > >>> sysctl debug.disablefullpath=3D0 > >>> > >>> # mount -v -t nfs > >>> 192.168.168.1:/pool on /home (nfs, noatime, nfsv4acls, fsid > >>> 02ff003a3a000000) > >>> # ls /home | wc -l > >>> 4946 > >>> # cd /home/user6308/.ro > >>> # time pwd > >>> /home/user6308/.ro > >>> 0.008u 0.269s 0:08.47 3.0% 4+157k 0+0io 0pf+0w > >>> # ktrace -t+ -i pwd > >>> > >>> > >>> ktrace.out is big (1MB). Attach or not? > >>> > >>> > >>> > >>> A small piece of trace: > >>> 19527 pwd CALL > >>> mmap(0,0x400000,0x3,0x1002,0xffffffff,0) > >>> > >>> 19527 pwd RET mmap 34376515584/0x801000000 > >>> 19527 pwd CALL __getcwd(0x801006400,0x400) > >>> 19527 pwd NAMI ".." > >>> 19527 pwd NAMI ".." > >>> 19527 pwd RET __getcwd -1 errno 2 No such file or directory > >>> 19527 pwd CALL stat(0x800947a14,0x7fffffffd940) > >>> 19527 pwd NAMI "/" > >>> 19527 pwd STRU struct stat {dev=3D98, ino=3D2, mode=3Ddrwxr-= xr-x , > >>> nlink=3D19, uid=3D0, gid=3D0, rdev=3D2120, atime=3D1363244893, stime= =3D1362653279, > >>> ctime=3D1362653279, birthtime=3D1200836451, size=3D1024, blksize=3D16= 384, > >>> blocks=3D4, flags=3D0x0 } > >>> 19527 pwd RET stat 0 > >>> 19527 pwd CALL lstat(0x80094779c,0x7fffffffd940) > >>> 19527 pwd NAMI "." > >>> 19527 pwd STRU struct stat {dev=3D1230702064, ino=3D145, > >>> mode=3Ddrwxr-xr-x , nlink=3D2, uid=3D0, gid=3D0, rdev=3D4294967295, > >>> atime=3D1363244672.246785874, stime=3D1363244792.864201338, > >>> ctime=3D1363244792.864201338, birthtime=3D-1, size=3D3, blksize=3D409= 6, > >>> blocks=3D3, flags=3D0x0 } > >>> 19527 pwd RET lstat 0 > >>> 19527 pwd CALL openat(0xffffff9c,0x80094779b,0x100000,0x2) > >>> 19527 pwd NAMI ".." > >>> 19527 pwd RET openat 3 > >>> 19527 pwd CALL fstat(0x3,0x7fffffffd880) > >>> 19527 pwd STRU struct stat {dev=3D1230702064, ino=3D4, > >>> mode=3Ddrwxr-xr-x , nlink=3D9, uid=3D0, gid=3D0, rdev=3D4294967295, > >>> atime=3D1363244665.232140704, stime=3D1363010116.496298252, > >>> ctime=3D1363010116.496298252, birthtime=3D-1, size=3D14, blksize=3D40= 96, > >>> blocks=3D3, flags=3D0x0 } > >>> 19527 pwd RET fstat 0 > >>> 19527 pwd CALL fcntl(0x3,F_SETFD,FD_CLOEXEC) > >>> 19527 pwd RET fcntl 0 > >>> 19527 pwd CALL fstatfs(0x3,0x7fffffffd660) > >>> 19527 pwd RET fstatfs 0 > >>> 19527 pwd CALL fstat(0x3,0x7fffffffd940) > >>> 19527 pwd STRU struct stat {dev=3D1230702064, ino=3D4, > >>> mode=3Ddrwxr-xr-x , nlink=3D9, uid=3D0, gid=3D0, rdev=3D4294967295, > >>> atime=3D1363244665.232140704, stime=3D1363010116.496298252, > >>> ctime=3D1363010116.496298252, birthtime=3D-1, size=3D14, blksize=3D40= 96, > >>> blocks=3D3, flags=3D0x0 } > >>> 19527 pwd RET fstat 0 > >>> 19527 pwd CALL > >>> getdirentries(0x3,0x801018000,0x1000,0x8010160a8) > >>> 19527 pwd RET getdirentries 4096/0x1000 > >>> 19527 pwd CALL fstat(0x3,0x7fffffffd940) > >>> 19527 pwd STRU struct stat {dev=3D1230702064, ino=3D4, > >>> mode=3Ddrwxr-xr-x , nlink=3D9, uid=3D0, gid=3D0, rdev=3D4294967295, > >>> atime=3D1363244665.232140704, stime=3D1363010116.496298252, > >>> ctime=3D1363010116.496298252, birthtime=3D-1, size=3D14, blksize=3D40= 96, > >>> blocks=3D3, flags=3D0x0 } > >>> 19527 pwd RET fstat 0 > >>> 19527 pwd CALL openat(0x3,0x80094779b,0x100000,0) > >>> 19527 pwd NAMI ".." > >>> 19527 pwd RET openat 4 > >>> [..............................] > >>> 19527 pwd CALL madvise(0x801016000,0x1000,MADV_FREE) > >>> 19527 pwd RET madvise 0 > >>> 19527 pwd CALL madvise(0x801018000,0x2000,MADV_FREE) > >>> 19527 pwd RET madvise 0 > >>> 19527 pwd CALL close(0x3) > >>> 19527 pwd RET close 0 > >>> 19527 pwd CALL fstat(0x4,0x7fffffffd880) > >>> 19527 pwd STRU struct stat {dev=3D973143810, ino=3D4, > >>> mode=3Ddrwxr-xr-x , nlink=3D4948, uid=3D0, gid=3D0, rdev=3D4294967295, > >>> atime=3D1363244767.460164771, stime=3D1363172100.380266923, > >>> ctime=3D1363172100.380266923, birthtime=3D-1, size=3D4948, blksize=3D= 4096, > >>> blocks=3D713, flags=3D0x0 } > >>> 19527 pwd RET fstat 0 > >>> 19527 pwd CALL fcntl(0x4,F_SETFD,FD_CLOEXEC) > >>> 19527 pwd RET fcntl 0 > >>> 19527 pwd CALL fstatfs(0x4,0x7fffffffd660) > >>> 19527 pwd RET fstatfs 0 > >>> 19527 pwd CALL fstat(0x4,0x7fffffffd940) > >>> 19527 pwd STRU struct stat {dev=3D973143810, ino=3D4, > >>> mode=3Ddrwxr-xr-x , nlink=3D4948, uid=3D0, gid=3D0, rdev=3D4294967295, > >>> atime=3D1363244767.460164771, stime=3D1363172100.380266923, > >>> ctime=3D1363172100.380266923, birthtime=3D-1, size=3D4948, blksize=3D= 4096, > >>> blocks=3D713, flags=3D0x0 } > >>> 19527 pwd RET fstat 0 > >>> 19527 pwd CALL > >>> getdirentries(0x4,0x801018000,0x1000,0x8010160a8) > >>> 19527 pwd RET getdirentries 4096/0x1000 > >>> 19527 pwd CALL fstatat(0x4,0x801018030,0x7fffffffd940,0x200) > >>> 19527 pwd NAMI "user6158" > >>> 19527 pwd STRU struct stat {dev=3D1774902232, ino=3D4, > >>> mode=3Ddrwxr-xr-x , nlink=3D9, uid=3D0, gid=3D0, rdev=3D4294967295, > >>> atime=3D1363009687.040357529, stime=3D1363010116.496298252, > >>> ctime=3D1363010116.496298252, birthtime=3D-1, size=3D14, blksize=3D40= 96, > >>> blocks=3D3, flags=3D0x0 } > >>> 19527 pwd RET fstatat 0 > >>> 19527 pwd CALL fstatat(0x4,0x80101804c,0x7fffffffd940,0x200) > >>> 19527 pwd NAMI "user2289" > >>> 19527 pwd STRU struct stat {dev=3D1988229825, ino=3D4, > >>> mode=3Ddrwxr-xr-x , nlink=3D9, uid=3D0, gid=3D0, rdev=3D4294967295, > >>> atime=3D1363009687.040357529, stime=3D1363010116.496298252, > >>> ctime=3D1363010116.496298252, birthtime=3D-1, size=3D14, blksize=3D40= 96, > >>> blocks=3D3, flags=3D0x0 } > >>> 19527 pwd RET fstatat 0 > >>> 19527 pwd CALL fstatat(0x4,0x801018068,0x7fffffffd940,0x200) > >>> 19527 pwd NAMI "user4761" > >>> 19527 pwd STRU struct stat {dev=3D2438657130, ino=3D4, > >>> mode=3Ddrwxr-xr-x , nlink=3D9, uid=3D0, gid=3D0, rdev=3D4294967295, > >>> atime=3D1363009687.040357529, stime=3D1363010116.496298252, > >>> ctime=3D1363010116.496298252, birthtime=3D-1, size=3D14, blksize=3D40= 96, > >>> blocks=3D3, flags=3D0x0 } > >>> 19527 pwd RET fstatat 0 > >>> 19527 pwd CALL fstatat(0x4,0x801018084,0x7fffffffd940,0x200) > >>> 19527 pwd NAMI "user6055" > >>> [.........................................] > >>> > >>> and next get stat of all directories in /home > >> > >> Slightly different version of the patch was committed as r247560. > >> > >> The situation could only happen if the parent directory contains the "= =2E" > >> entry with inode number equal to the inode number of the subdirectory. > >> Can you confirm that this is your case ? > >> > > > > Yes, it is. > > I'll try again on the latest snapshot. Thanks! > > >=20 > Yes. > On latest r248313 similar situation - if path contains "." then=20 > nfsclient get stat of all directories in /home. What path ? Did you read the description of the situation when r248313 returns ENOENT to delegate the resolving to usermode ? Can you confirm that this is your situation ? --IcaJnnNV5xAPxpBT Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (FreeBSD) iQIcBAEBAgAGBQJRQylVAAoJEJDCuSvBvK1BslAP/A28vT8tyv6iYpIKHO0Vthii TKDhLNiCZMw/9udsddqgJfg2IbiqtNH+L/8KqHdpk5pkF7emfolQaeINY4AdxDvo /0x6imNAGBbLkwIpyNGHJstLfqmF8FWBI9wu26wbIIV2Lv0darWkm1qzulJzC8B7 k1NIb5h2Y5SzwjG51ZOxXz5xikvpruDZnDIHKC/wnE+kqu1cy0kd/1aem8+3B5CT J3yc95R+tMiYKkNssUxPgLaobSRF//k1H4uKjtYiEB+ceXoDuwaE7cXjmqrSHpnw jgwdXZWE3b57pwv6Xs7bmAVLsWLTwqm0Qr9R7FcFcC8or9vNDz7dng6OayOS/zG/ tGYfCOldjDzznDQgF7gBDlUiqnBIy1pdwFA7asiwr89JiYv2055n67rxZGUJh590 enjhsCaKQSHONvskARmP+ETxqYHPnsUocku1ebJxkeQV0HQp/qHqnswhk3Sy4yqF gNkKLyipgjUXsV1ryre3zWi8GIaEq4LRNi5BEOkBcPsZHohwZj2N02wnaUQcr6Bi Ynup8pwerxOeBG1O9TiLMD/8VP6jM3mOD/UHtdE9cUFUACju+EMHhRtBo7yJdrXL h/4GiK9Xvf1L3mHMNJv7Yg+f3xvEcGovP3pjYhNAjyusxntT0dHaJTMLgnA+Cf0Z o5j6WYrqS/R0wjrofIOj =Bk3F -----END PGP SIGNATURE----- --IcaJnnNV5xAPxpBT--