diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2006-05-02 12:09:42 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-05-02 12:09:42 -0400 |
commit | d2d7b8a2a756fb520792ca3db3abdeed9214ae5b (patch) | |
tree | 467e9e1ef0f4ba29f8cdba4731792533272c6af5 /fs/gfs2/ops_address.c | |
parent | 56409abbf8a9e3754d752d0189f9b9a609ec78de (diff) |
[GFS2] Fix bug in writepage()
As pointed out by Wendy Cheng, the logic in GFS2's writepage() function
wasn't quite right with respect to invalidating pages when a file has been
truncated. This patch fixes that.
CC: Wendy Cheng <wcheng@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/ops_address.c')
-rw-r--r-- | fs/gfs2/ops_address.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/gfs2/ops_address.c b/fs/gfs2/ops_address.c index 005c2522a879..afcc12a00a3c 100644 --- a/fs/gfs2/ops_address.c +++ b/fs/gfs2/ops_address.c | |||
@@ -126,7 +126,7 @@ static int gfs2_writepage(struct page *page, struct writeback_control *wbc) | |||
126 | 126 | ||
127 | /* Is the page fully outside i_size? (truncate in progress) */ | 127 | /* Is the page fully outside i_size? (truncate in progress) */ |
128 | offset = i_size & (PAGE_CACHE_SIZE-1); | 128 | offset = i_size & (PAGE_CACHE_SIZE-1); |
129 | if (page->index >= end_index+1 || !offset) { | 129 | if (page->index > end_index || (page->index == end_index && !offset)) { |
130 | page->mapping->a_ops->invalidatepage(page, 0); | 130 | page->mapping->a_ops->invalidatepage(page, 0); |
131 | unlock_page(page); | 131 | unlock_page(page); |
132 | return 0; /* don't care */ | 132 | return 0; /* don't care */ |