From: NeilBrown The return value of this function is never used, so let's be honest and declare it as void. Some places where invalidatepage returned 0, I have inserted comments suggesting a BUG_ON. Signed-off-by: Neil Brown Acked-by: Dave Kleikamp Signed-off-by: Andrew Morton --- fs/afs/file.c | 6 +++--- fs/buffer.c | 22 +++++++++++----------- fs/ext3/inode.c | 4 ++-- fs/jbd/transaction.c | 12 +++++------- fs/jfs/jfs_metapage.c | 7 +++---- fs/reiserfs/inode.c | 8 +++++--- fs/xfs/linux-2.6/xfs_aops.c | 4 ++-- include/linux/buffer_head.h | 4 ++-- include/linux/fs.h | 2 +- include/linux/jbd.h | 2 +- 10 files changed, 35 insertions(+), 36 deletions(-) diff -puN fs/afs/file.c~make-address_space_operations-invalidatepage-return-void fs/afs/file.c --- devel/fs/afs/file.c~make-address_space_operations-invalidatepage-return-void 2006-03-17 23:11:02.000000000 -0800 +++ devel-akpm/fs/afs/file.c 2006-03-17 23:11:02.000000000 -0800 @@ -28,7 +28,7 @@ static int afs_file_release(struct inode #endif static int afs_file_readpage(struct file *file, struct page *page); -static int afs_file_invalidatepage(struct page *page, unsigned long offset); +static void afs_file_invalidatepage(struct page *page, unsigned long offset); static int afs_file_releasepage(struct page *page, gfp_t gfp_flags); struct inode_operations afs_file_inode_operations = { @@ -212,7 +212,7 @@ int afs_cache_get_page_cookie(struct pag /* * invalidate part or all of a page */ -static int afs_file_invalidatepage(struct page *page, unsigned long offset) +static void afs_file_invalidatepage(struct page *page, unsigned long offset) { int ret = 1; @@ -238,11 +238,11 @@ static int afs_file_invalidatepage(struc if (!PageWriteback(page)) ret = page->mapping->a_ops->releasepage(page, 0); + /* possibly should BUG_ON(!ret); - neilb */ } } _leave(" = %d", ret); - return ret; } /* end afs_file_invalidatepage() */ /*****************************************************************************/ diff -puN fs/buffer.c~make-address_space_operations-invalidatepage-return-void fs/buffer.c --- devel/fs/buffer.c~make-address_space_operations-invalidatepage-return-void 2006-03-17 23:11:02.000000000 -0800 +++ devel-akpm/fs/buffer.c 2006-03-17 23:11:02.000000000 -0800 @@ -1593,11 +1593,10 @@ EXPORT_SYMBOL(try_to_release_page); * point. Because the caller is about to free (and possibly reuse) those * blocks on-disk. */ -int block_invalidatepage(struct page *page, unsigned long offset) +void block_invalidatepage(struct page *page, unsigned long offset) { struct buffer_head *head, *bh, *next; unsigned int curr_off = 0; - int ret = 1; BUG_ON(!PageLocked(page)); if (!page_has_buffers(page)) @@ -1623,20 +1622,21 @@ int block_invalidatepage(struct page *pa * The get_block cached value has been unconditionally invalidated, * so real IO is not possible anymore. */ - if (offset == 0) - ret = try_to_release_page(page, 0); + if (offset == 0) { + int ret = try_to_release_page(page, 0); + BUG_ON(!ret); + } out: - return ret; + return; } EXPORT_SYMBOL(block_invalidatepage); -int do_invalidatepage(struct page *page, unsigned long offset) +void do_invalidatepage(struct page *page, unsigned long offset) { - int (*invalidatepage)(struct page *, unsigned long); - invalidatepage = page->mapping->a_ops->invalidatepage; - if (invalidatepage == NULL) - invalidatepage = block_invalidatepage; - return (*invalidatepage)(page, offset); + void (*invalidatepage)(struct page *, unsigned long); + invalidatepage = page->mapping->a_ops->invalidatepage ? : + block_invalidatepage; + (*invalidatepage)(page, offset); } /* diff -puN fs/ext3/inode.c~make-address_space_operations-invalidatepage-return-void fs/ext3/inode.c --- devel/fs/ext3/inode.c~make-address_space_operations-invalidatepage-return-void 2006-03-17 23:11:02.000000000 -0800 +++ devel-akpm/fs/ext3/inode.c 2006-03-17 23:11:02.000000000 -0800 @@ -1430,7 +1430,7 @@ ext3_readpages(struct file *file, struct return mpage_readpages(mapping, pages, nr_pages, ext3_get_block); } -static int ext3_invalidatepage(struct page *page, unsigned long offset) +static void ext3_invalidatepage(struct page *page, unsigned long offset) { journal_t *journal = EXT3_JOURNAL(page->mapping->host); @@ -1440,7 +1440,7 @@ static int ext3_invalidatepage(struct pa if (offset == 0) ClearPageChecked(page); - return journal_invalidatepage(journal, page, offset); + journal_invalidatepage(journal, page, offset); } static int ext3_releasepage(struct page *page, gfp_t wait) diff -puN fs/jbd/transaction.c~make-address_space_operations-invalidatepage-return-void fs/jbd/transaction.c --- devel/fs/jbd/transaction.c~make-address_space_operations-invalidatepage-return-void 2006-03-17 23:11:02.000000000 -0800 +++ devel-akpm/fs/jbd/transaction.c 2006-03-17 23:11:02.000000000 -0800 @@ -1873,16 +1873,15 @@ zap_buffer_unlocked: } /** - * int journal_invalidatepage() + * void journal_invalidatepage() * @journal: journal to use for flush... * @page: page to flush * @offset: length of page to invalidate. * * Reap page buffers containing data after offset in page. * - * Return non-zero if the page's buffers were successfully reaped. */ -int journal_invalidatepage(journal_t *journal, +void journal_invalidatepage(journal_t *journal, struct page *page, unsigned long offset) { @@ -1893,7 +1892,7 @@ int journal_invalidatepage(journal_t *jo if (!PageLocked(page)) BUG(); if (!page_has_buffers(page)) - return 1; + return; /* We will potentially be playing with lists other than just the * data lists (especially for journaled data mode), so be @@ -1916,11 +1915,10 @@ int journal_invalidatepage(journal_t *jo } while (bh != head); if (!offset) { - if (!may_free || !try_to_free_buffers(page)) - return 0; + /* Maybe should BUG_ON !may_free - neilb */ + try_to_free_buffers(page); J_ASSERT(!page_has_buffers(page)); } - return 1; } /* diff -puN fs/jfs/jfs_metapage.c~make-address_space_operations-invalidatepage-return-void fs/jfs/jfs_metapage.c --- devel/fs/jfs/jfs_metapage.c~make-address_space_operations-invalidatepage-return-void 2006-03-17 23:11:02.000000000 -0800 +++ devel-akpm/fs/jfs/jfs_metapage.c 2006-03-17 23:11:02.000000000 -0800 @@ -578,14 +578,13 @@ static int metapage_releasepage(struct p return 0; } -static int metapage_invalidatepage(struct page *page, unsigned long offset) +static void metapage_invalidatepage(struct page *page, unsigned long offset) { BUG_ON(offset); - if (PageWriteback(page)) - return 0; + BUG_ON(PageWriteback(page)); - return metapage_releasepage(page, 0); + metapage_releasepage(page, 0); } struct address_space_operations jfs_metapage_aops = { diff -puN fs/reiserfs/inode.c~make-address_space_operations-invalidatepage-return-void fs/reiserfs/inode.c --- devel/fs/reiserfs/inode.c~make-address_space_operations-invalidatepage-return-void 2006-03-17 23:11:02.000000000 -0800 +++ devel-akpm/fs/reiserfs/inode.c 2006-03-17 23:11:02.000000000 -0800 @@ -2793,7 +2793,7 @@ static int invalidatepage_can_drop(struc } /* clm -- taken from fs/buffer.c:block_invalidate_page */ -static int reiserfs_invalidatepage(struct page *page, unsigned long offset) +static void reiserfs_invalidatepage(struct page *page, unsigned long offset) { struct buffer_head *head, *bh, *next; struct inode *inode = page->mapping->host; @@ -2832,10 +2832,12 @@ static int reiserfs_invalidatepage(struc * The get_block cached value has been unconditionally invalidated, * so real IO is not possible anymore. */ - if (!offset && ret) + if (!offset && ret) { ret = try_to_release_page(page, 0); + /* maybe should BUG_ON(!ret); - neilb */ + } out: - return ret; + return; } static int reiserfs_set_page_dirty(struct page *page) diff -puN fs/xfs/linux-2.6/xfs_aops.c~make-address_space_operations-invalidatepage-return-void fs/xfs/linux-2.6/xfs_aops.c --- devel/fs/xfs/linux-2.6/xfs_aops.c~make-address_space_operations-invalidatepage-return-void 2006-03-17 23:11:02.000000000 -0800 +++ devel-akpm/fs/xfs/linux-2.6/xfs_aops.c 2006-03-17 23:11:27.000000000 -0800 @@ -1442,14 +1442,14 @@ xfs_vm_readpages( return mpage_readpages(mapping, pages, nr_pages, xfs_get_block); } -STATIC int +STATIC void xfs_vm_invalidatepage( struct page *page, unsigned long offset) { xfs_page_trace(XFS_INVALIDPAGE_ENTER, page->mapping->host, page, offset); - return block_invalidatepage(page, offset); + block_invalidatepage(page, offset); } struct address_space_operations xfs_address_space_operations = { diff -puN include/linux/buffer_head.h~make-address_space_operations-invalidatepage-return-void include/linux/buffer_head.h --- devel/include/linux/buffer_head.h~make-address_space_operations-invalidatepage-return-void 2006-03-17 23:11:02.000000000 -0800 +++ devel-akpm/include/linux/buffer_head.h 2006-03-17 23:11:02.000000000 -0800 @@ -189,8 +189,8 @@ extern int buffer_heads_over_limit; * address_spaces. */ int try_to_release_page(struct page * page, gfp_t gfp_mask); -int block_invalidatepage(struct page *page, unsigned long offset); -int do_invalidatepage(struct page *page, unsigned long offset); +void block_invalidatepage(struct page *page, unsigned long offset); +void do_invalidatepage(struct page *page, unsigned long offset); int block_write_full_page(struct page *page, get_block_t *get_block, struct writeback_control *wbc); int block_read_full_page(struct page*, get_block_t*); diff -puN include/linux/fs.h~make-address_space_operations-invalidatepage-return-void include/linux/fs.h --- devel/include/linux/fs.h~make-address_space_operations-invalidatepage-return-void 2006-03-17 23:11:02.000000000 -0800 +++ devel-akpm/include/linux/fs.h 2006-03-17 23:11:02.000000000 -0800 @@ -367,7 +367,7 @@ struct address_space_operations { int (*commit_write)(struct file *, struct page *, unsigned, unsigned); /* Unfortunately this kludge is needed for FIBMAP. Don't use it */ sector_t (*bmap)(struct address_space *, sector_t); - int (*invalidatepage) (struct page *, unsigned long); + void (*invalidatepage) (struct page *, unsigned long); int (*releasepage) (struct page *, gfp_t); ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov, loff_t offset, unsigned long nr_segs); diff -puN include/linux/jbd.h~make-address_space_operations-invalidatepage-return-void include/linux/jbd.h --- devel/include/linux/jbd.h~make-address_space_operations-invalidatepage-return-void 2006-03-17 23:11:02.000000000 -0800 +++ devel-akpm/include/linux/jbd.h 2006-03-17 23:11:02.000000000 -0800 @@ -895,7 +895,7 @@ extern int journal_dirty_metadata (hand extern void journal_release_buffer (handle_t *, struct buffer_head *); extern int journal_forget (handle_t *, struct buffer_head *); extern void journal_sync_buffer (struct buffer_head *); -extern int journal_invalidatepage(journal_t *, +extern void journal_invalidatepage(journal_t *, struct page *, unsigned long); extern int journal_try_to_free_buffers(journal_t *, struct page *, gfp_t); extern int journal_stop(handle_t *); _