|
Description
|
In Solaris 10 , "/bin/du -skd" on symlinks freezes it progress at a symlink
pointing to a stale NFS location.
"/bin/du -skd" is not expected to follow a symlink to a NFS location
truss shows that du hangs on pathconf syscall :
-- snip --
30378 6953/1@1: 15.4636 -> libc:telldir(0xff3a01c0, 0x7fffffff, 0x7ffffc00, 0x9)
30379 6953/1: 15.4645 llseek(3, 0, SEEK_CUR) = 5120
30380 6953/1@1: 15.4646 <- libc:telldir() = 4608
30381 6953/1@1: 15.4650 -> libc:strchr(0x232b8, 0x0, 0x0, 0x0)
30382 6953/1@1: 15.4655 <- libc:strchr() = 0x232c0
30383 6953/1@1: 15.4661 -> libc:fstatat64(0xffd19553, 0x232ba, 0xffbfe948, 0x1000)
30384 6953/1: 15.4667 fstatat64(-3041965, "export", 0xFFBFE948, 0x00001000) = 0
30385 6953/1@1: 15.4669 <- libc:fstatat64() = 0
30386 6953/1@1: 15.4673 -> libc:pathconf(0x232ba, 0x65, 0xa000, 0xffbfe948)
30387 6953/1: pathconf("export", 101) (sleeping...)
<<-- /bin/du interrupted with ^C
30388 6953/1: 254.4238 pathconf("export", 101) Err#4 EINTR
30389 6953/1: 254.4243 Received signal #2, SIGINT [default]
"/bin/du -skd" in Solaris 8 does not show this problem, as it does not use the pathconf syscall
7392/1@1: 6.5090 <- libc:sprintf() = 7
7392/1@1: 6.5095 -> libc:telldir(0xff3a01c0, 0x7fffffff, 0x7ffffc00, 0x80808080)
7392/1: 6.5105 llseek(3, 0, SEEK_CUR) = 5120
7392/1@1: 6.5106 <- libc:telldir() = 4608
7392/1@1: 6.5110 -> libc:strchr(0x22f30, 0x0, 0x0, 0x0)
7392/1@1: 6.5115 <- libc:strchr() = 0x22f38
7392/1@1: 6.5121 -> libc:lstat64(0x22f32, 0xffbfe938, 0x0, 0x80808080)
7392/1: 6.5126 lstat64("export", 0xFFBFE938) = 0
7392/1@1: 6.5128 <- libc:lstat64() = 0
7392/1@1: 6.5133 -> libc:readdir64(0xff3a01c0, 0x0, 0x22f38, 0x22f32)
7392/1@1: 6.5138 <- libc:readdir64() = 0xff3a4890
|