mirror of
https://github.com/systemd/systemd.git
synced 2026-07-13 02:51:14 +00:00
core/swap: follow the configured unit by default
Phenomenon: parameters configured in /etc/fstab for swap units are ignored. E.g. pri= settings have no effect when systemd starts swap units. What is even more confusing, .swap units for the name used in /etc/fstab initially show proper values for Priority=, but after starting them, they are re-initalized from /proc/swaps and show the -1 value from /proc/swaps. Change swap units to follow the original configured unit. This way proper settings are used when starting the swap.
This commit is contained in:
@@ -1208,11 +1208,25 @@ static Unit *swap_following(Unit *u) {
|
||||
|
||||
assert(s);
|
||||
|
||||
if (streq_ptr(s->what, s->devnode))
|
||||
/* If the user configured the swap through /etc/fstab or
|
||||
* a device unit, follow that. */
|
||||
|
||||
if (s->from_fragment)
|
||||
return NULL;
|
||||
|
||||
/* Make everybody follow the unit that's named after the swap
|
||||
* device in the kernel */
|
||||
LIST_FOREACH_AFTER(same_devnode, other, s)
|
||||
if (other->from_fragment)
|
||||
return UNIT(other);
|
||||
|
||||
LIST_FOREACH_BEFORE(same_devnode, other, s)
|
||||
if (other->from_fragment)
|
||||
return UNIT(other);
|
||||
|
||||
/* Otherwise make everybody follow the unit that's named after
|
||||
* the swap device in the kernel */
|
||||
|
||||
if (streq_ptr(s->what, s->devnode))
|
||||
return NULL;
|
||||
|
||||
LIST_FOREACH_AFTER(same_devnode, other, s)
|
||||
if (streq_ptr(other->what, other->devnode))
|
||||
@@ -1225,6 +1239,7 @@ static Unit *swap_following(Unit *u) {
|
||||
first = other;
|
||||
}
|
||||
|
||||
/* Fall back to the first on the list */
|
||||
return UNIT(first);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user