diff options
Diffstat (limited to 'fs/btrfs/file.c')
| -rw-r--r-- | fs/btrfs/file.c | 13 | 
1 files changed, 2 insertions, 11 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 8e686a427ce2..bc5072b2db53 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c  | |||
| @@ -1334,7 +1334,6 @@ fail: | |||
| 1334 | static noinline int check_can_nocow(struct inode *inode, loff_t pos, | 1334 | static noinline int check_can_nocow(struct inode *inode, loff_t pos, | 
| 1335 | size_t *write_bytes) | 1335 | size_t *write_bytes) | 
| 1336 | { | 1336 | { | 
| 1337 | struct btrfs_trans_handle *trans; | ||
| 1338 | struct btrfs_root *root = BTRFS_I(inode)->root; | 1337 | struct btrfs_root *root = BTRFS_I(inode)->root; | 
| 1339 | struct btrfs_ordered_extent *ordered; | 1338 | struct btrfs_ordered_extent *ordered; | 
| 1340 | u64 lockstart, lockend; | 1339 | u64 lockstart, lockend; | 
| @@ -1356,16 +1355,8 @@ static noinline int check_can_nocow(struct inode *inode, loff_t pos, | |||
| 1356 | btrfs_put_ordered_extent(ordered); | 1355 | btrfs_put_ordered_extent(ordered); | 
| 1357 | } | 1356 | } | 
| 1358 | 1357 | ||
| 1359 | trans = btrfs_join_transaction(root); | ||
| 1360 | if (IS_ERR(trans)) { | ||
| 1361 | unlock_extent(&BTRFS_I(inode)->io_tree, lockstart, lockend); | ||
| 1362 | return PTR_ERR(trans); | ||
| 1363 | } | ||
| 1364 | |||
| 1365 | num_bytes = lockend - lockstart + 1; | 1358 | num_bytes = lockend - lockstart + 1; | 
| 1366 | ret = can_nocow_extent(trans, inode, lockstart, &num_bytes, NULL, NULL, | 1359 | ret = can_nocow_extent(inode, lockstart, &num_bytes, NULL, NULL, NULL); | 
| 1367 | NULL); | ||
| 1368 | btrfs_end_transaction(trans, root); | ||
| 1369 | if (ret <= 0) { | 1360 | if (ret <= 0) { | 
| 1370 | ret = 0; | 1361 | ret = 0; | 
| 1371 | } else { | 1362 | } else { | 
| @@ -1727,7 +1718,7 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb, | |||
| 1727 | */ | 1718 | */ | 
| 1728 | BTRFS_I(inode)->last_trans = root->fs_info->generation + 1; | 1719 | BTRFS_I(inode)->last_trans = root->fs_info->generation + 1; | 
| 1729 | BTRFS_I(inode)->last_sub_trans = root->log_transid; | 1720 | BTRFS_I(inode)->last_sub_trans = root->log_transid; | 
| 1730 | if (num_written > 0 || num_written == -EIOCBQUEUED) { | 1721 | if (num_written > 0) { | 
| 1731 | err = generic_write_sync(file, pos, num_written); | 1722 | err = generic_write_sync(file, pos, num_written); | 
| 1732 | if (err < 0 && num_written > 0) | 1723 | if (err < 0 && num_written > 0) | 
| 1733 | num_written = err; | 1724 | num_written = err; | 
