}
 
                wc.replay_dest->log_root = log;
-               btrfs_record_root_in_trans(trans, wc.replay_dest);
-               ret = walk_log_tree(trans, log, &wc);
+               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");
+               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,