diff options
author | Michal Schmidt <mschmidt@redhat.com> | 2012-01-13 23:55:28 +0100 |
---|---|---|
committer | Michal Schmidt <mschmidt@redhat.com> | 2012-01-14 00:12:10 +0100 |
commit | 9ddc4a26e56b06cd7774a03597980351855d8d54 (patch) | |
tree | 9c9b4fdf247453eb512b821c2cedce88d929d310 /src/mount.c | |
parent | 6ef25fb65ee0a62972ed7cbc01b6a11feb5fcb16 (diff) |
mount: fix quota
quotacheck.service and quotaon.service were not pulled in for fstab mounts.
Fix it by not clearing the default_dependencies flag.
The root filesystem may have quotas too, so don't check for "/" there.
No need to have duplicate code for adding dependencies on umount.target.
https://bugzilla.redhat.com/show_bug.cgi?id=773431
Diffstat (limited to 'src/mount.c')
-rw-r--r-- | src/mount.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/src/mount.c b/src/mount.c index f72c50afb7..12c0710f1f 100644 --- a/src/mount.c +++ b/src/mount.c @@ -357,10 +357,6 @@ static int mount_add_fstab_links(Mount *m) { after = SPECIAL_LOCAL_FS_PRE_TARGET; } - if (!path_equal(m->where, "/")) - if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0) - return r; - if ((r = manager_load_unit(m->meta.manager, target, NULL, NULL, &tu)) < 0) return r; @@ -461,24 +457,23 @@ static int mount_add_device_links(Mount *m) { static int mount_add_default_dependencies(Mount *m) { int r; + MountParameters *p; assert(m); - if (m->meta.manager->running_as == MANAGER_SYSTEM && - !path_equal(m->where, "/")) { - MountParameters *p; - - p = get_mount_parameters_configured(m); + if (m->meta.manager->running_as != MANAGER_SYSTEM) + return 0; - if (p && needs_quota(p)) { - if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_WANTS, SPECIAL_QUOTACHECK_SERVICE, NULL, true)) < 0 || - (r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_WANTS, SPECIAL_QUOTAON_SERVICE, NULL, true)) < 0) - return r; - } + p = get_mount_parameters_configured(m); + if (p && needs_quota(p)) { + if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_WANTS, SPECIAL_QUOTACHECK_SERVICE, NULL, true)) < 0 || + (r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_WANTS, SPECIAL_QUOTAON_SERVICE, NULL, true)) < 0) + return r; + } + if (!path_equal(m->where, "/")) if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0) return r; - } return 0; } @@ -588,8 +583,6 @@ static int mount_load(Unit *u) { if (m->meta.fragment_path) m->from_fragment = true; - else if (m->from_etc_fstab) - m->meta.default_dependencies = false; if (!m->where) if (!(m->where = unit_name_to_path(u->meta.id))) |