diff options
author | Mark Fasheh <mark.fasheh@oracle.com> | 2007-09-18 17:49:29 -0700 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2007-09-20 15:06:10 -0700 |
commit | 5c26a7b70f89c36e8d9acc95cb896c3cd205fc8d (patch) | |
tree | 83471ee744573481ffb2ffee09e0fe7fcf9643bd | |
parent | db56246c6980e376b02d2da568d119da71f82fb9 (diff) | |
download | linux-stable-5c26a7b70f89c36e8d9acc95cb896c3cd205fc8d.tar.gz linux-stable-5c26a7b70f89c36e8d9acc95cb896c3cd205fc8d.tar.bz2 linux-stable-5c26a7b70f89c36e8d9acc95cb896c3cd205fc8d.zip |
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>
-rw-r--r-- | fs/ocfs2/aops.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c index fa43810e5970..f37f25c931f5 100644 --- a/fs/ocfs2/aops.c +++ b/fs/ocfs2/aops.c @@ -930,18 +930,11 @@ static void ocfs2_write_failure(struct inode *inode, loff_t user_pos, unsigned user_len) { int i; - unsigned from, to; + unsigned from = user_pos & (PAGE_CACHE_SIZE - 1), + to = user_pos + user_len; struct page *tmppage; - ocfs2_zero_new_buffers(wc->w_target_page, user_pos, user_len); - - if (wc->w_large_pages) { - from = wc->w_target_from; - to = wc->w_target_to; - } else { - from = 0; - to = PAGE_CACHE_SIZE; - } + ocfs2_zero_new_buffers(wc->w_target_page, from, to); for(i = 0; i < wc->w_num_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_to = cluster_end; } - - wc->w_target_from = map_from; - wc->w_target_to = map_to; } else { /* * If we haven't allocated the new page yet, we |