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
2828 #endif
2929
3030 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);
3232 static int afs_file_releasepage(struct page *page, gfp_t gfp_flags);
3333
3434 struct inode_operations afs_file_inode_operations = {
@@ -212,7 +212,7 @@ int afs_cache_get_page_cookie(struct page *page, · 177 unmodified lines
212212 /*
213213 * invalidate part or all of a page
214214 */
215−static int afs_file_invalidatepage(struct page *page, unsigned long offset)
215+static void afs_file_invalidatepage(struct page *page, unsigned long offset)
216216 {
217217 int ret = 1;
218218
@@ -238,11 +238,11 @@ static int afs_file_invalidatepage(struct page *page, unsigned long offset) · 19 unmodified lines
238238 if (!PageWriteback(page))
239239 ret = page->mapping->a_ops->releasepage(page,
240240 0);
241+ /* possibly should BUG_ON(!ret); - neilb */
241242 }
242243 }
243244
244245 _leave(" = %d", ret);
245− return ret;
246246 } /* end afs_file_invalidatepage() */
247247
248248 /*****************************************************************************/
fs/buffer.c+8−10
@@ -1593,11 +1593,10 @@ EXPORT_SYMBOL(try_to_release_page); · 1592 unmodified lines
15931593 * point. Because the caller is about to free (and possibly reuse) those
15941594 * blocks on-disk.
15951595 */
1596−int block_invalidatepage(struct page *page, unsigned long offset)
1596+void block_invalidatepage(struct page *page, unsigned long offset)
15971597 {
15981598 struct buffer_head *head, *bh, *next;
15991599 unsigned int curr_off = 0;
1600− int ret = 1;
16011600
16021601 BUG_ON(!PageLocked(page));
16031602 if (!page_has_buffers(page))
@@ -1624,19 +1623,18 @@ int block_invalidatepage(struct page *page, unsigned long offset) · 20 unmodified lines
16241623 * so real IO is not possible anymore.
16251624 */
16261625 if (offset == 0)
1627− ret = try_to_release_page(page, 0);
1626+ try_to_release_page(page, 0);
16281627 out:
1629− return ret;
1628+ return;
16301629 }
16311630 EXPORT_SYMBOL(block_invalidatepage);
16321631
1633−int do_invalidatepage(struct page *page, unsigned long offset)
1632+void do_invalidatepage(struct page *page, unsigned long offset)
16341633 {
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);
16401638 }
16411639
16421640 /*
fs/ext3/inode.c+2−2
@@ -1430,7 +1430,7 @@ ext3_readpages(struct file *file, struct address_space *mapping, · 1429 unmodified lines
14301430 return mpage_readpages(mapping, pages, nr_pages, ext3_get_block);
14311431 }
14321432
1433−static int ext3_invalidatepage(struct page *page, unsigned long offset)
1433+static void ext3_invalidatepage(struct page *page, unsigned long offset)
14341434 {
14351435 journal_t *journal = EXT3_JOURNAL(page->mapping->host);
14361436
@@ -1440,7 +1440,7 @@ static int ext3_invalidatepage(struct page *page, unsigned long offset) · 3 unmodified lines
14401440 if (offset == 0)
14411441 ClearPageChecked(page);
14421442
1443− return journal_invalidatepage(journal, page, offset);
1443+ journal_invalidatepage(journal, page, offset);
14441444 }
14451445
14461446 static 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
18731873 }
18741874
18751875 /**
1876− * int journal_invalidatepage()
1876+ * void journal_invalidatepage()
18771877 * @journal: journal to use for flush...
18781878 * @page: page to flush
18791879 * @offset: length of page to invalidate.
18801880 *
18811881 * Reap page buffers containing data after offset in page.
18821882 *
1883− * Return non-zero if the page's buffers were successfully reaped.
18841883 */
1885−int journal_invalidatepage(journal_t *journal,
1884+void journal_invalidatepage(journal_t *journal,
18861885 struct page *page,
18871886 unsigned long offset)
18881887 {
@@ -1893,7 +1892,7 @@ int journal_invalidatepage(journal_t *journal, · 4 unmodified lines
18931892 if (!PageLocked(page))
18941893 BUG();
18951894 if (!page_has_buffers(page))
1896− return 1;
1895+ return;
18971896
18981897 /* We will potentially be playing with lists other than just the
18991898 * data lists (especially for journaled data mode), so be
@@ -1916,11 +1915,9 @@ int journal_invalidatepage(journal_t *journal, · 16 unmodified lines
19161915 } while (bh != head);
19171916
19181917 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));
19221920 }
1923− return 1;
19241921 }
19251922
19261923 /*
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
578578 return 0;
579579 }
580580
581−static int metapage_invalidatepage(struct page *page, unsigned long offset)
581+static void metapage_invalidatepage(struct page *page, unsigned long offset)
582582 {
583583 BUG_ON(offset);
584584
585− if (PageWriteback(page))
586− return 0;
585+ BUG_ON(PageWriteback(page));
587586
588− return metapage_releasepage(page, 0);
587+ metapage_releasepage(page, 0);
589588 }
590589
591590 struct 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
318318 return status;
319319 }
320320
321−static int nfs_invalidate_page(struct page *page, unsigned long offset)
321+static void nfs_invalidate_page(struct page *page, unsigned long offset)
322322 {
323323 /* FIXME: we really should cancel any unstarted writes on this page */
324− return 1;
325324 }
326325
327326 static 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
27932793 }
27942794
27952795 /* 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)
27972797 {
27982798 struct buffer_head *head, *bh, *next;
27992799 struct inode *inode = page->mapping->host;
@@ -2832,10 +2832,12 @@ static int reiserfs_invalidatepage(struct page *page, unsigned long offset) · 32 unmodified lines
28322832 * The get_block cached value has been unconditionally invalidated,
28332833 * so real IO is not possible anymore.
28342834 */
2835− if (!offset && ret)
2835+ if (!offset && ret) {
28362836 ret = try_to_release_page(page, 0);
2837+ /* maybe should BUG_ON(!ret); - neilb */
2838+ }
28372839 out:
2838− return ret;
2840+ return;
28392841 }
28402842
28412843 static 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
14421442 return mpage_readpages(mapping, pages, nr_pages, xfs_get_block);
14431443 }
14441444
1445−STATIC int
1445+STATIC void
14461446 xfs_vm_invalidatepage(
14471447 struct page *page,
14481448 unsigned long offset)
14491449 {
14501450 xfs_page_trace(XFS_INVALIDPAGE_ENTER,
14511451 page->mapping->host, page, offset);
1452− return block_invalidatepage(page, offset);
1452+ block_invalidatepage(page, offset);
14531453 }
14541454
14551455 struct 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
189189 * address_spaces.
190190 */
191191 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);
194194 int block_write_full_page(struct page *page, get_block_t *get_block,
195195 struct writeback_control *wbc);
196196 int 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
369369 int (*commit_write)(struct file *, struct page *, unsigned, unsigned);
370370 /* Unfortunately this kludge is needed for FIBMAP. Don't use it */
371371 sector_t (*bmap)(struct address_space *, sector_t);
372− int (*invalidatepage) (struct page *, unsigned long);
372+ void (*invalidatepage) (struct page *, unsigned long);
373373 int (*releasepage) (struct page *, gfp_t);
374374 ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
375375 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
895895 extern void journal_release_buffer (handle_t *, struct buffer_head *);
896896 extern int journal_forget (handle_t *, struct buffer_head *);
897897 extern void journal_sync_buffer (struct buffer_head *);
898−extern int journal_invalidatepage(journal_t *,
898+extern void journal_invalidatepage(journal_t *,
899899 struct page *, unsigned long);
900900 extern int journal_try_to_free_buffers(journal_t *, struct page *, gfp_t);
901901 extern 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