提交 0ca0f82e 编写于 作者: G gaohuatao

devmapper: add deviceset free

Signed-off-by: Ngaohuatao <gaohuatao@huawei.com>
上级 98b4f46e
......@@ -68,7 +68,6 @@ struct device_set {
char *base_device_filesystem;
uint nr_deleted_devices; // number of deleted devices
uint32_t min_free_space_percent;
char *xfs_nospace_retries; // max retries when xfs receives ENOSPC
int64_t udev_wait_timeout;
bool user_base_size;
......
......@@ -3271,4 +3271,31 @@ free_out:
return -1;
}
return ret;
}
void free_device_set(struct device_set *devset)
{
if (devset == NULL) {
return;
}
UTIL_FREE_AND_SET_NULL(devset->root);
UTIL_FREE_AND_SET_NULL(devset->device_prefix);
metadata_store_free(devset->meta_store);
devset->meta_store = NULL;
map_free(devset->device_id_map);
devset->device_id_map = NULL;
UTIL_FREE_AND_SET_NULL(devset->filesystem);
pthread_rwlock_destroy(&(devset->devmapper_driver_rwlock));
UTIL_FREE_AND_SET_NULL(devset->mount_options);
util_free_array_by_len(devset->mkfs_args, devset->mkfs_args_len);
UTIL_FREE_AND_SET_NULL(devset->data_device);
UTIL_FREE_AND_SET_NULL(devset->metadata_device);
UTIL_FREE_AND_SET_NULL(devset->thin_pool_device);
free_image_devmapper_transaction(devset->metadata_trans);
devset->metadata_trans = NULL;
UTIL_FREE_AND_SET_NULL(devset->base_device_uuid);
UTIL_FREE_AND_SET_NULL(devset->base_device_filesystem);
free(devset);
}
\ No newline at end of file
......@@ -89,6 +89,8 @@ void free_devmapper_status(struct status *st);
int device_set_shutdown(struct device_set *devset, const char *home);
void free_device_set(struct device_set *devset);
#ifdef __cplusplus
}
#endif
......
......@@ -545,6 +545,8 @@ out:
int devmapper_clean_up(struct graphdriver *driver)
{
int ret = 0;
if (driver == NULL) {
ERROR("Invalid input param to cleanup devicemapper");
return -1;
......@@ -552,10 +554,14 @@ int devmapper_clean_up(struct graphdriver *driver)
if (device_set_shutdown(driver->devset, driver->home) != 0) {
ERROR("devmapper: shutdown device set failed root is %s", driver->home);
return -1;
ret = -1;
goto out;
}
return umount(driver->home);
free_device_set(driver->devset);
out:
return ret;
}
int devmapper_repair_lowers(const char *id, const char *parent, const struct graphdriver *driver)
......
......@@ -69,7 +69,7 @@ static void metadata_store_map_kvfree(void *key, void *value)
devmapper_device_info_ref_dec((devmapper_device_info_t *)value);
}
static void metadata_store_free(metadata_store_t *store)
void metadata_store_free(metadata_store_t *store)
{
if (store == NULL) {
ERROR("invalid argument");
......
......@@ -43,6 +43,8 @@ bool metadata_store_remove(const char *hash, metadata_store_t *meta_store);
char **metadata_store_list_hashes(metadata_store_t *meta_store);
void metadata_store_free(metadata_store_t *store);
#ifdef __cplusplus
}
#endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册