Btrfs: check return value of commit when recovering log
authorJosef Bacik <jbacik@fusionio.com>
Wed, 24 Apr 2013 20:40:05 +0000 (16:40 -0400)
committerJosef Bacik <jbacik@fusionio.com>
Mon, 6 May 2013 19:55:10 +0000 (15:55 -0400)
We need to check the return value of the commit in case something goes wrong,
otherwise we could end up going down the line and doing more stuff (like orphan
cleanup) before we notice we should have errored out.  We need to do this before
we free up the log_tree_root since the caller will handle all of that.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
fs/btrfs/tree-log.c

index 1fdc221a9c0b18558370f235e68d05f68a42883a..f50137a98fb1ac524f9c4bbdbd16011e99515f5e 100644 (file)
@@ -4012,16 +4012,17 @@ again:
 
        btrfs_free_path(path);
 
+       /* step 4: commit the transaction, which also unpins the blocks */
+       ret = btrfs_commit_transaction(trans, fs_info->tree_root);
+       if (ret)
+               return ret;
+
        free_extent_buffer(log_root_tree->node);
        log_root_tree->log_root = NULL;
        fs_info->log_root_recovering = 0;
-
-       /* step 4: commit the transaction, which also unpins the blocks */
-       btrfs_commit_transaction(trans, fs_info->tree_root);
-
        kfree(log_root_tree);
-       return 0;
 
+       return 0;
 error:
        btrfs_free_path(path);
        return ret;