History

[PATCH] Make address_space_operations->invalidatepage return void

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>

NeilBrown committed 20 years ago

Commit 2ff28e21 parent 3978d7111 files · +33 −38Browse files

Unified · Split

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

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t