mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 15:10:38 +00:00
Btrfs: Properly clear dirty and delalloc extent bits while preparing 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>
This commit is contained in:
parent
952fccac50
commit
0762704b19
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user