Hi,
I have a couple of solaris 2.6 Ultra-5 machines.
On one machine /usr/sbin/quota takes about
a second, or less. On the others it takes
about a minute to execute.
Using truss /usr/sbin/quota username I found
that it's waiting for input on /dev/udp
(not the sleeping...):
[...]
open("/dev/udp", O_RDWR) = 5
ioctl(5, I_FIND, "timod") = 0
ioctl(5, I_PUSH, "timod") = 0
sigprocmask(SIG_SETMASK, 0xEFFFF5C8, 0xEFFFF5B8) = 0
ioctl(5, I_STR, 0xEFFFF440) = 0
sigprocmask(SIG_SETMASK, 0xEFFFF5B8, 0x00000000) = 0
ioctl(5, I_FLUSH, FLUSHRW) = 0
sigprocmask(SIG_SETMASK, 0xEFFFF5C8, 0xEFFFF5B8) = 0
ioctl(5, I_STR, 0xEFFFF530) = 0
sigprocmask(SIG_SETMASK, 0xEFFFF5B8, 0x00000000) = 0
ioctl(5, I_STR, 0xEFFFF438) = 0
getpid() = 25226 [25225]
ioctl(5, I_STR, 0xEFFFF484) = 0
time() = 926520672
putmsg(5, 0xEFFFF55C, 0xEFFFF69C, 0) = 0
poll(0x0002D23C, 1, 15000) (sleeping...)
poll(0x0002D23C, 1, 15000) = 0
poll(0x0002D23C, 1, 8) = 0
putmsg(5, 0xEFFFF55C, 0xEFFFF69C, 0) = 0
poll(0x0002D23C, 1, 30000) (sleeping...)
poll(0x0002D23C, 1, 30000) = 0
putmsg(5, 0xEFFFF55C, 0xEFFFF69C, 0) = 0
poll(0x0002D23C, 1, 14997) (sleeping...)
poll(0x0002D23C, 1, 14997) = 0
sigprocmask(SIG_SETMASK, 0xEFFFF648, 0xEFFFF638) = 0
close(5) = 0
Note that it tries the same sequence later again
and it succeeds instantly like in the normal case
below.
On the other machine a normal truss /usr/sbin/quota username
looks like this (note that the poll immediately returns):
[...]
open("/dev/udp", O_RDWR) = 5
ioctl(5, I_FIND, "timod") = 0
ioctl(5, I_PUSH, "timod") = 0
sigprocmask(SIG_SETMASK, 0xEFFFF7C0, 0xEFFFF7B0) = 0
ioctl(5, I_STR, 0xEFFFF638) = 0
sigprocmask(SIG_SETMASK, 0xEFFFF7B0, 0x00000000) = 0
ioctl(5, I_FLUSH, FLUSHRW) = 0
sigprocmask(SIG_SETMASK, 0xEFFFF7C0, 0xEFFFF7B0) = 0
ioctl(5, I_STR, 0xEFFFF728) = 0
sigprocmask(SIG_SETMASK, 0xEFFFF7B0, 0x00000000) = 0
ioctl(5, I_STR, 0xEFFFF630) = 0
getpid() = 142 [141]
ioctl(5, I_STR, 0xEFFFF67C) = 0
time() = 926520707
putmsg(5, 0xEFFFF754, 0xEFFFF894, 0) = 0
poll(0x0002D23C, 1, 15000) = 1
getmsg(5, 0xEFFFF750, 0x00028188, 0xEFFFF77C) = 0
sigprocmask(SIG_SETMASK, 0xEFFFF840, 0xEFFFF830) = 0
close(5) = 0
Anybody got any explanation for this? Especially
how to fix this?
Thanx in advance
Guenther
P.S.: Not that we don't have any quotas enabled.
Full truss ouput available on request :-)