1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright (c) Intel Corporation. 3 * All rights reserved. 4 */ 5 #include "spdk/ftl.h" 6 7 #include "ftl_conf.h" 8 #include "ftl_core.h" 9 10 int 11 ftl_conf_cpy(struct spdk_ftl_conf *dst, const struct spdk_ftl_conf *src) 12 { 13 char *core_mask = NULL; 14 char *l2p_path = NULL; 15 char *base_bdev = NULL; 16 char *cache_bdev = NULL; 17 18 if (src->core_mask) { 19 core_mask = strdup(src->core_mask); 20 if (!core_mask) { 21 goto error; 22 } 23 } 24 if (src->base_bdev) { 25 base_bdev = strdup(src->base_bdev); 26 if (!base_bdev) { 27 goto error; 28 } 29 } 30 if (src->cache_bdev) { 31 cache_bdev = strdup(src->cache_bdev); 32 if (!cache_bdev) { 33 goto error; 34 } 35 } 36 37 free(dst->core_mask); 38 free(dst->base_bdev); 39 free(dst->cache_bdev); 40 41 *dst = *src; 42 dst->core_mask = core_mask; 43 dst->base_bdev = base_bdev; 44 dst->cache_bdev = cache_bdev; 45 return 0; 46 error: 47 free(core_mask); 48 free(l2p_path); 49 free(base_bdev); 50 free(cache_bdev); 51 return -ENOMEM; 52 } 53 54 void 55 ftl_conf_deinit(struct spdk_ftl_conf *conf) 56 { 57 free(conf->core_mask); 58 free(conf->base_bdev); 59 free(conf->cache_bdev); 60 } 61