xref: /spdk/lib/ftl/utils/ftl_conf.c (revision 6f338d4bf3a8a91b7abe377a605a321ea2b05bf7)
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