diff -ru -x '*~' mountall-2.15-orig/configure.ac mountall-2.15/configure.ac --- mountall-2.15-orig/configure.ac 2010-05-09 01:42:22.000000000 +0200 +++ mountall-2.15/configure.ac 2010-06-03 13:46:09.000000000 +0200 @@ -29,7 +29,7 @@ PKG_CHECK_MODULES([NIH_DBUS], [libnih-dbus >= 1.0.0]) PKG_CHECK_MODULES([DBUS], [dbus-1 >= 1.2.16]) PKG_CHECK_MODULES([UDEV], [libudev >= 146]) -PKG_CHECK_MODULES([PLYMOUTH], [ply-boot-client >= 0.8.0]) +#PKG_CHECK_MODULES([PLYMOUTH], [ply-boot-client >= 0.8.0]) # Checks for header files. diff -ru -x '*~' mountall-2.15-orig/src/mountall.c mountall-2.15/src/mountall.c --- mountall-2.15-orig/src/mountall.c 2010-05-09 01:42:24.000000000 +0200 +++ mountall-2.15/src/mountall.c 2010-07-07 14:40:47.000000000 +0200 @@ -64,8 +64,10 @@ #include #include +#if 0 #include #include +#endif #include "ioprio.h" @@ -75,7 +77,7 @@ #define BUILTIN_FSTAB "/lib/init/fstab" -#define BOREDOM_TIMEOUT 3 +#define BOREDOM_TIMEOUT 15 enum exit { EXIT_OK = 0, /* Ok */ @@ -214,15 +216,19 @@ void boredom_timeout (void *data, NihTimer *timer); int plymouth_connect (void); +#if 0 void plymouth_disconnected (void *user_data, ply_boot_client_t *client); +#endif void plymouth_progress (Mount *mnt, int progress); void plymouth_update (int only_clear); +#if 0 void plymouth_response (void *user_data, ply_boot_client_t *client); void plymouth_failed (void *user_data, ply_boot_client_t *client); void plymouth_answer (void *user_data, const char *keys, ply_boot_client_t *client); +#endif void usr1_handler (void *data, NihSignal *signal); @@ -241,8 +247,10 @@ **/ size_t num_local = 0; size_t num_local_mounted = 0; +size_t num_local_failed = 0; size_t num_remote = 0; size_t num_remote_mounted = 0; +size_t num_remote_failed = 0; size_t num_virtual = 0; size_t num_virtual_mounted = 0; size_t num_swap = 0; @@ -310,6 +318,7 @@ **/ static struct udev *udev = NULL; +#if 0 /** * ply_event_loop: * @@ -323,6 +332,7 @@ * Plymouth boot client. **/ static ply_boot_client_t *ply_boot_client = NULL; +#endif /** * plymouth_error: @@ -1208,11 +1218,12 @@ nih_debug ("%s is root filesystem", MOUNT_NAME (mnt)); tag = TAG_LOCAL; } else if (is_remote (mnt)) { - if ((! strcmp (mnt->mountpoint, "/usr")) + if ((! has_option (mnt, "nobootwait", FALSE)) && ( + (! strcmp (mnt->mountpoint, "/usr")) || (! strcmp (mnt->mountpoint, "/var")) || (! strncmp (mnt->mountpoint, "/usr/", 5)) || (! strncmp (mnt->mountpoint, "/var/", 5)) - || (has_option (mnt, "bootwait", FALSE))) + || (has_option (mnt, "bootwait", FALSE)))) { tag = TAG_REMOTE; } else { @@ -1475,7 +1486,8 @@ /* Enforce local only after virtual filesystems triggered */ if ((! local_triggered) && virtual_triggered - && (num_local_mounted == num_local)) { + && (num_local_mounted == num_local) + && (num_local_failed == 0)) { nih_info (_("%s finished"), "local"); emit_event ("local-filesystems", NULL); local_triggered = TRUE; @@ -1484,7 +1496,8 @@ /* Enforce remote only after virtual filesystems triggrered */ if ((! remote_triggered) && virtual_triggered - && (num_remote_mounted == num_remote)) { + && (num_remote_mounted == num_remote) + && (num_remote_failed == 0)) { nih_info (_("%s finished"), "remote"); emit_event ("remote-filesystems", NULL); remote_triggered = TRUE; @@ -1494,7 +1507,9 @@ if ((! filesystem_triggered) && virtual_triggered && local_triggered - && remote_triggered) { + && remote_triggered + && (num_local_failed == 0) + && (num_remote_failed == 0)) { nih_info (_("All filesystems mounted")); emit_event ("filesystem", NULL); filesystem_triggered = TRUE; @@ -1508,9 +1523,9 @@ swap_triggered = TRUE; } - nih_info ("local %zi/%zi remote %zi/%zi virtual %zi/%zi swap %zi/%zi", - num_local_mounted, num_local, - num_remote_mounted, num_remote, + nih_info ("local %zi/%zi/%zi remote %zi/%zi/%zi virtual %zi/%zi swap %zi/%zi", + num_local_mounted, num_local, num_local_failed, + num_remote_mounted, num_remote, num_remote_failed, num_virtual_mounted, num_virtual, num_swap_mounted, num_swap); } @@ -2203,12 +2218,14 @@ if (no_events) return; +#if 0 /* Flush the Plymouth connection to ensure all updates are sent, * since the event may kill plymouth. */ if (ply_boot_client) ply_boot_client_flush (ply_boot_client); - +#endif + env = NIH_MUST (nih_str_array_new (NULL)); if (mnt) { @@ -2787,6 +2804,7 @@ int plymouth_connect (void) { +#if 0 /* If we were already connected, just re-use that connection */ if (ply_boot_client) return TRUE; @@ -2813,8 +2831,13 @@ nih_info (_("Connected to Plymouth")); return TRUE; +#else + return FALSE; +#endif } + +#if 0 void plymouth_disconnected (void * user_data, ply_boot_client_t *client) @@ -2827,6 +2850,7 @@ ply_boot_client_free (ply_boot_client); ply_boot_client = NULL; } +#endif void @@ -2837,6 +2861,7 @@ nih_assert (mnt != NULL); +#if 0 /* No Plymouth => no progress information */ if (! plymouth_connect ()) return; @@ -2866,6 +2891,7 @@ plymouth_response, plymouth_failed, NULL); +#endif } void @@ -2881,20 +2907,31 @@ NIH_LIST_FOREACH (mounts, iter) { Mount *mnt = (Mount *)iter; - if (mnt->error <= ERROR_BORED) + if (mnt->error == ERROR_NONE) continue; - nih_error (_("Skipping mounting %s since Plymouth is not available"), + nih_error (_("Could not mount %s"), MOUNT_NAME (mnt)); mnt->error = ERROR_NONE; + if (mnt->tag == TAG_LOCAL) { + num_local_failed++; + emit_event ("mount-failed", mnt); + } + + if (mnt->tag == TAG_REMOTE) { + num_remote_failed++; + emit_event ("mount-failed", mnt); + } + skip_mount (mnt); } return; } +#if 0 /* If we're already displaying messages, don't change them unless * the message is no longer valid for that mount point; otherwise * clear the message. @@ -3005,8 +3042,10 @@ plymouth_answer, plymouth_failed, NULL); +#endif } +#if 0 void plymouth_response (void * user_data, ply_boot_client_t *client) @@ -3125,7 +3164,7 @@ break; } } - +#endif /** @@ -3211,6 +3250,7 @@ (NihIoWatcher)udev_monitor_watcher, udev_monitor)); +#if 0 /* Initialise a Plymouth event loop; this is an epoll instance that * we can poll within our own main loop and call out to when needs * be. @@ -3224,6 +3264,7 @@ /* Attempt an early connection to Plymouth */ plymouth_connect (); +#endif mounts = NIH_MUST (nih_list_new (NULL)); @@ -3236,7 +3277,9 @@ * from /etc/fstab and /proc/self/mountinfo to find out what else * we need to do. */ +#if 0 parse_fstab (BUILTIN_FSTAB); +#endif parse_fstab (_PATH_MNTTAB); parse_mountinfo (); @@ -3338,10 +3381,12 @@ /* Flush the D-Bus connection to ensure all messages are sent */ dbus_connection_flush (connection); +#if 0 /* Flush the Plymouth connection to ensure all updates are sent */ if (ply_boot_client) ply_boot_client_flush (ply_boot_client); - +#endif + return ret; }