tech-kern archive

[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.

-- 
Mindaugas


Home | Main Index | Thread Index | Old Index