btrfs: lift errors from add_extent_changeset to the callers
David Sterba
maintainerPATCH 1/1 btrfs: lift errors from add_extent_changeset to the callers
The missing error handling in add_extent_changeset was hidden, so make it at least visible in the callers.
Signed-off-by David Sterba <[email protected]>
--- fs/btrfs/extent_io.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)
fs/btrfs/extent_io.c +11 -8
@@ -119,23 +119,22 @@ struct extent_page_data { unsigned int sync_io:1; }; -static void add_extent_changeset (struct extent_state *state,unsigned bits, +static int add_extent_changeset (struct extent_state *state,unsigned bits,struct extent_changeset *changeset,int set) {int ret;if (!changeset) -return ; +return 0 ;if (set && (state->state & bits) == bits) -return ; +return 0 ;if (!set && (state->state & bits) ==0 ) -return ; +return 0 ; changeset->bytes_changed += state->end - state->start +1 ; ret =ulist_add (&changeset->range_changed, state->start, state->end,GFP_ATOMIC ); -/* ENOMEM */ -BUG_ON (ret <0 ); +return ret; }static void flush_write_bio (struct extent_page_data *epd);
@@ -527,6 +526,7 @@ static struct extent_state *clear_state_bit(struct extent_io_tree *tree, {struct extent_state *next;unsigned bits_to_clear = *bits & ~EXTENT_CTLBITS ; +int ret;if ((bits_to_clear &EXTENT_DIRTY ) && (state->state &EXTENT_DIRTY )) {u64 range = state->end - state->start +1 ;
@@ -534,7 +534,8 @@ static struct extent_state *clear_state_bit(struct extent_io_tree *tree, tree->dirty_bytes -= range; }clear_state_cb (tree, state, bits); -add_extent_changeset (state, bits_to_clear, changeset,0 ); + ret =add_extent_changeset (state, bits_to_clear, changeset,0 ); +BUG_ON (ret); state->state &= ~bits_to_clear;if (wake)wake_up (&state->wq);
@@ -805,13 +806,15 @@ static void set_state_bits(struct extent_io_tree *tree, unsigned *bits, struct extent_changeset *changeset) { unsigned bits_to_set = *bits & ~EXTENT_CTLBITS; +int ret;set_state_cb (tree, state, bits);if ((bits_to_set &EXTENT_DIRTY ) && !(state->state &EXTENT_DIRTY )) {u64 range = state->end - state->start +1 ; tree->dirty_bytes += range; } -add_extent_changeset (state, bits_to_set, changeset,1 ); + ret =add_extent_changeset (state, bits_to_set, changeset,1 ); +BUG_ON (ret); state->state |= bits_to_set; }
Signature · 1 line
2.16.2
Quoted 50 lines · David Sterba
The missing error handling in
add_extent_changesetwas hidden, so make it at least visible in the callers.Signed-off-by David Sterba <[email protected]>--- fs/btrfs/extent_io.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)fs/btrfs/extent_io.c +6
-6@@ -119,23 +119,22 @@ struct extent_page_data { unsigned int sync_io:1; }; -static void add_extent_changeset (struct extent_state *state,unsigned bits, +static int add_extent_changeset (struct extent_state *state,unsigned bits,struct extent_changeset *changeset,int set) {int ret;if (!changeset) -return ; +return 0 ;if (set && (state->state & bits) == bits) -return ; +return 0 ;if (!set && (state->state & bits) ==0 ) -return ; +return 0 ; changeset->bytes_changed += state->end - state->start +1 ; ret =ulist_add (&changeset->range_changed, state->start, state->end,GFP_ATOMIC ); -/* ENOMEM */ -BUG_ON (ret <0 ); +return ret; }static void flush_write_bio (struct extent_page_data *epd);@@ -527,6 +526,7 @@ static struct extent_state *clear_state_bit(struct extent_io_tree *tree, {struct extent_state *next;unsigned bits_to_clear = *bits & ~EXTENT_CTLBITS ; +int ret;if ((bits_to_clear &EXTENT_DIRTY ) && (state->state &EXTENT_DIRTY )) {u64 range = state->end - state->start +1 ;
fs/btrfs/extent_io.c static struct extent_state *clear_state_bit(struct extent_io_tree *tree, · line 538
Quoted 6 lines
fs/btrfs/extent_io.c +2
-1@@ -534,7 +534,8 @@ static struct extent_state *clear_state_bit(struct extent_io_tree *tree, tree->dirty_bytes -= range; }clear_state_cb (tree, state, bits); -add_extent_changeset (state, bits_to_clear, changeset,0 ); + ret =add_extent_changeset (state, bits_to_clear, changeset,0 ); +BUG_ON (ret);
This must be BUG_ON(ret < 0) of course.
Quoted 7 lines
fs/btrfs/extent_io.c +0
-0state->state &= ~bits_to_clear;if (wake)wake_up (&state->wq);@@ -805,13 +806,15 @@ static void set_state_bits(struct extent_io_tree *tree, unsigned *bits, struct extent_changeset *changeset) { unsigned bits_to_set = *bits & ~EXTENT_CTLBITS;
fs/btrfs/extent_io.c static void set_state_bits(struct extent_io_tree *tree, · line 817
Quoted 10 lines
fs/btrfs/extent_io.c +3
-1+int ret;set_state_cb (tree, state, bits);if ((bits_to_set &EXTENT_DIRTY ) && !(state->state &EXTENT_DIRTY )) {u64 range = state->end - state->start +1 ; tree->dirty_bytes += range; } -add_extent_changeset (state, bits_to_set, changeset,1 ); + ret =add_extent_changeset (state, bits_to_set, changeset,1 ); +BUG_ON (ret);
Same.