diff options
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 34 |
1 files changed, 8 insertions, 26 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 456667b04fe6..c41637a1ed38 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -732,10 +732,7 @@ retry: | |||
732 | 732 | ||
733 | while (1) { | 733 | while (1) { |
734 | write_lock(&em_tree->lock); | 734 | write_lock(&em_tree->lock); |
735 | ret = add_extent_mapping(em_tree, em); | 735 | ret = add_extent_mapping(em_tree, em, 1); |
736 | if (!ret) | ||
737 | list_move(&em->list, | ||
738 | &em_tree->modified_extents); | ||
739 | write_unlock(&em_tree->lock); | 736 | write_unlock(&em_tree->lock); |
740 | if (ret != -EEXIST) { | 737 | if (ret != -EEXIST) { |
741 | free_extent_map(em); | 738 | free_extent_map(em); |
@@ -941,10 +938,7 @@ static noinline int __cow_file_range(struct btrfs_trans_handle *trans, | |||
941 | 938 | ||
942 | while (1) { | 939 | while (1) { |
943 | write_lock(&em_tree->lock); | 940 | write_lock(&em_tree->lock); |
944 | ret = add_extent_mapping(em_tree, em); | 941 | ret = add_extent_mapping(em_tree, em, 1); |
945 | if (!ret) | ||
946 | list_move(&em->list, | ||
947 | &em_tree->modified_extents); | ||
948 | write_unlock(&em_tree->lock); | 942 | write_unlock(&em_tree->lock); |
949 | if (ret != -EEXIST) { | 943 | if (ret != -EEXIST) { |
950 | free_extent_map(em); | 944 | free_extent_map(em); |
@@ -1387,10 +1381,7 @@ out_check: | |||
1387 | em->generation = -1; | 1381 | em->generation = -1; |
1388 | while (1) { | 1382 | while (1) { |
1389 | write_lock(&em_tree->lock); | 1383 | write_lock(&em_tree->lock); |
1390 | ret = add_extent_mapping(em_tree, em); | 1384 | ret = add_extent_mapping(em_tree, em, 1); |
1391 | if (!ret) | ||
1392 | list_move(&em->list, | ||
1393 | &em_tree->modified_extents); | ||
1394 | write_unlock(&em_tree->lock); | 1385 | write_unlock(&em_tree->lock); |
1395 | if (ret != -EEXIST) { | 1386 | if (ret != -EEXIST) { |
1396 | free_extent_map(em); | 1387 | free_extent_map(em); |
@@ -4467,10 +4458,7 @@ int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size) | |||
4467 | 4458 | ||
4468 | while (1) { | 4459 | while (1) { |
4469 | write_lock(&em_tree->lock); | 4460 | write_lock(&em_tree->lock); |
4470 | err = add_extent_mapping(em_tree, hole_em); | 4461 | err = add_extent_mapping(em_tree, hole_em, 1); |
4471 | if (!err) | ||
4472 | list_move(&hole_em->list, | ||
4473 | &em_tree->modified_extents); | ||
4474 | write_unlock(&em_tree->lock); | 4462 | write_unlock(&em_tree->lock); |
4475 | if (err != -EEXIST) | 4463 | if (err != -EEXIST) |
4476 | break; | 4464 | break; |
@@ -5989,7 +5977,7 @@ static int merge_extent_mapping(struct extent_map_tree *em_tree, | |||
5989 | em->block_start += start_diff; | 5977 | em->block_start += start_diff; |
5990 | em->block_len -= start_diff; | 5978 | em->block_len -= start_diff; |
5991 | } | 5979 | } |
5992 | return add_extent_mapping(em_tree, em); | 5980 | return add_extent_mapping(em_tree, em, 0); |
5993 | } | 5981 | } |
5994 | 5982 | ||
5995 | static noinline int uncompress_inline(struct btrfs_path *path, | 5983 | static noinline int uncompress_inline(struct btrfs_path *path, |
@@ -6283,7 +6271,7 @@ insert: | |||
6283 | 6271 | ||
6284 | err = 0; | 6272 | err = 0; |
6285 | write_lock(&em_tree->lock); | 6273 | write_lock(&em_tree->lock); |
6286 | ret = add_extent_mapping(em_tree, em); | 6274 | ret = add_extent_mapping(em_tree, em, 0); |
6287 | /* it is possible that someone inserted the extent into the tree | 6275 | /* it is possible that someone inserted the extent into the tree |
6288 | * while we had the lock dropped. It is also possible that | 6276 | * while we had the lock dropped. It is also possible that |
6289 | * an overlapping map exists in the tree | 6277 | * an overlapping map exists in the tree |
@@ -6706,10 +6694,7 @@ static struct extent_map *create_pinned_em(struct inode *inode, u64 start, | |||
6706 | btrfs_drop_extent_cache(inode, em->start, | 6694 | btrfs_drop_extent_cache(inode, em->start, |
6707 | em->start + em->len - 1, 0); | 6695 | em->start + em->len - 1, 0); |
6708 | write_lock(&em_tree->lock); | 6696 | write_lock(&em_tree->lock); |
6709 | ret = add_extent_mapping(em_tree, em); | 6697 | ret = add_extent_mapping(em_tree, em, 1); |
6710 | if (!ret) | ||
6711 | list_move(&em->list, | ||
6712 | &em_tree->modified_extents); | ||
6713 | write_unlock(&em_tree->lock); | 6698 | write_unlock(&em_tree->lock); |
6714 | } while (ret == -EEXIST); | 6699 | } while (ret == -EEXIST); |
6715 | 6700 | ||
@@ -8593,10 +8578,7 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode, | |||
8593 | 8578 | ||
8594 | while (1) { | 8579 | while (1) { |
8595 | write_lock(&em_tree->lock); | 8580 | write_lock(&em_tree->lock); |
8596 | ret = add_extent_mapping(em_tree, em); | 8581 | ret = add_extent_mapping(em_tree, em, 1); |
8597 | if (!ret) | ||
8598 | list_move(&em->list, | ||
8599 | &em_tree->modified_extents); | ||
8600 | write_unlock(&em_tree->lock); | 8582 | write_unlock(&em_tree->lock); |
8601 | if (ret != -EEXIST) | 8583 | if (ret != -EEXIST) |
8602 | break; | 8584 | break; |