On 19 Sep 2014, at 12:05, Dawid Stawiarski - nazwa.pl 
<dawid.stawiar...@netart.pl> wrote:

> we use dovecot 2.2.13, and we've lately started using maildir quota 
> (previously fs quota was used, right now it's "quota = maildir:User quota" 
> changed from "quota  = fs:User quota:user:inode_per_mail").
> 
> When the change was applied we didn't manually forced generating maildirsize 
> files. So, when the first deliver happens (or the file grows larger then 5KB) 
> it starts quota recalc. However for users with big maildirs, receiving email 
> every couple of seconds, there are tens of delivery processes each doing its 
> own recalc (as they open file for APPEND and there's no locking). What's even 
> worse, after all the stats and getdents (it takes a lot of IO for 60GB 
> account with 2M emails), deliver makes stat on 'new' dir and detects changes 
> after which it unlinks freshly created maildirsize. So possibly this will 
> never be finished as every process drops its own work.
> 
> The same thing happened when we checked the native dovecot LMTP server (every 
> connection has its own forked process - each running independently of the 
> others).
> 
> Is it a known unwanted "feature" of maildir quota (and we should use dict 
> quota instead) or a bug that will be fixed?

It's a feature that won't be changed. The stat()s are especially bad if you see 
them - they wouldn't happen if your Maildir filenames contain the ,S=size part. 
Switch to dict file, which won't be recalculated unless you manually do it.

Reply via email to