From owner-freebsd-fs@FreeBSD.ORG Thu Mar 14 10:20:49 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 7361C2D1 for ; Thu, 14 Mar 2013 10:20:49 +0000 (UTC) (envelope-from phantom@phantom.su) Received: from relay08.nicmail.ru (relay08.nicmail.ru [195.208.6.4]) by mx1.freebsd.org (Postfix) with ESMTP id C73EDC3 for ; Thu, 14 Mar 2013 10:20:48 +0000 (UTC) Received: from [109.70.25.145] (port=43055 helo=nicmail.ru) by f06.mail.nic.ru with esmtp (Exim 5.55) (envelope-from ) id 1UG57D-000MaL-01; Thu, 14 Mar 2013 14:10:27 +0400 Received: from [194.85.198.26] (account phantom@phantom.su HELO phantom-mobile.node) by fcgp09.nicmail.ru (CommuniGate Pro SMTP 5.2.3) with ESMTPSA id 99207934; Thu, 14 Mar 2013 14:10:26 +0400 Message-ID: <5141A212.9050909@phantom.su> Date: Thu, 14 Mar 2013 14:10:26 +0400 From: Ilia Noskov User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130215 Thunderbird/17.0.3 MIME-Version: 1.0 To: Konstantin Belousov Subject: Re: should vn_fullpath1() ever return a path with "." in it? References: <1208475167.3432384.1362099531469.JavaMail.root@erie.cs.uoguelph.ca> <51417C47.8010304@phantom.su> <20130314090847.GH3794@kib.kiev.ua> In-Reply-To: <20130314090847.GH3794@kib.kiev.ua> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-fs@freebsd.org X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: phantom@phantom.su List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Mar 2013 10:20:49 -0000 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=0 >> sysctl debug.disablefullpath=0 >> >> # 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=98, ino=2, mode=drwxr-xr-x , >> nlink=19, uid=0, gid=0, rdev=2120, atime=1363244893, stime=1362653279, >> ctime=1362653279, birthtime=1200836451, size=1024, blksize=16384, >> blocks=4, flags=0x0 } >> 19527 pwd RET stat 0 >> 19527 pwd CALL lstat(0x80094779c,0x7fffffffd940) >> 19527 pwd NAMI "." >> 19527 pwd STRU struct stat {dev=1230702064, ino=145, >> mode=drwxr-xr-x , nlink=2, uid=0, gid=0, rdev=4294967295, >> atime=1363244672.246785874, stime=1363244792.864201338, >> ctime=1363244792.864201338, birthtime=-1, size=3, blksize=4096, >> blocks=3, flags=0x0 } >> 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=1230702064, ino=4, >> mode=drwxr-xr-x , nlink=9, uid=0, gid=0, rdev=4294967295, >> atime=1363244665.232140704, stime=1363010116.496298252, >> ctime=1363010116.496298252, birthtime=-1, size=14, blksize=4096, >> blocks=3, flags=0x0 } >> 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=1230702064, ino=4, >> mode=drwxr-xr-x , nlink=9, uid=0, gid=0, rdev=4294967295, >> atime=1363244665.232140704, stime=1363010116.496298252, >> ctime=1363010116.496298252, birthtime=-1, size=14, blksize=4096, >> blocks=3, flags=0x0 } >> 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=1230702064, ino=4, >> mode=drwxr-xr-x , nlink=9, uid=0, gid=0, rdev=4294967295, >> atime=1363244665.232140704, stime=1363010116.496298252, >> ctime=1363010116.496298252, birthtime=-1, size=14, blksize=4096, >> blocks=3, flags=0x0 } >> 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=973143810, ino=4, >> mode=drwxr-xr-x , nlink=4948, uid=0, gid=0, rdev=4294967295, >> atime=1363244767.460164771, stime=1363172100.380266923, >> ctime=1363172100.380266923, birthtime=-1, size=4948, blksize=4096, >> blocks=713, flags=0x0 } >> 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=973143810, ino=4, >> mode=drwxr-xr-x , nlink=4948, uid=0, gid=0, rdev=4294967295, >> atime=1363244767.460164771, stime=1363172100.380266923, >> ctime=1363172100.380266923, birthtime=-1, size=4948, blksize=4096, >> blocks=713, flags=0x0 } >> 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=1774902232, ino=4, >> mode=drwxr-xr-x , nlink=9, uid=0, gid=0, rdev=4294967295, >> atime=1363009687.040357529, stime=1363010116.496298252, >> ctime=1363010116.496298252, birthtime=-1, size=14, blksize=4096, >> blocks=3, flags=0x0 } >> 19527 pwd RET fstatat 0 >> 19527 pwd CALL fstatat(0x4,0x80101804c,0x7fffffffd940,0x200) >> 19527 pwd NAMI "user2289" >> 19527 pwd STRU struct stat {dev=1988229825, ino=4, >> mode=drwxr-xr-x , nlink=9, uid=0, gid=0, rdev=4294967295, >> atime=1363009687.040357529, stime=1363010116.496298252, >> ctime=1363010116.496298252, birthtime=-1, size=14, blksize=4096, >> blocks=3, flags=0x0 } >> 19527 pwd RET fstatat 0 >> 19527 pwd CALL fstatat(0x4,0x801018068,0x7fffffffd940,0x200) >> 19527 pwd NAMI "user4761" >> 19527 pwd STRU struct stat {dev=2438657130, ino=4, >> mode=drwxr-xr-x , nlink=9, uid=0, gid=0, rdev=4294967295, >> atime=1363009687.040357529, stime=1363010116.496298252, >> ctime=1363010116.496298252, birthtime=-1, size=14, blksize=4096, >> blocks=3, flags=0x0 } >> 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 "." > 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! -- Best Regards, Ilia Noskov Regional Network Information Center (RU-CENTER) phone: +7 495 737-0601 fax: +7 495 737-0602 http://www.nic.ru