From: Harald Hoyer <har...@redhat.com> Now works as expected for me.
$ mount 192.168.2.2:/Public /mnt/test $ systemctl status mnt-test.mount mnt-test.mount - /mnt/test Loaded: loaded (/proc/self/mountinfo) Active: active (mounted) since Fr 2013-03-08 16:24:38 CET; 11s ago Where: /mnt/test What: 192.168.2.2:/Public Mär 08 16:24:38 lenovo systemd[1]: mnt-test.mount changed dead -> mounted $ systemctl stop remote-fs-pre.target $ systemctl status mnt-test.mount mnt-test.mount - /mnt/test Loaded: loaded (/proc/self/mountinfo) Active: inactive (dead) since Fr 2013-03-08 16:24:57 CET; 1s ago Where: /mnt/test Process: 4968 ExecUnmount=/bin/umount /mnt/test (code=exited, status=0/SUCCESS) Mär 08 16:24:57 lenovo systemdd[1]: Installed new job mnt-test.mount/stop as 744 Mär 08 16:24:57 lenovo systemd[1]: Unmounting /mnt/test... Mär 08 16:24:57 lenovo systemd[1]: About to execute /bin/umount /mnt/test Mär 08 16:24:57 lenovo systemd[1]: Forked /bin/umount as 4968 Mär 08 16:24:57 lenovo systemd[1]: mnt-test.mount changed mounted -> unmounting Mär 08 16:24:57 lenovo systemd[1]: Child 4968 belongs to mnt-test.mount Mär 08 16:24:57 lenovo systemd[1]: mnt-test.mount mount process exited, code=exited status=0 Mär 08 16:24:57 lenovo systemd[1]: mnt-test.mount changed unmounting -> dead Mär 08 16:24:57 lenovo systemd[1]: Job mnt-test.mount/stop finished, result=done Mär 08 16:24:57 lenovo systemd[1]: Unmounted /mnt/test. --- src/core/mount.c | 11 +++++++++-- src/fstab-generator/fstab-generator.c | 6 ++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/core/mount.c b/src/core/mount.c index 419cf27..8d803d8 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -447,15 +447,20 @@ static int mount_add_default_dependencies(Mount *m) { if (UNIT(m)->manager->running_as != SYSTEMD_SYSTEM) return 0; - p = get_mount_parameters_fragment(m); + p = get_mount_parameters(m); + if (!p) return 0; if (path_equal(m->where, "/")) return 0; - if (mount_is_network(p)) + if (mount_is_network(p)) { after = SPECIAL_REMOTE_FS_PRE_TARGET; + r = unit_add_dependency_by_name(UNIT(m), UNIT_PART_OF, after, NULL, true); + if (r < 0) + return r; + } else after = SPECIAL_LOCAL_FS_PRE_TARGET; @@ -1516,7 +1521,9 @@ static int mount_add_one( if (u->load_state == UNIT_ERROR) { u->load_state = UNIT_LOADED; u->load_error = 0; + } + if (u->load_state == UNIT_LOADED) { /* Load in the extras later on, after we * finished initialization of the unit */ load_extras = true; diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 910bbc1..f855e95 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -274,6 +274,12 @@ static int add_mount(const char *what, const char *where, const char *type, cons "Before=%s\n", post); + if (isnetwork) { + fprintf(f, + "PartOf=%s\n", + pre); + } + fprintf(f, "\n" "[Mount]\n" -- 1.8.1 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel