ocfs2: Don't double set write parameters
The target page offsets were being incorrectly set a second time in ocfs2_prepare_page_for_write(), which was causing problems on a 16k page size kernel. Additionally, ocfs2_write_failure() was incorrectly using those parameters instead of the parameters for the individual page being cleaned up. Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
This commit is contained in:
parent
db56246c69
commit
5c26a7b70f
1 changed files with 3 additions and 13 deletions
|
@ -930,18 +930,11 @@ static void ocfs2_write_failure(struct inode *inode,
|
||||||
loff_t user_pos, unsigned user_len)
|
loff_t user_pos, unsigned user_len)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
unsigned from, to;
|
unsigned from = user_pos & (PAGE_CACHE_SIZE - 1),
|
||||||
|
to = user_pos + user_len;
|
||||||
struct page *tmppage;
|
struct page *tmppage;
|
||||||
|
|
||||||
ocfs2_zero_new_buffers(wc->w_target_page, user_pos, user_len);
|
ocfs2_zero_new_buffers(wc->w_target_page, from, to);
|
||||||
|
|
||||||
if (wc->w_large_pages) {
|
|
||||||
from = wc->w_target_from;
|
|
||||||
to = wc->w_target_to;
|
|
||||||
} else {
|
|
||||||
from = 0;
|
|
||||||
to = PAGE_CACHE_SIZE;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i = 0; i < wc->w_num_pages; i++) {
|
for(i = 0; i < wc->w_num_pages; i++) {
|
||||||
tmppage = wc->w_pages[i];
|
tmppage = wc->w_pages[i];
|
||||||
|
@ -991,9 +984,6 @@ static int ocfs2_prepare_page_for_write(struct inode *inode, u64 *p_blkno,
|
||||||
map_from = cluster_start;
|
map_from = cluster_start;
|
||||||
map_to = cluster_end;
|
map_to = cluster_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
wc->w_target_from = map_from;
|
|
||||||
wc->w_target_to = map_to;
|
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* If we haven't allocated the new page yet, we
|
* If we haven't allocated the new page yet, we
|
||||||
|
|
Loading…
Reference in a new issue