Commit 0e1dfc66 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] invalidate_bdev() speedup

We can immediately bail from invalidate_bdev() if the blockdev has no
pagecache.

This solves the huge IPI storms which hald is causing on the big ia64
machines when it polls CDROM drives.
Acked-by: default avatarJes Sorensen <jes@sgi.com>
Cc: <stable@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent a268cefe
...@@ -470,13 +470,18 @@ out: ...@@ -470,13 +470,18 @@ out:
pass does the actual I/O. */ pass does the actual I/O. */
void invalidate_bdev(struct block_device *bdev, int destroy_dirty_buffers) void invalidate_bdev(struct block_device *bdev, int destroy_dirty_buffers)
{ {
struct address_space *mapping = bdev->bd_inode->i_mapping;
if (mapping->nrpages == 0)
return;
invalidate_bh_lrus(); invalidate_bh_lrus();
/* /*
* FIXME: what about destroy_dirty_buffers? * FIXME: what about destroy_dirty_buffers?
* We really want to use invalidate_inode_pages2() for * We really want to use invalidate_inode_pages2() for
* that, but not until that's cleaned up. * that, but not until that's cleaned up.
*/ */
invalidate_inode_pages(bdev->bd_inode->i_mapping); invalidate_inode_pages(mapping);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment