diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-06-27 15:03:05 -0400 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-06-30 18:39:45 -0400 |
commit | b3208b662948b51ff34e7b7752e28ec7a48708ae (patch) | |
tree | 71a3bc41708372ff7d6f219a5b34c816bef07232 | |
parent | 2968644080fd103062f070e83edd620e0a58c44d (diff) |
fstab-generator: allow x-systemd.device-timeout for swap units
-rw-r--r-- | src/fstab-generator/fstab-generator.c | 5 | ||||
-rw-r--r-- | src/shared/generator.c | 24 |
2 files changed, 20 insertions, 9 deletions
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 6f392dfd4d..1256a1ce53 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -129,6 +129,11 @@ static int add_swap(const char *what, struct mntent *me) { return -errno; } + /* use what as where, to have a nicer error message */ + r = generator_write_timeouts(arg_dest, what, what, me->mnt_opts, NULL); + if (r < 0) + return r; + if (!noauto) { lnk = strjoin(arg_dest, "/" SPECIAL_SWAP_TARGET ".wants/", name, NULL); if (!lnk) diff --git a/src/shared/generator.c b/src/shared/generator.c index 762033bbdf..1db5f8fb62 100644 --- a/src/shared/generator.c +++ b/src/shared/generator.c @@ -97,7 +97,7 @@ int generator_write_timeouts(const char *dir, const char *what, const char *wher * user input, like crypto devices. */ _cleanup_free_ char *node = NULL, *unit = NULL, *t = NULL; - char *prefix, *start, *timeout, *postfix; + char *start, *timeout; usec_t u; int r; size_t len; @@ -107,9 +107,11 @@ int generator_write_timeouts(const char *dir, const char *what, const char *wher else if ((start = mount_test_option(opts, "x-systemd.device-timeout"))) timeout = start + 25; else { - *filtered = strdup(opts); - if (!*filtered) - return log_oom(); + if (filtered) { + *filtered = strdup(opts); + if (!*filtered) + return log_oom(); + } return 0; } @@ -119,11 +121,15 @@ int generator_write_timeouts(const char *dir, const char *what, const char *wher if (!t) return -ENOMEM; - prefix = strndupa(opts, start - opts - (start != opts)); - postfix = timeout + len + (timeout[len] != '\0'); - *filtered = strjoin(prefix, *postfix ? postfix : NULL, NULL); - if (!*filtered) - return log_oom(); + if (filtered) { + char *prefix, *postfix; + + prefix = strndupa(opts, start - opts - (start != opts)); + postfix = timeout + len + (timeout[len] != '\0'); + *filtered = strjoin(prefix, *postfix ? postfix : NULL, NULL); + if (!*filtered) + return log_oom(); + } r = parse_sec(t, &u); if (r < 0) { |