ret = walk_log_tree(trans, log_root_tree, &wc);
        if (ret) {
-               btrfs_handle_fs_error(fs_info, ret,
-                       "Failed to pin buffers while recovering log root tree.");
+               btrfs_abort_transaction(trans, ret);
                goto error;
        }
 
                ret = btrfs_search_slot(NULL, log_root_tree, &key, path, 0, 0);
 
                if (ret < 0) {
-                       btrfs_handle_fs_error(fs_info, ret,
-                                   "Couldn't find tree log root.");
+                       btrfs_abort_transaction(trans, ret);
                        goto error;
                }
                if (ret > 0) {
                log = btrfs_read_tree_root(log_root_tree, &found_key);
                if (IS_ERR(log)) {
                        ret = PTR_ERR(log);
-                       btrfs_handle_fs_error(fs_info, ret,
-                                   "Couldn't read tree log root.");
+                       btrfs_abort_transaction(trans, ret);
                        goto error;
                }
 
 
                        if (!ret)
                                goto next;
-                       btrfs_handle_fs_error(fs_info, ret,
-                               "Couldn't read target root for tree log recovery.");
+                       btrfs_abort_transaction(trans, ret);
                        goto error;
                }
 
                ret = btrfs_record_root_in_trans(trans, wc.replay_dest);
                if (ret)
                        /* The loop needs to continue due to the root refs */
-                       btrfs_handle_fs_error(fs_info, ret,
-                               "failed to record the log root in transaction");
+                       btrfs_abort_transaction(trans, ret);
                else
                        ret = walk_log_tree(trans, log, &wc);
 
                if (!ret && wc.stage == LOG_WALK_REPLAY_ALL) {
                        ret = fixup_inode_link_counts(trans, wc.replay_dest,
                                                      path);
+                       if (ret)
+                               btrfs_abort_transaction(trans, ret);
                }
 
                if (!ret && wc.stage == LOG_WALK_REPLAY_ALL) {
                         * could only happen during mount.
                         */
                        ret = btrfs_init_root_free_objectid(root);
+                       if (ret)
+                               btrfs_abort_transaction(trans, ret);
                }
 
                wc.replay_dest->log_root = NULL;