Re: [patch 12/23] invalidate_bdev() speedup

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

 



On Fri, 04 Aug 2006 15:08:49 +0200
Arjan van de Ven <[email protected]> wrote:

> On Fri, 2006-08-04 at 02:04 -0700, Andrew Morton wrote:
> > On Fri, 4 Aug 2006 09:50:13 +0100
> > Christoph Hellwig <[email protected]> wrote:
> > 
> > > On Thu, Aug 03, 2006 at 10:39:42PM -0700, Greg KH wrote:
> > > > -stable review patch.  If anyone has any objections, please let us know.
> > > 
> > > This is a feature.  Definitly not -stable material.
> > 
> > Apparently that regular IPI storm is causing the SGI machines some
> > significant problems. 
> 
> a tiny performance drop :) If that meets the stable policy.. open
> question :)

The interrupt holdoff problem is one which is important to Altix users (for
reasons which I've never understood).  Apparently, quite important - this
is I think the third time we've fixed problems in this area for Altix.

> > It's not the biggest problem we've ever had, but if this patch is wrong,
> > the pagecache/buffer_head layer is utterly busted.  And it isn't.
> 
> 
> are you sure?
> 
> +       struct address_space *mapping = bdev->bd_inode->i_mapping;
> +
> +       if (mapping->nrpages == 0)
> +               return;
> +
>         invalidate_bh_lrus();
> 
> what happens if a bdev used to have pagecache and at some point stops
> having that due to page reclaim... will that page reclaim call
> invalidate_bh_lrus() ? If not, who will ? If the answer is "nobody", is
> that really the right answer?

invalidate_bdev() calls invalidate_bh_lrus() to release any references
which the bh lru has against the the bdev's pagecache, so that
invalidate_inode_pages() can take down the bdev's pagecache.

If the bdev has no pagecache then there's no need to call
invalidate_bh_lrus(). (or invalidate_inode_pages, or truncate_inode_pages, btw)

(In fact, even if the inode _does_ have pagecache, we still don't need to
call invalidate_bh_lrus(): both invalidate_inodes_pages() and
truncate_inode_pages() will still remove this page from the inode.  The bh
lru is left holding the last reference to the now-anonymous page, and this
will later expire, finally freeing the page).


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[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