On Tue, Apr 10, 2001 at 01:12:02PM -0700, Rajagopal Ananthanarayanan wrote:
>
> Hi,
>
> It seems BH_Req is set on a buffer_head by submit_bh.
> What part of the code unsets this flag during normal
> operations? One path seems to be block_flushpage->unmap_buffer
> ->clear_bit(BH_Req), but IIRC block_flushpage is used only
> for truncates. There must be another path to unset BH_Req
> under normal memory pressure, or (more unambiguously) on IO completion.
>
> So: in what ways can BH_Req be unset?
BH_Req is never unset until the buffer is destroyed (put back on the freelist).
BH_Req only says if such a buffer ever did any I/O yet or not. It is basically
only used to deal with I/O errors in sync_buffers().
> PS: In case why the question: I've got a system with tons of
> pages with buffers marked BH_Req, so try_to_free_buffers() bails
> out thinking that the buffer is busy ...
Either your debugging is wrong or you broke try_to_free_buffers because a
buffer with BH_Req must still be perfectly freeable.
Andrea
-
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/
This archive was generated by hypermail 2b29 : Sun Apr 15 2001 - 21:00:14 EST