Loading fs/btrfs/extent_map.c +7 −2 Original line number Diff line number Diff line Loading @@ -1070,6 +1070,7 @@ u64 find_lock_delalloc_range(struct extent_map_tree *tree, search_again: node = tree_search(&tree->state, cur_start); if (!node || IS_ERR(node)) { *end = (u64)-1; goto out; } Loading @@ -1079,6 +1080,8 @@ u64 find_lock_delalloc_range(struct extent_map_tree *tree, goto out; } if (!(state->state & EXTENT_DELALLOC)) { if (!found) *end = state->end; goto out; } if (!found) { Loading Loading @@ -1841,8 +1844,10 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc, nr_delalloc = find_lock_delalloc_range(tree, &delalloc_start, &delalloc_end, 128 * 1024 * 1024); if (nr_delalloc <= 0) break; if (nr_delalloc == 0) { delalloc_start = delalloc_end + 1; continue; } tree->ops->fill_delalloc(inode, delalloc_start, delalloc_end); clear_extent_bit(tree, delalloc_start, Loading fs/btrfs/inode.c +1 −0 Original line number Diff line number Diff line Loading @@ -798,6 +798,7 @@ static int btrfs_cow_one_page(struct inode *inode, struct page *page, u64 page_start = (u64)page->index << PAGE_CACHE_SHIFT; u64 page_end = page_start + PAGE_CACHE_SIZE - 1; WARN_ON(!PageLocked(page)); set_page_extent_mapped(page); lock_extent(em_tree, page_start, page_end, GFP_NOFS); Loading Loading
fs/btrfs/extent_map.c +7 −2 Original line number Diff line number Diff line Loading @@ -1070,6 +1070,7 @@ u64 find_lock_delalloc_range(struct extent_map_tree *tree, search_again: node = tree_search(&tree->state, cur_start); if (!node || IS_ERR(node)) { *end = (u64)-1; goto out; } Loading @@ -1079,6 +1080,8 @@ u64 find_lock_delalloc_range(struct extent_map_tree *tree, goto out; } if (!(state->state & EXTENT_DELALLOC)) { if (!found) *end = state->end; goto out; } if (!found) { Loading Loading @@ -1841,8 +1844,10 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc, nr_delalloc = find_lock_delalloc_range(tree, &delalloc_start, &delalloc_end, 128 * 1024 * 1024); if (nr_delalloc <= 0) break; if (nr_delalloc == 0) { delalloc_start = delalloc_end + 1; continue; } tree->ops->fill_delalloc(inode, delalloc_start, delalloc_end); clear_extent_bit(tree, delalloc_start, Loading
fs/btrfs/inode.c +1 −0 Original line number Diff line number Diff line Loading @@ -798,6 +798,7 @@ static int btrfs_cow_one_page(struct inode *inode, struct page *page, u64 page_start = (u64)page->index << PAGE_CACHE_SHIFT; u64 page_end = page_start + PAGE_CACHE_SIZE - 1; WARN_ON(!PageLocked(page)); set_page_extent_mapped(page); lock_extent(em_tree, page_start, page_end, GFP_NOFS); Loading