|
@@ -1922,22 +1922,20 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
|
|
|
|
|
|
if (test_bit(BTRFS_ORDERED_NOCOW, &ordered_extent->flags)) {
|
|
|
BUG_ON(!list_empty(&ordered_extent->list)); /* Logic error */
|
|
|
- ret = btrfs_ordered_update_i_size(inode, 0, ordered_extent);
|
|
|
- if (!ret) {
|
|
|
- if (nolock)
|
|
|
- trans = btrfs_join_transaction_nolock(root);
|
|
|
- else
|
|
|
- trans = btrfs_join_transaction(root);
|
|
|
- if (IS_ERR(trans)) {
|
|
|
- ret = PTR_ERR(trans);
|
|
|
- trans = NULL;
|
|
|
- goto out;
|
|
|
- }
|
|
|
- trans->block_rsv = &root->fs_info->delalloc_block_rsv;
|
|
|
- ret = btrfs_update_inode_fallback(trans, root, inode);
|
|
|
- if (ret) /* -ENOMEM or corruption */
|
|
|
- btrfs_abort_transaction(trans, root, ret);
|
|
|
+ btrfs_ordered_update_i_size(inode, 0, ordered_extent);
|
|
|
+ if (nolock)
|
|
|
+ trans = btrfs_join_transaction_nolock(root);
|
|
|
+ else
|
|
|
+ trans = btrfs_join_transaction(root);
|
|
|
+ if (IS_ERR(trans)) {
|
|
|
+ ret = PTR_ERR(trans);
|
|
|
+ trans = NULL;
|
|
|
+ goto out;
|
|
|
}
|
|
|
+ trans->block_rsv = &root->fs_info->delalloc_block_rsv;
|
|
|
+ ret = btrfs_update_inode_fallback(trans, root, inode);
|
|
|
+ if (ret) /* -ENOMEM or corruption */
|
|
|
+ btrfs_abort_transaction(trans, root, ret);
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
@@ -1986,15 +1984,11 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
|
|
|
add_pending_csums(trans, inode, ordered_extent->file_offset,
|
|
|
&ordered_extent->list);
|
|
|
|
|
|
- ret = btrfs_ordered_update_i_size(inode, 0, ordered_extent);
|
|
|
- if (!ret || !test_bit(BTRFS_ORDERED_PREALLOC, &ordered_extent->flags)) {
|
|
|
- ret = btrfs_update_inode_fallback(trans, root, inode);
|
|
|
- if (ret) { /* -ENOMEM or corruption */
|
|
|
- btrfs_abort_transaction(trans, root, ret);
|
|
|
- goto out_unlock;
|
|
|
- }
|
|
|
- } else {
|
|
|
- btrfs_set_inode_last_trans(trans, inode);
|
|
|
+ btrfs_ordered_update_i_size(inode, 0, ordered_extent);
|
|
|
+ ret = btrfs_update_inode_fallback(trans, root, inode);
|
|
|
+ if (ret) { /* -ENOMEM or corruption */
|
|
|
+ btrfs_abort_transaction(trans, root, ret);
|
|
|
+ goto out_unlock;
|
|
|
}
|
|
|
ret = 0;
|
|
|
out_unlock:
|