RELENG_6: I/O deadlock under load

Ulrich Spoerlein uspoerlein at gmail.com
Fri Nov 3 10:18:55 UTC 2006


On 10/28/06, Christian S.J. Peron <csjp at freebsd.org> wrote:
>
> It almost looks as if a user frequently runs gmirror(8) to query the
> status of their array. Under a high load situation, the worker is busy,
> so at one un-lucky momment, gmirror(8) is run:
>
>     (1) gmirror(8) waits for sc->sc_lock owned by the worker
>     (2) The worker then drops the lock
>     (3) gmirror(8) proceeds
>     (4) Worker wakes up and waits for sc->sc_lock
>     (5) Only gmirror  never will because it's waiting on a resource
> (presumably owned by the worker thread)?
>
> I am not certain this is correct, so I have included pjd in the CC loop,
> hoping he can help shed some light on the subject :)

This is just a followup to report that the problem seems
unreproducable on an identical kernel if I leave out option
PREEMPTION.
Performance sucks that way, but at least it's stable now.

Pawel seems to be rather busy with his GJOURNAL work and his ZFS port,
is someone else able to reproduce the problem?

Uli


More information about the freebsd-stable mailing list