diff options
author | Lukas Czerner <lczerner@redhat.com> | 2013-05-21 23:58:51 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2013-05-21 23:58:51 -0400 |
commit | bad54831968a8429b08e34faf33178c21ac6bba0 (patch) | |
tree | 5bfb2930e095e9f050029489677bc2646866d9ea /fs/reiserfs/inode.c | |
parent | 5c0bb97ce082732cd279883a231f908c1d39ae21 (diff) |
reiserfs: use ->invalidatepage() length argument
->invalidatepage() aop now accepts range to invalidate so we can make
use of it in reiserfs_invalidatepage()
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Cc: reiserfs-devel@vger.kernel.org
Diffstat (limited to 'fs/reiserfs/inode.c')
-rw-r--r-- | fs/reiserfs/inode.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c index 278c86e3e6c4..76c8faddf137 100644 --- a/fs/reiserfs/inode.c +++ b/fs/reiserfs/inode.c | |||
@@ -2976,11 +2976,13 @@ static void reiserfs_invalidatepage(struct page *page, unsigned int offset, | |||
2976 | struct buffer_head *head, *bh, *next; | 2976 | struct buffer_head *head, *bh, *next; |
2977 | struct inode *inode = page->mapping->host; | 2977 | struct inode *inode = page->mapping->host; |
2978 | unsigned int curr_off = 0; | 2978 | unsigned int curr_off = 0; |
2979 | unsigned int stop = offset + length; | ||
2980 | int partial_page = (offset || length < PAGE_CACHE_SIZE); | ||
2979 | int ret = 1; | 2981 | int ret = 1; |
2980 | 2982 | ||
2981 | BUG_ON(!PageLocked(page)); | 2983 | BUG_ON(!PageLocked(page)); |
2982 | 2984 | ||
2983 | if (offset == 0) | 2985 | if (!partial_page) |
2984 | ClearPageChecked(page); | 2986 | ClearPageChecked(page); |
2985 | 2987 | ||
2986 | if (!page_has_buffers(page)) | 2988 | if (!page_has_buffers(page)) |
@@ -2992,6 +2994,9 @@ static void reiserfs_invalidatepage(struct page *page, unsigned int offset, | |||
2992 | unsigned int next_off = curr_off + bh->b_size; | 2994 | unsigned int next_off = curr_off + bh->b_size; |
2993 | next = bh->b_this_page; | 2995 | next = bh->b_this_page; |
2994 | 2996 | ||
2997 | if (next_off > stop) | ||
2998 | goto out; | ||
2999 | |||
2995 | /* | 3000 | /* |
2996 | * is this block fully invalidated? | 3001 | * is this block fully invalidated? |
2997 | */ | 3002 | */ |
@@ -3010,7 +3015,7 @@ static void reiserfs_invalidatepage(struct page *page, unsigned int offset, | |||
3010 | * The get_block cached value has been unconditionally invalidated, | 3015 | * The get_block cached value has been unconditionally invalidated, |
3011 | * so real IO is not possible anymore. | 3016 | * so real IO is not possible anymore. |
3012 | */ | 3017 | */ |
3013 | if (!offset && ret) { | 3018 | if (!partial_page && ret) { |
3014 | ret = try_to_release_page(page, 0); | 3019 | ret = try_to_release_page(page, 0); |
3015 | /* maybe should BUG_ON(!ret); - neilb */ | 3020 | /* maybe should BUG_ON(!ret); - neilb */ |
3016 | } | 3021 | } |