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

devmapper: add deviceset free

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