[systemd-devel] [PATCH] swap: use swapon -o
Lennart Poettering
lennart at poettering.net
Thu May 21 07:45:44 PDT 2015
On Wed, 20.05.15 17:54, Karel Zak (kzak at redhat.com) wrote:
> This patch simplify swapon usage in systemd. The command swapon(8)
> since util-linux v2.26 supports "-o <list>". The idea is exactly the
> same like for mount(8). The -o specifies options in fstab-compatible
> way. For systemd it means that it does not have to care about things
> like "discard" or another swapon specific options.
I figure the README should be updated as part of the patch to require
util-linux 2.26 then.
> static void swap_enter_activating(Swap *s) {
> - _cleanup_free_ char *discard = NULL;
> - int r, priority = -1;
> + _cleanup_free_ char *opts = NULL;
> + int r;
>
> assert(s);
>
> @@ -726,13 +726,19 @@ static void swap_enter_activating(Swap *s) {
> s->control_command = s->exec_command + SWAP_EXEC_ACTIVATE;
>
> if (s->from_fragment) {
> - fstab_filter_options(s->parameters_fragment.options, "discard\0", NULL, &discard, NULL);
> + int priority = -1;
> +
> + r = fstab_find_pri(s->parameters_fragment.options, &priority);
> + if (r < 0)
> + log_notice_errno(r, "Failed to parse swap
> priority \"%s\", ignoring: %m", s->parameters_fragment.options);
So far we logged such non-fatal errors as LOG_WARNING. Could you
upgrade this from log_notice_errno() to log_warning_errno() please?
(I am aware the the previous code used LOG_NOTICE, but this should be
fixed I think)
>
> - priority = s->parameters_fragment.priority;
> - if (priority < 0) {
> - r = fstab_find_pri(s->parameters_fragment.options, &priority);
> + if (r <= 0 && s->parameters_fragment.priority >= 0) {
> + if (s->parameters_fragment.options)
> + r = asprintf(&opts, "%s,pri=%i", s->parameters_fragment.options, s->parameters_fragment.priority);
> + else
> + r = asprintf(&opts, "pri=%i", s->parameters_fragment.priority);
> if (r < 0)
> - log_notice_errno(r, "Failed to
> - parse swap priority \"%s\", ignoring: %m",
> - s->parameters_fragment.options);
> + goto fail;
> }
I think it might be a good idea to log a warning if the priority is
specified both in s->parameters_frament.priority and in
s->parameters_fragment.options.
Otherwise looks good!
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list