Skip to content

Commit

Permalink
Btrfs: Properly clear dirty and delalloc extent bits while preparing …
Browse files Browse the repository at this point in the history
…the file for write

Yan Zheng noticed that we don't clear the extent state tree dirty and delalloc
bits when we clear the dirty bits on the page during file write.

This leads to csum errors later on.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
  • Loading branch information
Chris Mason committed Sep 25, 2008
1 parent 952fcca commit 0762704
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions fs/btrfs/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -762,6 +762,13 @@ static int prepare_pages(struct btrfs_root *root, struct file *file,
set_page_extent_mapped(pages[i]);
WARN_ON(!PageLocked(pages[i]));
}
if (start_pos < inode->i_size) {
u64 last_pos;
last_pos = (index + num_pages) << PAGE_CACHE_SHIFT;
clear_extent_bits(&BTRFS_I(inode)->io_tree, start_pos,
last_pos - 1, EXTENT_DIRTY | EXTENT_DELALLOC,
GFP_NOFS);
}
return 0;
}

Expand Down

0 comments on commit 0762704

Please sign in to comment.