Messages in this thread | | | Date | Tue, 10 Apr 2001 23:42:58 +0200 | From | Andrea Arcangeli <> | Subject | Re: BH_Req question |
| |
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/
| |