mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 01:54:09 +08:00
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:
parent
a39da514eb
commit
3daea5fda1
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user