On Sun, November 4, 2007 2:54 pm, [EMAIL PROTECTED] wrote:
>> You could truss the hanging process to see what it's doing.
> It's not an easy task since the delay is sometimes just a few (5-10)
> seconds. And when there is a complete stall the client aborts before I can
>  find the process. But I'll give it a go.
>

I tried trussing a normal running process. Here's what I see all the time:

stat64("[path]/Maildir/new", 0xFFBFF470) = 0
stat64("[path]/Maildir/cur", 0xFFBFF4E0) = 0
stat64("[path]/Maildir/new", 0xFFBFF2F0) = 0
stat64("[path]/Maildir/cur", 0xFFBFF258) = 0
stat64("[path]/Maildir/dovecot-uidlist", 0xFFBFF1D0) = 0
chown("[path]/Maildir/dovecot-uidlist", 105, -1) = 0
stat64("[path]/Maildir/dovecot-uidlist", 0xFFBFF2F0) = 0
stat64("[path]/Maildir/dovecot.index.log", 0xFFBFDAE0) = 0
chown("[path]/Maildir/dovecot.index.log", 105, -1) = 0
stat64("[path]/Maildir/dovecot.index.log", 0xFFBFDBF0) = 0

What i notice is that stat64 is very often called twice in a row on the
same file.
Also I notice that chown() is always run before a file is accessed.

Regarding chown it looks like dovecot either thinks that the file hasn't
got the rights it should have, or it just calls chown anyway to be sure.

I'm not a C-programmer so I have no idea whether it’s supposed to be like
that. But if it isn’t then perhaps it could explain the many writes
(chowning constantly)?

What do you think?

Reply via email to