|
@@ -1247,7 +1247,6 @@ static noinline int run_delalloc_nocow(struct inode *inode,
|
|
|
{
|
|
|
struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
|
|
|
struct btrfs_root *root = BTRFS_I(inode)->root;
|
|
|
- struct btrfs_trans_handle *trans;
|
|
|
struct extent_buffer *leaf;
|
|
|
struct btrfs_path *path;
|
|
|
struct btrfs_file_extent_item *fi;
|
|
@@ -1283,30 +1282,10 @@ static noinline int run_delalloc_nocow(struct inode *inode,
|
|
|
|
|
|
nolock = btrfs_is_free_space_inode(inode);
|
|
|
|
|
|
- if (nolock)
|
|
|
- trans = btrfs_join_transaction_nolock(root);
|
|
|
- else
|
|
|
- trans = btrfs_join_transaction(root);
|
|
|
-
|
|
|
- if (IS_ERR(trans)) {
|
|
|
- extent_clear_unlock_delalloc(inode, start, end, end,
|
|
|
- locked_page,
|
|
|
- EXTENT_LOCKED | EXTENT_DELALLOC |
|
|
|
- EXTENT_DO_ACCOUNTING |
|
|
|
- EXTENT_DEFRAG, PAGE_UNLOCK |
|
|
|
- PAGE_CLEAR_DIRTY |
|
|
|
- PAGE_SET_WRITEBACK |
|
|
|
- PAGE_END_WRITEBACK);
|
|
|
- btrfs_free_path(path);
|
|
|
- return PTR_ERR(trans);
|
|
|
- }
|
|
|
-
|
|
|
- trans->block_rsv = &fs_info->delalloc_block_rsv;
|
|
|
-
|
|
|
cow_start = (u64)-1;
|
|
|
cur_offset = start;
|
|
|
while (1) {
|
|
|
- ret = btrfs_lookup_file_extent(trans, root, path, ino,
|
|
|
+ ret = btrfs_lookup_file_extent(NULL, root, path, ino,
|
|
|
cur_offset, 0);
|
|
|
if (ret < 0)
|
|
|
goto error;
|
|
@@ -1379,7 +1358,7 @@ next_slot:
|
|
|
goto out_check;
|
|
|
if (btrfs_extent_readonly(fs_info, disk_bytenr))
|
|
|
goto out_check;
|
|
|
- if (btrfs_cross_ref_exist(trans, root, ino,
|
|
|
+ if (btrfs_cross_ref_exist(root, ino,
|
|
|
found_key.offset -
|
|
|
extent_offset, disk_bytenr))
|
|
|
goto out_check;
|
|
@@ -1531,10 +1510,6 @@ out_check:
|
|
|
}
|
|
|
|
|
|
error:
|
|
|
- err = btrfs_end_transaction(trans);
|
|
|
- if (!ret)
|
|
|
- ret = err;
|
|
|
-
|
|
|
if (ret && cur_offset < end)
|
|
|
extent_clear_unlock_delalloc(inode, cur_offset, end, end,
|
|
|
locked_page, EXTENT_LOCKED |
|
|
@@ -7290,7 +7265,6 @@ noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len,
|
|
|
u64 *ram_bytes)
|
|
|
{
|
|
|
struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
|
|
|
- struct btrfs_trans_handle *trans;
|
|
|
struct btrfs_path *path;
|
|
|
int ret;
|
|
|
struct extent_buffer *leaf;
|
|
@@ -7393,15 +7367,9 @@ noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len,
|
|
|
* look for other files referencing this extent, if we
|
|
|
* find any we must cow
|
|
|
*/
|
|
|
- trans = btrfs_join_transaction(root);
|
|
|
- if (IS_ERR(trans)) {
|
|
|
- ret = 0;
|
|
|
- goto out;
|
|
|
- }
|
|
|
|
|
|
- ret = btrfs_cross_ref_exist(trans, root, btrfs_ino(BTRFS_I(inode)),
|
|
|
+ ret = btrfs_cross_ref_exist(root, btrfs_ino(BTRFS_I(inode)),
|
|
|
key.offset - backref_offset, disk_bytenr);
|
|
|
- btrfs_end_transaction(trans);
|
|
|
if (ret) {
|
|
|
ret = 0;
|
|
|
goto out;
|