We still need to do all of the accounting cleanup for pending block
groups if we abort.  So set the ret to trans->aborted so if we aborted
the cleanup happens and everybody is happy.

Reviewed-by: Omar Sandoval <osan...@fb.com>
Signed-off-by: Josef Bacik <jo...@toxicpanda.com>
---
 fs/btrfs/extent-tree.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index b9b829c8825c..90423b6749b7 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -10500,11 +10500,17 @@ void btrfs_create_pending_block_groups(struct 
btrfs_trans_handle *trans)
        struct btrfs_root *extent_root = fs_info->extent_root;
        struct btrfs_block_group_item item;
        struct btrfs_key key;
-       int ret = 0;
+       int ret;
 
        if (!trans->can_flush_pending_bgs)
                return;
 
+       /*
+        * If we aborted the transaction with pending bg's we need to just
+        * cleanup the list and carry on.
+        */
+       ret = trans->aborted;
+
        while (!list_empty(&trans->new_bgs)) {
                block_group = list_first_entry(&trans->new_bgs,
                                               struct btrfs_block_group_cache,
-- 
2.14.3

Reply via email to