[Dovecot] testing needed: log file concurrency

Daniel Cox danielcox at adam.com.au
Wed Jun 20 03:16:59 EEST 2007


NetBSD 3.1 (GENERIC)

No output, as expected after about 15min running.

Daniel.

Timo Sirainen wrote:
> http://dovecot.org/tmp/concurrency.c
>
> I'd want to know what results this program gives with different systems.
> Please test and reply (but don't bother if someone already replied with
> the same OS+result). I expect it to print:
>
>  - SMP kernels: "page size cut" once in a while
>  - UP (uniprocessor) kernels: Nothing
>  - The most important thing is that it never prints "broken data"
>
> It might take a while for it to print anything. With my computer it
> takes anything from a few seconds to a minute or so. See the file itself
> for compiling/running instructions.
>
> So far I've tested only with Linux 2.6.21 x86-64/SMP and a slow
> Solaris/Sparc/UP.
>
> If you're interested in knowing what this is about:
>
> Dovecot writes to dovecot.index.log files by first writing the
> transaction with its size being 0. After that it writes the 4 size bytes
> again (using a bit special format with all bytes ORed with 0x80).
>
> I expected that when another process is read()ing the file and it
> notices the size being valid (all bytes having 0x80) that the whole
> transaction could always be read. But looks like if the size happens to
> be just before a memory page boundary, it's possible that the updated
> size is read, but the rest of the transaction isn't.
>
>   



More information about the dovecot mailing list