Fwd: Re: ext3_readdir() readahead problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Just in case this piece of message will benefit someone in the mailing list ;)
--- Begin Message ---
Wu Fengguang <[email protected]> wrote:
>
> On Wed, Nov 09, 2005 at 07:34:58PM -0800, Andrew Morton wrote:
> > Wu Fengguang <[email protected]> wrote:
> > Ah, OK.  Rather than showing a stream of numbers it really helps if you can
> > tell people what the numbers _mean_.
> Got it. Thanks!
> > > > 

Minor point: your email are mush more readable if you put a blank line
before and after your paragraphs, like this ;)

> > 
> > Part of the page.  If PAGE_CACHE_SIZE=4k and it's a 1k blocksize
> > filesystem, we'll only read 1k from disk.
> So it's one block, or one buffer_head, am I right?

buffer_head is misnamed.  It used to be both a caching concept and an IO
container.  It's still an IO container sometimes, but it really should be
renamed `struct block'.  It is the kernel's core abstraction for a disk
block.  Usually of size <= PAGE_CACHE_SIZE.  There are a few places where
bh->b_size is >PAGE_CACHE_SIZE, in the get_blocks() callback.  But that's
an exception.

A buffer_head is metadata against a struct page, telling us the state of a
subsection of a page, and also telling us the disk mapping (ie:
partition-relative block number) for that page subsection.

> > > suboptimal to let both ext3_readdir() and page_cache_readahead() do some part
> > > of I/O.  The best scheme should be to test page existence and call read-ahead in
> > > the very beginning(maybe before ext3_getblk()).
> > 
> > ext3_getblk() doesn't actually read the block from disk.  All it will do is
> > to determine the location of the block on disk.  Plus if it's a write and
> > if we newly created the block, ext3 will perform journalling of the buffer.
>
> But it inserts the page into radix tree, which effectively prevents
> __do_page_cache_readahead() to read that page, and makes (actual <= req_size-1)
> in the following trace.

erk.   That's pretty screwed up, isn't it?

I need to think again.   Thanks.


--- End Message ---

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux