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. [akpm@osdl.org: JBD BUG fix] [akpm@osdl.org: rework for git-nfs] [akpm@osdl.org: don't go BUG in block_invalidate_page()] Signed-off-by: Neil Brown <neilb@suse.de> Acked-by: Dave Kleikamp <shaggy@austin.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Unified · Split
| @@ -28,7 +28,7 @@ static int afs_file_release(struct inode *inode, struct file *file); · 27 unmodified lines | ||
| 28 | 28 | #endif |
| 29 | 29 | |
| 30 | 30 | static int afs_file_readpage(struct file *file, struct page *page); |
| 31 | −static int afs_file_invalidatepage(struct page *page, unsigned long offset); | |
| 31 | +static void afs_file_invalidatepage(struct page *page, unsigned long offset); | |
| 32 | 32 | static int afs_file_releasepage(struct page *page, gfp_t gfp_flags); |
| 33 | 33 | |
| 34 | 34 | struct inode_operations afs_file_inode_operations = { |
| @@ -212,7 +212,7 @@ int afs_cache_get_page_cookie(struct page *page, · 177 unmodified lines | ||
| 212 | 212 | /* |
| 213 | 213 | * invalidate part or all of a page |
| 214 | 214 | */ |
| 215 | −static int afs_file_invalidatepage(struct page *page, unsigned long offset) | |
| 215 | +static void afs_file_invalidatepage(struct page *page, unsigned long offset) | |
| 216 | 216 | { |
| 217 | 217 | int ret = 1; |
| 218 | 218 | |
| @@ -238,11 +238,11 @@ static int afs_file_invalidatepage(struct page *page, unsigned long offset) · 19 unmodified lines | ||
| 238 | 238 | if (!PageWriteback(page)) |
| 239 | 239 | ret = page->mapping->a_ops->releasepage(page, |
| 240 | 240 | 0); |
| 241 | + /* possibly should BUG_ON(!ret); - neilb */ | |
| 241 | 242 | } |
| 242 | 243 | } |
| 243 | 244 | |
| 244 | 245 | _leave(" = %d", ret); |
| 245 | − return ret; | |
| 246 | 246 | } /* end afs_file_invalidatepage() */ |
| 247 | 247 | |
| 248 | 248 | /*****************************************************************************/ |
| @@ -1593,11 +1593,10 @@ EXPORT_SYMBOL(try_to_release_page); · 1592 unmodified lines | ||
| 1593 | 1593 | * point. Because the caller is about to free (and possibly reuse) those |
| 1594 | 1594 | * blocks on-disk. |
| 1595 | 1595 | */ |
| 1596 | −int block_invalidatepage(struct page *page, unsigned long offset) | |
| 1596 | +void block_invalidatepage(struct page *page, unsigned long offset) | |
| 1597 | 1597 | { |
| 1598 | 1598 | struct buffer_head *head, *bh, *next; |
| 1599 | 1599 | unsigned int curr_off = 0; |
| 1600 | − int ret = 1; | |
| 1601 | 1600 | |
| 1602 | 1601 | BUG_ON(!PageLocked(page)); |
| 1603 | 1602 | if (!page_has_buffers(page)) |
| @@ -1624,19 +1623,18 @@ int block_invalidatepage(struct page *page, unsigned long offset) · 20 unmodified lines | ||
| 1624 | 1623 | * so real IO is not possible anymore. |
| 1625 | 1624 | */ |
| 1626 | 1625 | if (offset == 0) |
| 1627 | − ret = try_to_release_page(page, 0); | |
| 1626 | + try_to_release_page(page, 0); | |
| 1628 | 1627 | out: |
| 1629 | − return ret; | |
| 1628 | + return; | |
| 1630 | 1629 | } |
| 1631 | 1630 | EXPORT_SYMBOL(block_invalidatepage); |
| 1632 | 1631 | |
| 1633 | −int do_invalidatepage(struct page *page, unsigned long offset) | |
| 1632 | +void do_invalidatepage(struct page *page, unsigned long offset) | |
| 1634 | 1633 | { |
| 1635 | − int (*invalidatepage)(struct page *, unsigned long); | |
| 1636 | − invalidatepage = page->mapping->a_ops->invalidatepage; | |
| 1637 | − if (invalidatepage == NULL) | |
| 1638 | − invalidatepage = block_invalidatepage; | |
| 1639 | − return (*invalidatepage)(page, offset); | |
| 1634 | + void (*invalidatepage)(struct page *, unsigned long); | |
| 1635 | + invalidatepage = page->mapping->a_ops->invalidatepage ? : | |
| 1636 | + block_invalidatepage; | |
| 1637 | + (*invalidatepage)(page, offset); | |
| 1640 | 1638 | } |
| 1641 | 1639 | |
| 1642 | 1640 | /* |
| @@ -1430,7 +1430,7 @@ ext3_readpages(struct file *file, struct address_space *mapping, · 1429 unmodified lines | ||
| 1430 | 1430 | return mpage_readpages(mapping, pages, nr_pages, ext3_get_block); |
| 1431 | 1431 | } |
| 1432 | 1432 | |
| 1433 | −static int ext3_invalidatepage(struct page *page, unsigned long offset) | |
| 1433 | +static void ext3_invalidatepage(struct page *page, unsigned long offset) | |
| 1434 | 1434 | { |
| 1435 | 1435 | journal_t *journal = EXT3_JOURNAL(page->mapping->host); |
| 1436 | 1436 | |
| @@ -1440,7 +1440,7 @@ static int ext3_invalidatepage(struct page *page, unsigned long offset) · 3 unmodified lines | ||
| 1440 | 1440 | if (offset == 0) |
| 1441 | 1441 | ClearPageChecked(page); |
| 1442 | 1442 | |
| 1443 | − return journal_invalidatepage(journal, page, offset); | |
| 1443 | + journal_invalidatepage(journal, page, offset); | |
| 1444 | 1444 | } |
| 1445 | 1445 | |
| 1446 | 1446 | static int ext3_releasepage(struct page *page, gfp_t wait) |
| @@ -1873,16 +1873,15 @@ zap_buffer_unlocked: · 1872 unmodified lines | ||
| 1873 | 1873 | } |
| 1874 | 1874 | |
| 1875 | 1875 | /** |
| 1876 | − * int journal_invalidatepage() | |
| 1876 | + * void journal_invalidatepage() | |
| 1877 | 1877 | * @journal: journal to use for flush... |
| 1878 | 1878 | * @page: page to flush |
| 1879 | 1879 | * @offset: length of page to invalidate. |
| 1880 | 1880 | * |
| 1881 | 1881 | * Reap page buffers containing data after offset in page. |
| 1882 | 1882 | * |
| 1883 | − * Return non-zero if the page's buffers were successfully reaped. | |
| 1884 | 1883 | */ |
| 1885 | −int journal_invalidatepage(journal_t *journal, | |
| 1884 | +void journal_invalidatepage(journal_t *journal, | |
| 1886 | 1885 | struct page *page, |
| 1887 | 1886 | unsigned long offset) |
| 1888 | 1887 | { |
| @@ -1893,7 +1892,7 @@ int journal_invalidatepage(journal_t *journal, · 4 unmodified lines | ||
| 1893 | 1892 | if (!PageLocked(page)) |
| 1894 | 1893 | BUG(); |
| 1895 | 1894 | if (!page_has_buffers(page)) |
| 1896 | − return 1; | |
| 1895 | + return; | |
| 1897 | 1896 | |
| 1898 | 1897 | /* We will potentially be playing with lists other than just the |
| 1899 | 1898 | * data lists (especially for journaled data mode), so be |
| @@ -1916,11 +1915,9 @@ int journal_invalidatepage(journal_t *journal, · 16 unmodified lines | ||
| 1916 | 1915 | } while (bh != head); |
| 1917 | 1916 | |
| 1918 | 1917 | if (!offset) { |
| 1919 | − if (!may_free || !try_to_free_buffers(page)) | |
| 1920 | − return 0; | |
| 1921 | − J_ASSERT(!page_has_buffers(page)); | |
| 1918 | + if (may_free && try_to_free_buffers(page)) | |
| 1919 | + J_ASSERT(!page_has_buffers(page)); | |
| 1922 | 1920 | } |
| 1923 | − return 1; | |
| 1924 | 1921 | } |
| 1925 | 1922 | |
| 1926 | 1923 | /* |
| @@ -578,14 +578,13 @@ static int metapage_releasepage(struct page *page, gfp_t gfp_mask) · 577 unmodified lines | ||
| 578 | 578 | return 0; |
| 579 | 579 | } |
| 580 | 580 | |
| 581 | −static int metapage_invalidatepage(struct page *page, unsigned long offset) | |
| 581 | +static void metapage_invalidatepage(struct page *page, unsigned long offset) | |
| 582 | 582 | { |
| 583 | 583 | BUG_ON(offset); |
| 584 | 584 | |
| 585 | − if (PageWriteback(page)) | |
| 586 | − return 0; | |
| 585 | + BUG_ON(PageWriteback(page)); | |
| 587 | 586 | |
| 588 | − return metapage_releasepage(page, 0); | |
| 587 | + metapage_releasepage(page, 0); | |
| 589 | 588 | } |
| 590 | 589 | |
| 591 | 590 | struct address_space_operations jfs_metapage_aops = { |
| @@ -318,10 +318,9 @@ static int nfs_commit_write(struct file *file, struct page *page, unsigned offse · 317 unmodified lines | ||
| 318 | 318 | return status; |
| 319 | 319 | } |
| 320 | 320 | |
| 321 | −static int nfs_invalidate_page(struct page *page, unsigned long offset) | |
| 321 | +static void nfs_invalidate_page(struct page *page, unsigned long offset) | |
| 322 | 322 | { |
| 323 | 323 | /* FIXME: we really should cancel any unstarted writes on this page */ |
| 324 | − return 1; | |
| 325 | 324 | } |
| 326 | 325 | |
| 327 | 326 | static int nfs_release_page(struct page *page, gfp_t gfp) |
| @@ -2793,7 +2793,7 @@ static int invalidatepage_can_drop(struct inode *inode, struct buffer_head *bh) · 2792 unmodified lines | ||
| 2793 | 2793 | } |
| 2794 | 2794 | |
| 2795 | 2795 | /* clm -- taken from fs/buffer.c:block_invalidate_page */ |
| 2796 | −static int reiserfs_invalidatepage(struct page *page, unsigned long offset) | |
| 2796 | +static void reiserfs_invalidatepage(struct page *page, unsigned long offset) | |
| 2797 | 2797 | { |
| 2798 | 2798 | struct buffer_head *head, *bh, *next; |
| 2799 | 2799 | struct inode *inode = page->mapping->host; |
| @@ -2832,10 +2832,12 @@ static int reiserfs_invalidatepage(struct page *page, unsigned long offset) · 32 unmodified lines | ||
| 2832 | 2832 | * The get_block cached value has been unconditionally invalidated, |
| 2833 | 2833 | * so real IO is not possible anymore. |
| 2834 | 2834 | */ |
| 2835 | − if (!offset && ret) | |
| 2835 | + if (!offset && ret) { | |
| 2836 | 2836 | ret = try_to_release_page(page, 0); |
| 2837 | + /* maybe should BUG_ON(!ret); - neilb */ | |
| 2838 | + } | |
| 2837 | 2839 | out: |
| 2838 | − return ret; | |
| 2840 | + return; | |
| 2839 | 2841 | } |
| 2840 | 2842 | |
| 2841 | 2843 | static int reiserfs_set_page_dirty(struct page *page) |
| @@ -1442,14 +1442,14 @@ xfs_vm_readpages( · 1441 unmodified lines | ||
| 1442 | 1442 | return mpage_readpages(mapping, pages, nr_pages, xfs_get_block); |
| 1443 | 1443 | } |
| 1444 | 1444 | |
| 1445 | −STATIC int | |
| 1445 | +STATIC void | |
| 1446 | 1446 | xfs_vm_invalidatepage( |
| 1447 | 1447 | struct page *page, |
| 1448 | 1448 | unsigned long offset) |
| 1449 | 1449 | { |
| 1450 | 1450 | xfs_page_trace(XFS_INVALIDPAGE_ENTER, |
| 1451 | 1451 | page->mapping->host, page, offset); |
| 1452 | − return block_invalidatepage(page, offset); | |
| 1452 | + block_invalidatepage(page, offset); | |
| 1453 | 1453 | } |
| 1454 | 1454 | |
| 1455 | 1455 | struct address_space_operations xfs_address_space_operations = { |
| @@ -189,8 +189,8 @@ extern int buffer_heads_over_limit; · 188 unmodified lines | ||
| 189 | 189 | * address_spaces. |
| 190 | 190 | */ |
| 191 | 191 | int try_to_release_page(struct page * page, gfp_t gfp_mask); |
| 192 | −int block_invalidatepage(struct page *page, unsigned long offset); | |
| 193 | −int do_invalidatepage(struct page *page, unsigned long offset); | |
| 192 | +void block_invalidatepage(struct page *page, unsigned long offset); | |
| 193 | +void do_invalidatepage(struct page *page, unsigned long offset); | |
| 194 | 194 | int block_write_full_page(struct page *page, get_block_t *get_block, |
| 195 | 195 | struct writeback_control *wbc); |
| 196 | 196 | int block_read_full_page(struct page*, get_block_t*); |
| @@ -369,7 +369,7 @@ struct address_space_operations { · 368 unmodified lines | ||
| 369 | 369 | int (*commit_write)(struct file *, struct page *, unsigned, unsigned); |
| 370 | 370 | /* Unfortunately this kludge is needed for FIBMAP. Don't use it */ |
| 371 | 371 | sector_t (*bmap)(struct address_space *, sector_t); |
| 372 | − int (*invalidatepage) (struct page *, unsigned long); | |
| 372 | + void (*invalidatepage) (struct page *, unsigned long); | |
| 373 | 373 | int (*releasepage) (struct page *, gfp_t); |
| 374 | 374 | ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov, |
| 375 | 375 | loff_t offset, unsigned long nr_segs); |
| @@ -895,7 +895,7 @@ extern int journal_dirty_metadata (handle_t *, struct buffer_head *); · 894 unmodified lines | ||
| 895 | 895 | extern void journal_release_buffer (handle_t *, struct buffer_head *); |
| 896 | 896 | extern int journal_forget (handle_t *, struct buffer_head *); |
| 897 | 897 | extern void journal_sync_buffer (struct buffer_head *); |
| 898 | −extern int journal_invalidatepage(journal_t *, | |
| 898 | +extern void journal_invalidatepage(journal_t *, | |
| 899 | 899 | struct page *, unsigned long); |
| 900 | 900 | extern int journal_try_to_free_buffers(journal_t *, struct page *, gfp_t); |
| 901 | 901 | extern int journal_stop(handle_t *); |