btrfs: merge the two calls to btrfs_add_ordered_extent in run_delalloc_nocow

Refactor run_delalloc_nocow a little bit so that there is only a single
call to btrfs_add_ordered_extent instead of two.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Christoph Hellwig 2023-05-31 09:53:56 +02:00 committed by David Sterba
parent a39da514eb
commit 3daea5fda1

View File

@ -2140,6 +2140,7 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode,
u64 ram_bytes; u64 ram_bytes;
u64 nocow_end; u64 nocow_end;
int extent_type; int extent_type;
bool is_prealloc;
nocow = false; nocow = false;
@ -2278,8 +2279,8 @@ out_check:
} }
nocow_end = cur_offset + nocow_args.num_bytes - 1; nocow_end = cur_offset + nocow_args.num_bytes - 1;
is_prealloc = extent_type == BTRFS_FILE_EXTENT_PREALLOC;
if (extent_type == BTRFS_FILE_EXTENT_PREALLOC) { if (is_prealloc) {
u64 orig_start = found_key.offset - nocow_args.extent_offset; u64 orig_start = found_key.offset - nocow_args.extent_offset;
struct extent_map *em; struct extent_map *em;
@ -2295,29 +2296,21 @@ out_check:
goto error; goto error;
} }
free_extent_map(em); free_extent_map(em);
ret = btrfs_add_ordered_extent(inode, }
cur_offset, nocow_args.num_bytes,
nocow_args.num_bytes, ret = btrfs_add_ordered_extent(inode, cur_offset,
nocow_args.disk_bytenr, nocow_args.num_bytes, nocow_args.num_bytes,
nocow_args.num_bytes, 0, nocow_args.disk_bytenr, nocow_args.num_bytes, 0,
1 << BTRFS_ORDERED_PREALLOC, is_prealloc
BTRFS_COMPRESS_NONE); ? (1 << BTRFS_ORDERED_PREALLOC)
if (ret) { : (1 << BTRFS_ORDERED_NOCOW),
BTRFS_COMPRESS_NONE);
if (ret) {
if (is_prealloc) {
btrfs_drop_extent_map_range(inode, cur_offset, btrfs_drop_extent_map_range(inode, cur_offset,
nocow_end, false); nocow_end, false);
goto error;
} }
} else { goto error;
ret = btrfs_add_ordered_extent(inode, cur_offset,
nocow_args.num_bytes,
nocow_args.num_bytes,
nocow_args.disk_bytenr,
nocow_args.num_bytes,
0,
1 << BTRFS_ORDERED_NOCOW,
BTRFS_COMPRESS_NONE);
if (ret)
goto error;
} }
if (nocow) { if (nocow) {