1 
2 #include "common.h"
3 
4 #include "log.h"
5 
6 #include "block-backend.h"
7 
8 extern BlockBackend *
9 block_backend_fs_new (const char *block_dir, const char *tmp_dir);
10 
11 BlockBackend*
load_filesystem_block_backend(GKeyFile * config)12 load_filesystem_block_backend(GKeyFile *config)
13 {
14     BlockBackend *bend;
15     char *tmp_dir;
16     char *block_dir;
17 
18     block_dir = g_key_file_get_string (config, "block_backend", "block_dir", NULL);
19     if (!block_dir) {
20         seaf_warning ("Block dir not set in config.\n");
21         return NULL;
22     }
23 
24     tmp_dir = g_key_file_get_string (config, "block_backend", "tmp_dir", NULL);
25     if (!tmp_dir) {
26         seaf_warning ("Block tmp dir not set in config.\n");
27         return NULL;
28     }
29 
30     bend = block_backend_fs_new (block_dir, tmp_dir);
31 
32     g_free (block_dir);
33     g_free (tmp_dir);
34     return bend;
35 }
36 
37 BlockBackend*
load_block_backend(GKeyFile * config)38 load_block_backend (GKeyFile *config)
39 {
40     char *backend;
41     BlockBackend *bend;
42 
43     backend = g_key_file_get_string (config, "block_backend", "name", NULL);
44     if (!backend) {
45         return NULL;
46     }
47 
48     if (strcmp(backend, "filesystem") == 0) {
49         bend = load_filesystem_block_backend(config);
50         g_free (backend);
51         return bend;
52     }
53 
54     seaf_warning ("Unknown backend\n");
55     return NULL;
56 }
57