should vn_fullpath1() ever return a path with "." in it?
Konstantin Belousov
kostikbel at gmail.com
Thu Mar 14 09:09:01 UTC 2013
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<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,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 ?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-fs/attachments/20130314/55082879/attachment.sig>
More information about the freebsd-fs
mailing list