File fix-quota.patch of Package systemd.1408
From 9ddc4a26e56b06cd7774a03597980351855d8d54 Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Fri, 13 Jan 2012 23:55:28 +0100
Subject: [PATCH] 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
---
src/mount.c | 27 ++++++++++-----------------
1 files changed, 10 insertions(+), 17 deletions(-)
Index: systemd-37/src/mount.c
===================================================================
--- systemd-37.orig/src/mount.c
+++ systemd-37/src/mount.c
@@ -365,10 +365,6 @@ static int mount_add_fstab_links(Mount *
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;
@@ -466,24 +462,23 @@ static int mount_add_device_links(Mount
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;
}
@@ -594,6 +589,9 @@ static int mount_load(Unit *u) {
if (m->meta.fragment_path)
m->from_fragment = true;
else if (m->from_etc_fstab)
+ /* We always add several default dependencies to fstab mounts,
+ * but we do not want the implicit complementing of Wants= with After=
+ * in the target unit that this mount unit will be hooked into. */
m->meta.default_dependencies = false;
if (!m->where)
@@ -627,7 +625,7 @@ static int mount_load(Unit *u) {
if ((r = mount_add_fstab_links(m)) < 0)
return r;
- if (m->meta.default_dependencies)
+ if (m->meta.default_dependencies || m->from_etc_fstab)
if ((r = mount_add_default_dependencies(m)) < 0)
return r;