diff options
Diffstat (limited to 'fs/ext4/inode.c')
-rw-r--r-- | fs/ext4/inode.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index d6382b89ecbd..19d6ca27c879 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -132,7 +132,8 @@ static inline int ext4_begin_ordered_truncate(struct inode *inode, | |||
132 | new_size); | 132 | new_size); |
133 | } | 133 | } |
134 | 134 | ||
135 | static void ext4_invalidatepage(struct page *page, unsigned long offset); | 135 | static void ext4_invalidatepage(struct page *page, unsigned int offset, |
136 | unsigned int length); | ||
136 | static int __ext4_journalled_writepage(struct page *page, unsigned int len); | 137 | static int __ext4_journalled_writepage(struct page *page, unsigned int len); |
137 | static int ext4_bh_delay_or_unwritten(handle_t *handle, struct buffer_head *bh); | 138 | static int ext4_bh_delay_or_unwritten(handle_t *handle, struct buffer_head *bh); |
138 | static int ext4_discard_partial_page_buffers_no_lock(handle_t *handle, | 139 | static int ext4_discard_partial_page_buffers_no_lock(handle_t *handle, |
@@ -1606,7 +1607,7 @@ static void ext4_da_block_invalidatepages(struct mpage_da_data *mpd) | |||
1606 | break; | 1607 | break; |
1607 | BUG_ON(!PageLocked(page)); | 1608 | BUG_ON(!PageLocked(page)); |
1608 | BUG_ON(PageWriteback(page)); | 1609 | BUG_ON(PageWriteback(page)); |
1609 | block_invalidatepage(page, 0); | 1610 | block_invalidatepage(page, 0, PAGE_CACHE_SIZE); |
1610 | ClearPageUptodate(page); | 1611 | ClearPageUptodate(page); |
1611 | unlock_page(page); | 1612 | unlock_page(page); |
1612 | } | 1613 | } |
@@ -2829,7 +2830,8 @@ static int ext4_da_write_end(struct file *file, | |||
2829 | return ret ? ret : copied; | 2830 | return ret ? ret : copied; |
2830 | } | 2831 | } |
2831 | 2832 | ||
2832 | static void ext4_da_invalidatepage(struct page *page, unsigned long offset) | 2833 | static void ext4_da_invalidatepage(struct page *page, unsigned int offset, |
2834 | unsigned int length) | ||
2833 | { | 2835 | { |
2834 | /* | 2836 | /* |
2835 | * Drop reserved blocks | 2837 | * Drop reserved blocks |
@@ -2841,7 +2843,7 @@ static void ext4_da_invalidatepage(struct page *page, unsigned long offset) | |||
2841 | ext4_da_page_release_reservation(page, offset); | 2843 | ext4_da_page_release_reservation(page, offset); |
2842 | 2844 | ||
2843 | out: | 2845 | out: |
2844 | ext4_invalidatepage(page, offset); | 2846 | ext4_invalidatepage(page, offset, length); |
2845 | 2847 | ||
2846 | return; | 2848 | return; |
2847 | } | 2849 | } |
@@ -2989,14 +2991,15 @@ ext4_readpages(struct file *file, struct address_space *mapping, | |||
2989 | return mpage_readpages(mapping, pages, nr_pages, ext4_get_block); | 2991 | return mpage_readpages(mapping, pages, nr_pages, ext4_get_block); |
2990 | } | 2992 | } |
2991 | 2993 | ||
2992 | static void ext4_invalidatepage(struct page *page, unsigned long offset) | 2994 | static void ext4_invalidatepage(struct page *page, unsigned int offset, |
2995 | unsigned int length) | ||
2993 | { | 2996 | { |
2994 | trace_ext4_invalidatepage(page, offset); | 2997 | trace_ext4_invalidatepage(page, offset); |
2995 | 2998 | ||
2996 | /* No journalling happens on data buffers when this function is used */ | 2999 | /* No journalling happens on data buffers when this function is used */ |
2997 | WARN_ON(page_has_buffers(page) && buffer_jbd(page_buffers(page))); | 3000 | WARN_ON(page_has_buffers(page) && buffer_jbd(page_buffers(page))); |
2998 | 3001 | ||
2999 | block_invalidatepage(page, offset); | 3002 | block_invalidatepage(page, offset, PAGE_CACHE_SIZE - offset); |
3000 | } | 3003 | } |
3001 | 3004 | ||
3002 | static int __ext4_journalled_invalidatepage(struct page *page, | 3005 | static int __ext4_journalled_invalidatepage(struct page *page, |
@@ -3017,7 +3020,8 @@ static int __ext4_journalled_invalidatepage(struct page *page, | |||
3017 | 3020 | ||
3018 | /* Wrapper for aops... */ | 3021 | /* Wrapper for aops... */ |
3019 | static void ext4_journalled_invalidatepage(struct page *page, | 3022 | static void ext4_journalled_invalidatepage(struct page *page, |
3020 | unsigned long offset) | 3023 | unsigned int offset, |
3024 | unsigned int length) | ||
3021 | { | 3025 | { |
3022 | WARN_ON(__ext4_journalled_invalidatepage(page, offset) < 0); | 3026 | WARN_ON(__ext4_journalled_invalidatepage(page, offset) < 0); |
3023 | } | 3027 | } |