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:
Franck Bui 2015-10-08 19:06:06 +02:00
parent 9dc5db34ad
commit c7c89abb9e

View file

@ -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;