From: Andrew Morton Cc: Peter Zijlstra Signed-off-by: Andrew Morton --- fs/block_dev.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN fs/block_dev.c~mm-optimize-kill_bdev-fix fs/block_dev.c --- a/fs/block_dev.c~mm-optimize-kill_bdev-fix +++ a/fs/block_dev.c @@ -55,9 +55,11 @@ static sector_t max_block(struct block_d return retval; } -/* Kill _all_ buffers, dirty or not.. */ +/* Kill _all_ buffers and pagecache , dirty or not.. */ static void kill_bdev(struct block_device *bdev) { + if (bdev->bd_inode->i_mapping->nrpages == 0) + return; invalidate_bh_lrus(); truncate_inode_pages(bdev->bd_inode->i_mapping, 0); } _