We just free the log root after we set it up when we open a ctree in the tools.
This isn't nice, it makes double free's and leaks eb's, makes segfaults with
btrfs-image. So fix this to be correct, and fix the cleanup if the buffer is
not uptodate. With this fix I no longer segfault trying to do btrfs-image on a
file system with a log tree. Thanks,
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
fs_info->log_root_tree = log_root;
if (!extent_buffer_uptodate(log_root->node)) {
+ free_extent_buffer(log_root->node);
free(log_root);
+ fs_info->log_root_tree = NULL;
return -EIO;
}
- free(log_root);
return 0;
}