diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/ctree.h | 4 | ||||
-rw-r--r-- | fs/btrfs/file.c | 16 | ||||
-rw-r--r-- | fs/btrfs/inode.c | 12 | ||||
-rw-r--r-- | fs/btrfs/ioctl.c | 5 | ||||
-rw-r--r-- | fs/btrfs/tree-log.c | 7 |
5 files changed, 14 insertions, 30 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 81c772b5dc8e..71d6ff13d76e 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -3323,10 +3323,10 @@ extern const struct file_operations btrfs_file_operations; | |||
3323 | int __btrfs_drop_extents(struct btrfs_trans_handle *trans, | 3323 | int __btrfs_drop_extents(struct btrfs_trans_handle *trans, |
3324 | struct btrfs_root *root, struct inode *inode, | 3324 | struct btrfs_root *root, struct inode *inode, |
3325 | struct btrfs_path *path, u64 start, u64 end, | 3325 | struct btrfs_path *path, u64 start, u64 end, |
3326 | u64 *hint_byte, int drop_cache); | 3326 | int drop_cache); |
3327 | int btrfs_drop_extents(struct btrfs_trans_handle *trans, | 3327 | int btrfs_drop_extents(struct btrfs_trans_handle *trans, |
3328 | struct btrfs_root *root, struct inode *inode, u64 start, | 3328 | struct btrfs_root *root, struct inode *inode, u64 start, |
3329 | u64 end, u64 *hint_byte, int drop_cache); | 3329 | u64 end, int drop_cache); |
3330 | int btrfs_mark_extent_written(struct btrfs_trans_handle *trans, | 3330 | int btrfs_mark_extent_written(struct btrfs_trans_handle *trans, |
3331 | struct inode *inode, u64 start, u64 end); | 3331 | struct inode *inode, u64 start, u64 end); |
3332 | int btrfs_release_file(struct inode *inode, struct file *file); | 3332 | int btrfs_release_file(struct inode *inode, struct file *file); |
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 399f9d71a926..58598c249951 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -584,7 +584,7 @@ int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end, | |||
584 | int __btrfs_drop_extents(struct btrfs_trans_handle *trans, | 584 | int __btrfs_drop_extents(struct btrfs_trans_handle *trans, |
585 | struct btrfs_root *root, struct inode *inode, | 585 | struct btrfs_root *root, struct inode *inode, |
586 | struct btrfs_path *path, u64 start, u64 end, | 586 | struct btrfs_path *path, u64 start, u64 end, |
587 | u64 *hint_byte, int drop_cache) | 587 | int drop_cache) |
588 | { | 588 | { |
589 | struct extent_buffer *leaf; | 589 | struct extent_buffer *leaf; |
590 | struct btrfs_file_extent_item *fi; | 590 | struct btrfs_file_extent_item *fi; |
@@ -716,7 +716,6 @@ next_slot: | |||
716 | new_key.objectid, | 716 | new_key.objectid, |
717 | start - extent_offset, 0); | 717 | start - extent_offset, 0); |
718 | BUG_ON(ret); /* -ENOMEM */ | 718 | BUG_ON(ret); /* -ENOMEM */ |
719 | *hint_byte = disk_bytenr; | ||
720 | } | 719 | } |
721 | key.offset = start; | 720 | key.offset = start; |
722 | } | 721 | } |
@@ -736,10 +735,8 @@ next_slot: | |||
736 | btrfs_set_file_extent_num_bytes(leaf, fi, | 735 | btrfs_set_file_extent_num_bytes(leaf, fi, |
737 | extent_end - end); | 736 | extent_end - end); |
738 | btrfs_mark_buffer_dirty(leaf); | 737 | btrfs_mark_buffer_dirty(leaf); |
739 | if (update_refs && disk_bytenr > 0) { | 738 | if (update_refs && disk_bytenr > 0) |
740 | inode_sub_bytes(inode, end - key.offset); | 739 | inode_sub_bytes(inode, end - key.offset); |
741 | *hint_byte = disk_bytenr; | ||
742 | } | ||
743 | break; | 740 | break; |
744 | } | 741 | } |
745 | 742 | ||
@@ -755,10 +752,8 @@ next_slot: | |||
755 | btrfs_set_file_extent_num_bytes(leaf, fi, | 752 | btrfs_set_file_extent_num_bytes(leaf, fi, |
756 | start - key.offset); | 753 | start - key.offset); |
757 | btrfs_mark_buffer_dirty(leaf); | 754 | btrfs_mark_buffer_dirty(leaf); |
758 | if (update_refs && disk_bytenr > 0) { | 755 | if (update_refs && disk_bytenr > 0) |
759 | inode_sub_bytes(inode, extent_end - start); | 756 | inode_sub_bytes(inode, extent_end - start); |
760 | *hint_byte = disk_bytenr; | ||
761 | } | ||
762 | if (end == extent_end) | 757 | if (end == extent_end) |
763 | break; | 758 | break; |
764 | 759 | ||
@@ -794,7 +789,6 @@ next_slot: | |||
794 | BUG_ON(ret); /* -ENOMEM */ | 789 | BUG_ON(ret); /* -ENOMEM */ |
795 | inode_sub_bytes(inode, | 790 | inode_sub_bytes(inode, |
796 | extent_end - key.offset); | 791 | extent_end - key.offset); |
797 | *hint_byte = disk_bytenr; | ||
798 | } | 792 | } |
799 | 793 | ||
800 | if (end == extent_end) | 794 | if (end == extent_end) |
@@ -834,7 +828,7 @@ next_slot: | |||
834 | 828 | ||
835 | int btrfs_drop_extents(struct btrfs_trans_handle *trans, | 829 | int btrfs_drop_extents(struct btrfs_trans_handle *trans, |
836 | struct btrfs_root *root, struct inode *inode, u64 start, | 830 | struct btrfs_root *root, struct inode *inode, u64 start, |
837 | u64 end, u64 *hint_byte, int drop_cache) | 831 | u64 end, int drop_cache) |
838 | { | 832 | { |
839 | struct btrfs_path *path; | 833 | struct btrfs_path *path; |
840 | int ret; | 834 | int ret; |
@@ -843,7 +837,7 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans, | |||
843 | if (!path) | 837 | if (!path) |
844 | return -ENOMEM; | 838 | return -ENOMEM; |
845 | ret = __btrfs_drop_extents(trans, root, inode, path, start, end, | 839 | ret = __btrfs_drop_extents(trans, root, inode, path, start, end, |
846 | hint_byte, drop_cache); | 840 | drop_cache); |
847 | btrfs_free_path(path); | 841 | btrfs_free_path(path); |
848 | return ret; | 842 | return ret; |
849 | } | 843 | } |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 24745b8f2745..f0a4792492ed 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -230,7 +230,6 @@ static noinline int cow_file_range_inline(struct btrfs_trans_handle *trans, | |||
230 | u64 inline_len = actual_end - start; | 230 | u64 inline_len = actual_end - start; |
231 | u64 aligned_end = (end + root->sectorsize - 1) & | 231 | u64 aligned_end = (end + root->sectorsize - 1) & |
232 | ~((u64)root->sectorsize - 1); | 232 | ~((u64)root->sectorsize - 1); |
233 | u64 hint_byte; | ||
234 | u64 data_len = inline_len; | 233 | u64 data_len = inline_len; |
235 | int ret; | 234 | int ret; |
236 | 235 | ||
@@ -247,8 +246,7 @@ static noinline int cow_file_range_inline(struct btrfs_trans_handle *trans, | |||
247 | return 1; | 246 | return 1; |
248 | } | 247 | } |
249 | 248 | ||
250 | ret = btrfs_drop_extents(trans, root, inode, start, aligned_end, | 249 | ret = btrfs_drop_extents(trans, root, inode, start, aligned_end, 1); |
251 | &hint_byte, 1); | ||
252 | if (ret) | 250 | if (ret) |
253 | return ret; | 251 | return ret; |
254 | 252 | ||
@@ -1786,7 +1784,6 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans, | |||
1786 | struct btrfs_path *path; | 1784 | struct btrfs_path *path; |
1787 | struct extent_buffer *leaf; | 1785 | struct extent_buffer *leaf; |
1788 | struct btrfs_key ins; | 1786 | struct btrfs_key ins; |
1789 | u64 hint; | ||
1790 | int ret; | 1787 | int ret; |
1791 | 1788 | ||
1792 | path = btrfs_alloc_path(); | 1789 | path = btrfs_alloc_path(); |
@@ -1805,8 +1802,7 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans, | |||
1805 | * with the others. | 1802 | * with the others. |
1806 | */ | 1803 | */ |
1807 | ret = btrfs_drop_extents(trans, root, inode, file_pos, | 1804 | ret = btrfs_drop_extents(trans, root, inode, file_pos, |
1808 | file_pos + num_bytes, | 1805 | file_pos + num_bytes, 0); |
1809 | &hint, 0); | ||
1810 | if (ret) | 1806 | if (ret) |
1811 | goto out; | 1807 | goto out; |
1812 | 1808 | ||
@@ -3629,7 +3625,6 @@ int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size) | |||
3629 | last_byte = (last_byte + mask) & ~mask; | 3625 | last_byte = (last_byte + mask) & ~mask; |
3630 | if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { | 3626 | if (!test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) { |
3631 | struct extent_map *hole_em; | 3627 | struct extent_map *hole_em; |
3632 | u64 hint_byte = 0; | ||
3633 | hole_size = last_byte - cur_offset; | 3628 | hole_size = last_byte - cur_offset; |
3634 | 3629 | ||
3635 | trans = btrfs_start_transaction(root, 3); | 3630 | trans = btrfs_start_transaction(root, 3); |
@@ -3640,8 +3635,7 @@ int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size) | |||
3640 | 3635 | ||
3641 | err = btrfs_drop_extents(trans, root, inode, | 3636 | err = btrfs_drop_extents(trans, root, inode, |
3642 | cur_offset, | 3637 | cur_offset, |
3643 | cur_offset + hole_size, | 3638 | cur_offset + hole_size, 1); |
3644 | &hint_byte, 1); | ||
3645 | if (err) { | 3639 | if (err) { |
3646 | btrfs_abort_transaction(trans, root, err); | 3640 | btrfs_abort_transaction(trans, root, err); |
3647 | btrfs_end_transaction(trans, root); | 3641 | btrfs_end_transaction(trans, root); |
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 95223222d5ad..5543fd562b55 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
@@ -2353,7 +2353,6 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, | |||
2353 | int ret; | 2353 | int ret; |
2354 | u64 len = olen; | 2354 | u64 len = olen; |
2355 | u64 bs = root->fs_info->sb->s_blocksize; | 2355 | u64 bs = root->fs_info->sb->s_blocksize; |
2356 | u64 hint_byte; | ||
2357 | 2356 | ||
2358 | /* | 2357 | /* |
2359 | * TODO: | 2358 | * TODO: |
@@ -2579,7 +2578,7 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, | |||
2579 | ret = btrfs_drop_extents(trans, root, inode, | 2578 | ret = btrfs_drop_extents(trans, root, inode, |
2580 | new_key.offset, | 2579 | new_key.offset, |
2581 | new_key.offset + datal, | 2580 | new_key.offset + datal, |
2582 | &hint_byte, 1); | 2581 | 1); |
2583 | if (ret) { | 2582 | if (ret) { |
2584 | btrfs_abort_transaction(trans, root, | 2583 | btrfs_abort_transaction(trans, root, |
2585 | ret); | 2584 | ret); |
@@ -2653,7 +2652,7 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, | |||
2653 | ret = btrfs_drop_extents(trans, root, inode, | 2652 | ret = btrfs_drop_extents(trans, root, inode, |
2654 | new_key.offset, | 2653 | new_key.offset, |
2655 | new_key.offset + datal, | 2654 | new_key.offset + datal, |
2656 | &hint_byte, 1); | 2655 | 1); |
2657 | if (ret) { | 2656 | if (ret) { |
2658 | btrfs_abort_transaction(trans, root, | 2657 | btrfs_abort_transaction(trans, root, |
2659 | ret); | 2658 | ret); |
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 5e2ffb95cc64..0c39f58973db 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c | |||
@@ -485,7 +485,6 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans, | |||
485 | int found_type; | 485 | int found_type; |
486 | u64 mask = root->sectorsize - 1; | 486 | u64 mask = root->sectorsize - 1; |
487 | u64 extent_end; | 487 | u64 extent_end; |
488 | u64 alloc_hint; | ||
489 | u64 start = key->offset; | 488 | u64 start = key->offset; |
490 | u64 saved_nbytes; | 489 | u64 saved_nbytes; |
491 | struct btrfs_file_extent_item *item; | 490 | struct btrfs_file_extent_item *item; |
@@ -551,8 +550,7 @@ static noinline int replay_one_extent(struct btrfs_trans_handle *trans, | |||
551 | 550 | ||
552 | saved_nbytes = inode_get_bytes(inode); | 551 | saved_nbytes = inode_get_bytes(inode); |
553 | /* drop any overlapping extents */ | 552 | /* drop any overlapping extents */ |
554 | ret = btrfs_drop_extents(trans, root, inode, start, extent_end, | 553 | ret = btrfs_drop_extents(trans, root, inode, start, extent_end, 1); |
555 | &alloc_hint, 1); | ||
556 | BUG_ON(ret); | 554 | BUG_ON(ret); |
557 | 555 | ||
558 | if (found_type == BTRFS_FILE_EXTENT_REG || | 556 | if (found_type == BTRFS_FILE_EXTENT_REG || |
@@ -2843,9 +2841,8 @@ static int log_one_extent(struct btrfs_trans_handle *trans, | |||
2843 | int ret; | 2841 | int ret; |
2844 | 2842 | ||
2845 | if (BTRFS_I(inode)->logged_trans == trans->transid) { | 2843 | if (BTRFS_I(inode)->logged_trans == trans->transid) { |
2846 | u64 tmp; | ||
2847 | ret = __btrfs_drop_extents(trans, log, inode, dst_path, start, | 2844 | ret = __btrfs_drop_extents(trans, log, inode, dst_path, start, |
2848 | start + len, &tmp, 0); | 2845 | start + len, 0); |
2849 | if (ret) | 2846 | if (ret) |
2850 | return ret; | 2847 | return ret; |
2851 | } | 2848 | } |