On Wed, 27 Nov 2002, Ian Dowse wrote:

> In message <[EMAIL PROTECTED]>, Bruce Evans writes:
> >Better fix mddestroy().  I don't know why it hangs ... I guess it is
> >because it is called before initialization is completed in mdinit(),
> >and there aren't enough state checks in mddestroy().
>
> I think moving the line
>
>       tsleep(sc, PRIBIO, "mdwait", 0);
>
> to just after the following `if' statement may do the trick. If the
> wakeup() from mddestroy() comes in before md_kthread() gets to the
> main loop, then it would be missed. I think jhb posted a better way
> of synchronising with kthreads during their destruction, but I
> haven't found the time to look into that yet.

Wouldn't Giant locking prevent races here?  There is no locking in
sight for the ioctl, but ioctl() holds Giant.

Bruce


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to