1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
/*
Copyright (c) 2009-2010 Z RESEARCH, Inc. <http://www.zresearch.com>
This file is part of GlusterFS.
GlusterFS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 3 of the License,
or (at your option) any later version.
GlusterFS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
#include "quick-read.h"
int32_t
init (xlator_t *this)
{
char *str = NULL;
int32_t ret = -1;
qr_conf_t *conf = NULL;
if (!this->children || this->children->next) {
gf_log (this->name, GF_LOG_ERROR,
"FATAL: volume (%s) not configured with exactly one "
"child", this->name);
return -1;
}
if (!this->parents) {
gf_log (this->name, GF_LOG_WARNING,
"dangling volume. check volfile ");
}
conf = CALLOC (1, sizeof (*conf));
if (conf == NULL) {
gf_log (this->name, GF_LOG_ERROR,
"out of memory");
ret = -1;
goto out;
}
ret = dict_get_str (this->options, "max-file-size",
&str);
if (ret == 0) {
ret = gf_string2bytesize (str, &conf->max_file_size);
if (ret != 0) {
gf_log (this->name, GF_LOG_ERROR,
"invalid number format \"%s\" of \"option "
"max-file-size\"",
str);
ret = -1;
goto out;
}
}
conf->cache_timeout = -1;
ret = dict_get_str (this->options, "cache-timeout", &str);
if (ret == 0) {
ret = gf_string2uint_base10 (str,
(unsigned int *)&conf->cache_timeout);
if (ret != 0) {
gf_log (this->name, GF_LOG_ERROR,
"invalid cache-timeout value %s", str);
ret = -1;
goto out;
}
}
this->private = conf;
out:
if ((ret == -1) && conf) {
FREE (conf);
}
return ret;
}
void
fini (xlator_t *this)
{
return;
}
struct xlator_fops fops = {
};
struct xlator_mops mops = {
};
struct xlator_cbks cbks = {
};
struct volume_options options[] = {
{ .key = {"cache-timeout"},
.type = GF_OPTION_TYPE_INT,
.min = 1,
.max = 60
},
{ .key = {"max-file-size"},
.type = GF_OPTION_TYPE_SIZET,
.min = 0,
.max = 1 * GF_UNIT_MB
},
};
|