chiark / gitweb /
unit: introduce %f specifier to decode file names
[elogind.git] / src / mount.c
index c7df923f855a972c21ab5334c3ba443265cd5943..bbc29d88289d3ab1ff7eed1824107d1c0b36f237 100644 (file)
@@ -360,11 +360,13 @@ static int mount_add_device_links(Mount *m) {
         }
 
         if (p->passno > 0 &&
-            UNIT(m)->meta.manager->running_as == MANAGER_SYSTEM) {
+            UNIT(m)->meta.manager->running_as == MANAGER_SYSTEM &&
+            !path_equal(m->where, "/")) {
                 char *name;
                 Unit *fsck;
                 /* Let's add in the fsck service */
 
+                /* aka SPECIAL_FSCK_SERVICE */
                 if (!(name = unit_name_from_path_instance("fsck", p->what, ".service")))
                         return -ENOMEM;
 
@@ -378,7 +380,7 @@ static int mount_add_device_links(Mount *m) {
 
                 SERVICE(fsck)->fsck_passno = p->passno;
 
-                if ((r = unit_add_two_dependencies(UNIT(m), UNIT_AFTER, UNIT_WANTS, fsck, true)) < 0)
+                if ((r = unit_add_two_dependencies(UNIT(m), UNIT_AFTER, UNIT_REQUIRES, fsck, true)) < 0)
                         return r;
         }
 
@@ -393,7 +395,7 @@ static int mount_add_default_dependencies(Mount *m) {
         if (m->meta.manager->running_as == MANAGER_SYSTEM &&
             !path_equal(m->where, "/")) {
 
-                if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_FSCK_TARGET, NULL, true)) < 0)
+                if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_BEFORE, SPECIAL_QUOTACHECK_SERVICE, NULL, true)) < 0)
                         return r;
 
                 if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTED_BY, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
@@ -1526,7 +1528,7 @@ static int mount_enumerate(Manager *m) {
                 m->mount_watch.fd = fileno(m->proc_self_mountinfo);
 
                 zero(ev);
-                ev.events = EPOLLERR;
+                ev.events = EPOLLPRI;
                 ev.data.ptr = &m->mount_watch;
 
                 if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->mount_watch.fd, &ev) < 0)
@@ -1551,7 +1553,7 @@ void mount_fd_event(Manager *m, int events) {
         int r;
 
         assert(m);
-        assert(events == EPOLLERR);
+        assert(events & EPOLLPRI);
 
         /* The manager calls this for every fd event happening on the
          * /proc/self/mountinfo file, which informs us about mounting