mirror of
https://github.com/systemd/systemd.git
synced 2024-11-07 01:27:11 +03:00
mount: properly parse timeouts options in the middle of the string
This commit is contained in:
parent
2286fdf7c5
commit
f4c0514703
21
src/mount.c
21
src/mount.c
@ -460,17 +460,19 @@ static int mount_add_default_dependencies(Mount *m) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mount_fix_timeouts(Mount *m) {
|
static int mount_fix_timeouts(Mount *m) {
|
||||||
MountParameters *p;
|
MountParameters *p;
|
||||||
const char *timeout = NULL;
|
const char *timeout = NULL;
|
||||||
Unit *other;
|
Unit *other;
|
||||||
Iterator i;
|
Iterator i;
|
||||||
usec_t u;
|
usec_t u;
|
||||||
|
char *t;
|
||||||
|
int r;
|
||||||
|
|
||||||
assert(m);
|
assert(m);
|
||||||
|
|
||||||
if (!(p = get_mount_parameters_configured(m)))
|
if (!(p = get_mount_parameters_configured(m)))
|
||||||
return;
|
return 0;
|
||||||
|
|
||||||
/* Allow configuration how long we wait for a device that
|
/* Allow configuration how long we wait for a device that
|
||||||
* backs a mount point to show up. This is useful to support
|
* backs a mount point to show up. This is useful to support
|
||||||
@ -482,11 +484,18 @@ static void mount_fix_timeouts(Mount *m) {
|
|||||||
else if ((timeout = mount_test_option(p->options, "x-systemd-device-timeout")))
|
else if ((timeout = mount_test_option(p->options, "x-systemd-device-timeout")))
|
||||||
timeout += 25;
|
timeout += 25;
|
||||||
else
|
else
|
||||||
return;
|
return 0;
|
||||||
|
|
||||||
if (parse_usec(timeout, &u) < 0) {
|
t = strndup(timeout, strcspn(timeout, ",;" WHITESPACE));
|
||||||
|
if (!t)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
r = parse_usec(t, &u);
|
||||||
|
free(t);
|
||||||
|
|
||||||
|
if (r < 0) {
|
||||||
log_warning("Failed to parse timeout for %s, ignoring: %s", m->where, timeout);
|
log_warning("Failed to parse timeout for %s, ignoring: %s", m->where, timeout);
|
||||||
return;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
SET_FOREACH(other, m->meta.dependencies[UNIT_AFTER], i) {
|
SET_FOREACH(other, m->meta.dependencies[UNIT_AFTER], i) {
|
||||||
@ -495,6 +504,8 @@ static void mount_fix_timeouts(Mount *m) {
|
|||||||
|
|
||||||
other->meta.job_timeout = u;
|
other->meta.job_timeout = u;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mount_verify(Mount *m) {
|
static int mount_verify(Mount *m) {
|
||||||
|
Loading…
Reference in New Issue
Block a user