Loading fs/btrfs/extent_io.c +18 −26 Original line number Diff line number Diff line Loading @@ -569,10 +569,8 @@ int clear_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, if (err) goto out; if (state->end <= end) { clear_state_bit(tree, state, &bits, wake); if (last_end == (u64)-1) goto out; start = last_end + 1; state = clear_state_bit(tree, state, &bits, wake); goto next; } goto search_again; } Loading Loading @@ -780,7 +778,6 @@ __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, * Just lock what we found and keep going */ if (state->start == start && state->end <= end) { struct rb_node *next_node; if (state->state & exclusive_bits) { *failed_start = state->start; err = -EEXIST; Loading @@ -788,20 +785,15 @@ __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, } set_state_bits(tree, state, &bits); cache_state(state, cached_state); merge_state(tree, state); if (last_end == (u64)-1) goto out; start = last_end + 1; next_node = rb_next(&state->rb_node); if (next_node && start < end && prealloc && !need_resched()) { state = rb_entry(next_node, struct extent_state, rb_node); if (state->start == start) state = next_state(state); if (start < end && state && state->start == start && !need_resched()) goto hit_next; } goto search_again; } Loading Loading @@ -844,6 +836,10 @@ __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, if (last_end == (u64)-1) goto out; start = last_end + 1; state = next_state(state); if (start < end && state && state->start == start && !need_resched()) goto hit_next; } goto search_again; } Loading Loading @@ -993,21 +989,14 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, * Just lock what we found and keep going */ if (state->start == start && state->end <= end) { struct rb_node *next_node; set_state_bits(tree, state, &bits); clear_state_bit(tree, state, &clear_bits, 0); state = clear_state_bit(tree, state, &clear_bits, 0); if (last_end == (u64)-1) goto out; start = last_end + 1; next_node = rb_next(&state->rb_node); if (next_node && start < end && prealloc && !need_resched()) { state = rb_entry(next_node, struct extent_state, rb_node); if (state->start == start) if (start < end && state && state->start == start && !need_resched()) goto hit_next; } goto search_again; } Loading Loading @@ -1041,10 +1030,13 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, goto out; if (state->end <= end) { set_state_bits(tree, state, &bits); clear_state_bit(tree, state, &clear_bits, 0); state = clear_state_bit(tree, state, &clear_bits, 0); if (last_end == (u64)-1) goto out; start = last_end + 1; if (start < end && state && state->start == start && !need_resched()) goto hit_next; } goto search_again; } Loading Loading
fs/btrfs/extent_io.c +18 −26 Original line number Diff line number Diff line Loading @@ -569,10 +569,8 @@ int clear_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, if (err) goto out; if (state->end <= end) { clear_state_bit(tree, state, &bits, wake); if (last_end == (u64)-1) goto out; start = last_end + 1; state = clear_state_bit(tree, state, &bits, wake); goto next; } goto search_again; } Loading Loading @@ -780,7 +778,6 @@ __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, * Just lock what we found and keep going */ if (state->start == start && state->end <= end) { struct rb_node *next_node; if (state->state & exclusive_bits) { *failed_start = state->start; err = -EEXIST; Loading @@ -788,20 +785,15 @@ __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, } set_state_bits(tree, state, &bits); cache_state(state, cached_state); merge_state(tree, state); if (last_end == (u64)-1) goto out; start = last_end + 1; next_node = rb_next(&state->rb_node); if (next_node && start < end && prealloc && !need_resched()) { state = rb_entry(next_node, struct extent_state, rb_node); if (state->start == start) state = next_state(state); if (start < end && state && state->start == start && !need_resched()) goto hit_next; } goto search_again; } Loading Loading @@ -844,6 +836,10 @@ __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, if (last_end == (u64)-1) goto out; start = last_end + 1; state = next_state(state); if (start < end && state && state->start == start && !need_resched()) goto hit_next; } goto search_again; } Loading Loading @@ -993,21 +989,14 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, * Just lock what we found and keep going */ if (state->start == start && state->end <= end) { struct rb_node *next_node; set_state_bits(tree, state, &bits); clear_state_bit(tree, state, &clear_bits, 0); state = clear_state_bit(tree, state, &clear_bits, 0); if (last_end == (u64)-1) goto out; start = last_end + 1; next_node = rb_next(&state->rb_node); if (next_node && start < end && prealloc && !need_resched()) { state = rb_entry(next_node, struct extent_state, rb_node); if (state->start == start) if (start < end && state && state->start == start && !need_resched()) goto hit_next; } goto search_again; } Loading Loading @@ -1041,10 +1030,13 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, goto out; if (state->end <= end) { set_state_bits(tree, state, &bits); clear_state_bit(tree, state, &clear_bits, 0); state = clear_state_bit(tree, state, &clear_bits, 0); if (last_end == (u64)-1) goto out; start = last_end + 1; if (start < end && state && state->start == start && !need_resched()) goto hit_next; } goto search_again; } Loading