void *data,
void *userdata) {
- CGroupContext *c = data;
- unsigned long lu;
+ unsigned long *shares = data, lu;
int r;
assert(filename);
assert(rvalue);
if (isempty(rvalue)) {
- c->cpu_shares = 1024;
+ *shares = (unsigned long) -1;
return 0;
}
r = safe_atolu(rvalue, &lu);
if (r < 0 || lu <= 0) {
- log_syntax(unit, LOG_ERR, filename, line, EINVAL,
- "CPU shares '%s' invalid. Ignoring.", rvalue);
+ log_syntax(unit, LOG_ERR, filename, line, EINVAL, "CPU shares '%s' invalid. Ignoring.", rvalue);
return 0;
}
- c->cpu_shares = lu;
+ *shares = lu;
return 0;
}
void *userdata) {
CGroupContext *c = data;
- int r;
+ double percent;
assert(filename);
assert(lvalue);
if (isempty(rvalue)) {
c->cpu_quota_per_sec_usec = (usec_t) -1;
- c->cpu_quota_usec = (usec_t) -1;
return 0;
}
- if (endswith(rvalue, "%")) {
- double percent;
-
- if (sscanf(rvalue, "%lf%%", &percent) != 1 || percent <= 0) {
- log_syntax(unit, LOG_ERR, filename, line, EINVAL, "CPU quota '%s' invalid. Ignoring.", rvalue);
- return 0;
- }
+ if (!endswith(rvalue, "%")) {
- c->cpu_quota_per_sec_usec = (usec_t) (percent * USEC_PER_SEC / 100);
- c->cpu_quota_usec = (usec_t) -1;
- } else {
- r = parse_sec(rvalue, &c->cpu_quota_usec);
- if (r < 0) {
- log_syntax(unit, LOG_ERR, filename, line, EINVAL, "CPU quota '%s' invalid. Ignoring.", rvalue);
- return 0;
- }
+ log_syntax(unit, LOG_ERR, filename, line, EINVAL, "CPU quota '%s' not ending in '%%'. Ignoring.", rvalue);
+ return 0;
+ }
- c->cpu_quota_per_sec_usec = (usec_t) -1;
+ if (sscanf(rvalue, "%lf%%", &percent) != 1 || percent <= 0) {
+ log_syntax(unit, LOG_ERR, filename, line, EINVAL, "CPU quota '%s' invalid. Ignoring.", rvalue);
+ return 0;
}
+ c->cpu_quota_per_sec_usec = (usec_t) (percent * USEC_PER_SEC / 100);
+
return 0;
}
void *data,
void *userdata) {
- CGroupContext *c = data;
- unsigned long lu;
+ unsigned long *weight = data, lu;
int r;
assert(filename);
assert(rvalue);
if (isempty(rvalue)) {
- c->blockio_weight = 1000;
+ *weight = (unsigned long) -1;
return 0;
}
r = safe_atolu(rvalue, &lu);
if (r < 0 || lu < 10 || lu > 1000) {
- log_syntax(unit, LOG_ERR, filename, line, EINVAL,
- "Block IO weight '%s' invalid. Ignoring.", rvalue);
+ log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Block IO weight '%s' invalid. Ignoring.", rvalue);
return 0;
}
- c->blockio_weight = lu;
-
+ *weight = lu;
return 0;
}
n = strcspn(rvalue, WHITESPACE);
weight = rvalue + n;
if (!*weight) {
- log_syntax(unit, LOG_ERR, filename, line, EINVAL,
- "Expected block device and device weight. Ignoring.");
+ log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Expected block device and device weight. Ignoring.");
return 0;
}
return log_oom();
if (!path_startswith(path, "/dev")) {
- log_syntax(unit, LOG_ERR, filename, line, EINVAL,
- "Invalid device node path '%s'. Ignoring.", path);
+ log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Invalid device node path '%s'. Ignoring.", path);
return 0;
}
weight += strspn(weight, WHITESPACE);
r = safe_atolu(weight, &lu);
if (r < 0 || lu < 10 || lu > 1000) {
- log_syntax(unit, LOG_ERR, filename, line, EINVAL,
- "Block IO weight '%s' invalid. Ignoring.", rvalue);
+ log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Block IO weight '%s' invalid. Ignoring.", rvalue);
return 0;
}
-
w = new0(CGroupBlockIODeviceWeight, 1);
if (!w)
return log_oom();