[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: biodone() and splbio ?
Manuel Bouyer <bouyer%antioche.eu.org@localhost> wrote:
> The top comment of dkiodone() says "NOTE: Must be called at splbio()!"
> but I can't see what would raise to splbio() in the trace above:
> biointr() is called at splsoftbio. It raises to splvm() to deal with
> the per-cpu iodone queue, but lowers the spl before calling
> biodone2(). uses mutex to protect bp's members, but releases it before
> calling b_iodone(). The callback is called with the kernel_lock held,
> but not at splbio(). Did I miss something ?
I do not think you miss anything - dkwedge merely lacks locking. Currently,
biodone2() holds kernel-lock for non-MP-safe systems, but no more. For now,
splbio()/splx() should work (protection is required, at least, by dkstart()
and disk_unbusy() in dkiodone()).
Other *iodone routines you listed seems broken too.
Main Index |
Thread Index |