Btrfs-progs: add a function to free subvol_uuid_search memory

There was no way to free the memory that was used for the
subvol_uuid_search functions. Since this is part of the libbtrfs,
add such a cleanup function.

Signed-off-by: Stefan Behrens <sbehrens@giantdisaster.de>
This commit is contained in:
Stefan Behrens 2013-04-09 19:08:33 +02:00 committed by David Sterba
parent a3ed81c5e9
commit 9b1daecf17
2 changed files with 24 additions and 0 deletions

View File

@ -304,6 +304,29 @@ out:
return ret;
}
/*
* It's safe to call this function even without the subvol_uuid_search_init()
* call before as long as the subvol_uuid_search structure is all-zero.
*/
void subvol_uuid_search_finit(struct subvol_uuid_search *s)
{
struct rb_root *root = &s->root_id_subvols;
struct rb_node *node;
while ((node = rb_first(root))) {
struct subvol_info *entry =
rb_entry(node, struct subvol_info, rb_root_id_node);
free(entry->path);
rb_erase(node, root);
free(entry);
}
s->root_id_subvols = RB_ROOT;
s->local_subvols = RB_ROOT;
s->received_subvols = RB_ROOT;
s->path_subvols = RB_ROOT;
}
char *path_cat(const char *p1, const char *p2)
{

View File

@ -62,6 +62,7 @@ struct subvol_uuid_search {
};
int subvol_uuid_search_init(int mnt_fd, struct subvol_uuid_search *s);
void subvol_uuid_search_finit(struct subvol_uuid_search *s);
struct subvol_info *subvol_uuid_search(struct subvol_uuid_search *s,
u64 root_id, const u8 *uuid, u64 transid,
const char *path,