Commit 2ff28e22 authored by NeilBrown's avatar NeilBrown Committed by Linus Torvalds

[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: default avatarNeil Brown <neilb@suse.de>
Acked-by: default avatarDave Kleikamp <shaggy@austin.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 3978d717
...@@ -28,7 +28,7 @@ static int afs_file_release(struct inode *inode, struct file *file); ...@@ -28,7 +28,7 @@ static int afs_file_release(struct inode *inode, struct file *file);
#endif #endif
static int afs_file_readpage(struct file *file, struct page *page); 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); static int afs_file_releasepage(struct page *page, gfp_t gfp_flags);
struct inode_operations afs_file_inode_operations = { struct inode_operations afs_file_inode_operations = {
...@@ -212,7 +212,7 @@ int afs_cache_get_page_cookie(struct page *page, ...@@ -212,7 +212,7 @@ int afs_cache_get_page_cookie(struct page *page,
/* /*
* invalidate part or all of a page * 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; int ret = 1;
...@@ -238,11 +238,11 @@ static int afs_file_invalidatepage(struct page *page, unsigned long offset) ...@@ -238,11 +238,11 @@ static int afs_file_invalidatepage(struct page *page, unsigned long offset)
if (!PageWriteback(page)) if (!PageWriteback(page))
ret = page->mapping->a_ops->releasepage(page, ret = page->mapping->a_ops->releasepage(page,
0); 0);
/* possibly should BUG_ON(!ret); - neilb */
} }
} }
_leave(" = %d", ret); _leave(" = %d", ret);
return ret;
} /* end afs_file_invalidatepage() */ } /* end afs_file_invalidatepage() */
/*****************************************************************************/ /*****************************************************************************/
......
...@@ -1593,11 +1593,10 @@ EXPORT_SYMBOL(try_to_release_page); ...@@ -1593,11 +1593,10 @@ EXPORT_SYMBOL(try_to_release_page);
* point. Because the caller is about to free (and possibly reuse) those * point. Because the caller is about to free (and possibly reuse) those
* blocks on-disk. * 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; struct buffer_head *head, *bh, *next;
unsigned int curr_off = 0; unsigned int curr_off = 0;
int ret = 1;
BUG_ON(!PageLocked(page)); BUG_ON(!PageLocked(page));
if (!page_has_buffers(page)) if (!page_has_buffers(page))
...@@ -1624,19 +1623,18 @@ int block_invalidatepage(struct page *page, unsigned long offset) ...@@ -1624,19 +1623,18 @@ int block_invalidatepage(struct page *page, unsigned long offset)
* so real IO is not possible anymore. * so real IO is not possible anymore.
*/ */
if (offset == 0) if (offset == 0)
ret = try_to_release_page(page, 0); try_to_release_page(page, 0);
out: out:
return ret; return;
} }
EXPORT_SYMBOL(block_invalidatepage); 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); void (*invalidatepage)(struct page *, unsigned long);
invalidatepage = page->mapping->a_ops->invalidatepage; invalidatepage = page->mapping->a_ops->invalidatepage ? :
if (invalidatepage == NULL) block_invalidatepage;
invalidatepage = block_invalidatepage; (*invalidatepage)(page, offset);
return (*invalidatepage)(page, offset);
} }
/* /*
......
...@@ -1430,7 +1430,7 @@ ext3_readpages(struct file *file, struct address_space *mapping, ...@@ -1430,7 +1430,7 @@ ext3_readpages(struct file *file, struct address_space *mapping,
return mpage_readpages(mapping, pages, nr_pages, ext3_get_block); 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); journal_t *journal = EXT3_JOURNAL(page->mapping->host);
...@@ -1440,7 +1440,7 @@ static int ext3_invalidatepage(struct page *page, unsigned long offset) ...@@ -1440,7 +1440,7 @@ static int ext3_invalidatepage(struct page *page, unsigned long offset)
if (offset == 0) if (offset == 0)
ClearPageChecked(page); ClearPageChecked(page);
return journal_invalidatepage(journal, page, offset); journal_invalidatepage(journal, page, offset);
} }
static int ext3_releasepage(struct page *page, gfp_t wait) static int ext3_releasepage(struct page *page, gfp_t wait)
......
...@@ -1873,16 +1873,15 @@ static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh) ...@@ -1873,16 +1873,15 @@ static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh)
} }
/** /**
* int journal_invalidatepage() * void journal_invalidatepage()
* @journal: journal to use for flush... * @journal: journal to use for flush...
* @page: page to flush * @page: page to flush
* @offset: length of page to invalidate. * @offset: length of page to invalidate.
* *
* Reap page buffers containing data after offset in page. * 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, struct page *page,
unsigned long offset) unsigned long offset)
{ {
...@@ -1893,7 +1892,7 @@ int journal_invalidatepage(journal_t *journal, ...@@ -1893,7 +1892,7 @@ int journal_invalidatepage(journal_t *journal,
if (!PageLocked(page)) if (!PageLocked(page))
BUG(); BUG();
if (!page_has_buffers(page)) if (!page_has_buffers(page))
return 1; return;
/* We will potentially be playing with lists other than just the /* We will potentially be playing with lists other than just the
* data lists (especially for journaled data mode), so be * data lists (especially for journaled data mode), so be
...@@ -1916,11 +1915,9 @@ int journal_invalidatepage(journal_t *journal, ...@@ -1916,11 +1915,9 @@ int journal_invalidatepage(journal_t *journal,
} while (bh != head); } while (bh != head);
if (!offset) { if (!offset) {
if (!may_free || !try_to_free_buffers(page)) if (may_free && try_to_free_buffers(page))
return 0;
J_ASSERT(!page_has_buffers(page)); J_ASSERT(!page_has_buffers(page));
} }
return 1;
} }
/* /*
......
...@@ -578,14 +578,13 @@ static int metapage_releasepage(struct page *page, gfp_t gfp_mask) ...@@ -578,14 +578,13 @@ static int metapage_releasepage(struct page *page, gfp_t gfp_mask)
return 0; 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); BUG_ON(offset);
if (PageWriteback(page)) BUG_ON(PageWriteback(page));
return 0;
return metapage_releasepage(page, 0); metapage_releasepage(page, 0);
} }
struct address_space_operations jfs_metapage_aops = { struct address_space_operations jfs_metapage_aops = {
......
...@@ -318,10 +318,9 @@ static int nfs_commit_write(struct file *file, struct page *page, unsigned offse ...@@ -318,10 +318,9 @@ static int nfs_commit_write(struct file *file, struct page *page, unsigned offse
return status; return status;
} }
static int nfs_invalidate_page(struct page *page, unsigned long offset) static void nfs_invalidate_page(struct page *page, unsigned long offset)
{ {
/* FIXME: we really should cancel any unstarted writes on this page */ /* FIXME: we really should cancel any unstarted writes on this page */
return 1;
} }
static int nfs_release_page(struct page *page, gfp_t gfp) 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) ...@@ -2793,7 +2793,7 @@ static int invalidatepage_can_drop(struct inode *inode, struct buffer_head *bh)
} }
/* clm -- taken from fs/buffer.c:block_invalidate_page */ /* 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 buffer_head *head, *bh, *next;
struct inode *inode = page->mapping->host; struct inode *inode = page->mapping->host;
...@@ -2832,10 +2832,12 @@ static int reiserfs_invalidatepage(struct page *page, unsigned long offset) ...@@ -2832,10 +2832,12 @@ static int reiserfs_invalidatepage(struct page *page, unsigned long offset)
* The get_block cached value has been unconditionally invalidated, * The get_block cached value has been unconditionally invalidated,
* so real IO is not possible anymore. * so real IO is not possible anymore.
*/ */
if (!offset && ret) if (!offset && ret) {
ret = try_to_release_page(page, 0); ret = try_to_release_page(page, 0);
/* maybe should BUG_ON(!ret); - neilb */
}
out: out:
return ret; return;
} }
static int reiserfs_set_page_dirty(struct page *page) static int reiserfs_set_page_dirty(struct page *page)
......
...@@ -1442,14 +1442,14 @@ xfs_vm_readpages( ...@@ -1442,14 +1442,14 @@ xfs_vm_readpages(
return mpage_readpages(mapping, pages, nr_pages, xfs_get_block); return mpage_readpages(mapping, pages, nr_pages, xfs_get_block);
} }
STATIC int STATIC void
xfs_vm_invalidatepage( xfs_vm_invalidatepage(
struct page *page, struct page *page,
unsigned long offset) unsigned long offset)
{ {
xfs_page_trace(XFS_INVALIDPAGE_ENTER, xfs_page_trace(XFS_INVALIDPAGE_ENTER,
page->mapping->host, page, offset); page->mapping->host, page, offset);
return block_invalidatepage(page, offset); block_invalidatepage(page, offset);
} }
struct address_space_operations xfs_address_space_operations = { struct address_space_operations xfs_address_space_operations = {
......
...@@ -189,8 +189,8 @@ extern int buffer_heads_over_limit; ...@@ -189,8 +189,8 @@ extern int buffer_heads_over_limit;
* address_spaces. * address_spaces.
*/ */
int try_to_release_page(struct page * page, gfp_t gfp_mask); int try_to_release_page(struct page * page, gfp_t gfp_mask);
int block_invalidatepage(struct page *page, unsigned long offset); void block_invalidatepage(struct page *page, unsigned long offset);
int do_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, int block_write_full_page(struct page *page, get_block_t *get_block,
struct writeback_control *wbc); struct writeback_control *wbc);
int block_read_full_page(struct page*, get_block_t*); int block_read_full_page(struct page*, get_block_t*);
......
...@@ -369,7 +369,7 @@ struct address_space_operations { ...@@ -369,7 +369,7 @@ struct address_space_operations {
int (*commit_write)(struct file *, struct page *, unsigned, unsigned); int (*commit_write)(struct file *, struct page *, unsigned, unsigned);
/* Unfortunately this kludge is needed for FIBMAP. Don't use it */ /* Unfortunately this kludge is needed for FIBMAP. Don't use it */
sector_t (*bmap)(struct address_space *, sector_t); 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); int (*releasepage) (struct page *, gfp_t);
ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov, ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
loff_t offset, unsigned long nr_segs); loff_t offset, unsigned long nr_segs);
......
...@@ -895,7 +895,7 @@ extern int journal_dirty_metadata (handle_t *, struct buffer_head *); ...@@ -895,7 +895,7 @@ extern int journal_dirty_metadata (handle_t *, struct buffer_head *);
extern void journal_release_buffer (handle_t *, struct buffer_head *); extern void journal_release_buffer (handle_t *, struct buffer_head *);
extern int journal_forget (handle_t *, struct buffer_head *); extern int journal_forget (handle_t *, struct buffer_head *);
extern void journal_sync_buffer (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); struct page *, unsigned long);
extern int journal_try_to_free_buffers(journal_t *, struct page *, gfp_t); extern int journal_try_to_free_buffers(journal_t *, struct page *, gfp_t);
extern int journal_stop(handle_t *); extern int journal_stop(handle_t *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment