if (!(start >= locked_page_end || end <= locked_page_start))
locked_page = async_chunk->locked_page;
}
- lock_extent(io_tree, start, end, NULL);
if (async_extent->compress_type == BTRFS_COMPRESS_NONE) {
submit_uncompressed_range(inode, async_extent, locked_page);
goto done;
}
+ lock_extent(io_tree, start, end, NULL);
ret = btrfs_reserve_extent(root, async_extent->ram_size,
async_extent->compressed_size,
async_extent->compressed_size,
u64 done_offset = end;
int ret;
+ lock_extent(&inode->io_tree, start, end, NULL);
+
while (start <= end) {
ret = cow_file_range(inode, locked_page, start, end, &done_offset,
true, false);
run_delalloc_compressed(inode, locked_page, start, end, wbc))
return 1;
- /*
- * We're unlocked by the different fill functions below.
- */
- lock_extent(&inode->io_tree, start, end, NULL);
-
- if (zoned)
+ if (zoned) {
ret = run_delalloc_cow(inode, locked_page, start, end, wbc,
true);
- else
+ } else {
+ lock_extent(&inode->io_tree, start, end, NULL);
ret = cow_file_range(inode, locked_page, start, end, NULL,
false, false);
+ }
out:
if (ret < 0)