On Mon, 2005-02-14 at 19:05, Andrew Morton wrote:
> Badari Pulavarty <[EMAIL PROTECTED]> wrote:
> >
> > Is there anything wrong, if we tear down bufferheads after the
> >  writepage/writepages is complete ? may be "-nobh" option for ext3 ?
> 
> The I/O completion will happen in interrupt context, which isn't really a
> good place to remove those bh's - the buffer_heads would need to be removed
> from their journal_heads first.  That's assuming data=ordered.
> 
> For data=writeback we could perhaps inspect buffer_heads_over_limit in
> end_buffer_async_write(), and if true, try to strip the buffers in
> interrupt context.
> 
> For data=ordered the best place would be in checkpoint.c somewhere, where
> we're detaching buffer_heads from a completed transaction: trylock the
> page, strip the journal_heads, try to strip the buffers, unlock page.

Makes sense. But I am not going to do it, till I figure out *if* there
is a real issue with bufferheads & doing this makes sense.

> 
> >  Even for ext2 with "-nobh" and JFS - we seem to attach buffer heads
> >  to page in __block_write_full_page() and leave them around. I was
> >  thinking, they gets tossed out after the write-out completes. No ?
> 
> For ext2 nobh we never attach buffer_heads to regular pagecache pages. 
> They're only used for metadata.  nobh_prepare_write() doesn't add them and
> neither does writepages().

Hmm.. 

Yep. nobh_prepare_write() doesn't add any bufferheads. But
we call block_write_full_page() even for "nobh" case, which 
does create bufferheads, attaches to the page and operates
on them..

__block_write_full_page()
{
....
....
        if (!page_has_buffers(page)) {
                create_empty_buffers(page, 1 << inode->i_blkbits,
                                 (1 << BH_Dirty)|(1 << BH_Uptodate));
        }

...
}
        
I am missing something really simple here. What is it ?
 
Thanks,
Badari

-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to