Skip to content

Commit

Permalink
[PATCH] ocfs2: Fix oops when racing files truncates with writes into …
Browse files Browse the repository at this point in the history
…an mmap region

This patch fixes an oops that is reproduced when one races writes to a mmap-ed
region with another process truncating the file.

Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
  • Loading branch information
Sunil Mushran authored and Mark Fasheh committed Jul 31, 2008
1 parent 539d826 commit 961cecb
Showing 1 changed file with 17 additions and 12 deletions.
29 changes: 17 additions & 12 deletions fs/ocfs2/aops.c
Original file line number Diff line number Diff line change
Expand Up @@ -1073,12 +1073,15 @@ static void ocfs2_write_failure(struct inode *inode,
for(i = 0; i < wc->w_num_pages; i++) {
tmppage = wc->w_pages[i];

if (ocfs2_should_order_data(inode))
walk_page_buffers(wc->w_handle, page_buffers(tmppage),
from, to, NULL,
ocfs2_journal_dirty_data);

block_commit_write(tmppage, from, to);
if (page_has_buffers(tmppage)) {
if (ocfs2_should_order_data(inode))
walk_page_buffers(wc->w_handle,
page_buffers(tmppage),
from, to, NULL,
ocfs2_journal_dirty_data);

block_commit_write(tmppage, from, to);
}
}
}

Expand Down Expand Up @@ -1901,12 +1904,14 @@ int ocfs2_write_end_nolock(struct address_space *mapping,
to = PAGE_CACHE_SIZE;
}

if (ocfs2_should_order_data(inode))
walk_page_buffers(wc->w_handle, page_buffers(tmppage),
from, to, NULL,
ocfs2_journal_dirty_data);

block_commit_write(tmppage, from, to);
if (page_has_buffers(tmppage)) {
if (ocfs2_should_order_data(inode))
walk_page_buffers(wc->w_handle,
page_buffers(tmppage),
from, to, NULL,
ocfs2_journal_dirty_data);
block_commit_write(tmppage, from, to);
}
}

out_write_size:
Expand Down

0 comments on commit 961cecb

Please sign in to comment.