Re: How does the disk buffer cache work?

Andrew Morton (akpm@digeo.com)
Mon, 30 Dec 2002 20:14:03 -0800


Matthew Zahorik wrote:
>
> On Mon, 30 Dec 2002, Andrew Morton wrote:
>
> > > [.. the next function call in read_cache_page() is lock_page(), which we
> > > hang forever on ..]
> >
> > lock_page() will sleep until the page is unlocked. The page is unlocked
> > from end_buffer_io_sync(), which is called from within the context of
> > the disk device driver's interrupt handler.
>
> Okay, I'll track it down there. Probably the driver not calling
> end_buffer_io_sync() when timed out. When the bad drive is detached,
> things work fine - leading me to believe that hardware and interrupt
> routing wise things are okay.
>

It won't call end_buffer_io_sync() explicitly - it calls the function which
is pointed at by the relevant buffer's b_end_io vector. Typically that
will point at end_buffer_io_aysnc() or end_buffer_io_sync()
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/