Make sure the mount units pulled by 'RequiresMountsFor=' are loaded (if they exist)
We should make sure that mount units involved by 'RequiresMountsFor=' directives are really loaded if not required by any others units so that Requires= dependencies on the mount units are applied and thus the mount unit dependencies are started.
This commit is contained in:
parent
9dc5db34ad
commit
c7c89abb9e
|
@ -1147,13 +1147,23 @@ static int unit_add_mount_dependencies(Unit *u) {
|
|||
char prefix[strlen(*i) + 1];
|
||||
|
||||
PATH_FOREACH_PREFIX_MORE(prefix, *i) {
|
||||
_cleanup_free_ char *p = NULL;
|
||||
Unit *m;
|
||||
|
||||
r = manager_get_unit_by_path(u->manager, prefix, ".mount", &m);
|
||||
r = unit_name_from_path(prefix, ".mount", &p);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (r == 0)
|
||||
|
||||
m = manager_get_unit(u->manager, p);
|
||||
if (!m) {
|
||||
/* Make sure to load the mount unit if
|
||||
* it exists. If so the dependencies
|
||||
* on this unit will be added later
|
||||
* during the loading of the mount
|
||||
* unit. */
|
||||
(void) manager_load_unit_prepare(u->manager, p, NULL, NULL, &m);
|
||||
continue;
|
||||
}
|
||||
if (m == u)
|
||||
continue;
|
||||
|
||||
|
|
Loading…
Reference in a new issue