=== modified file 'debian/changelog'
--- debian/changelog	2012-11-29 06:07:20 +0000
+++ debian/changelog	2012-12-03 23:44:19 +0000
@@ -1,3 +1,13 @@
+mountall (2.46) unstable; urgency=low
+
+  * Fix a further remaining issue from 2.41: by fixing the missing 'mounted'
+    events in 2.43, we have again introduced a case where mountall may block
+    waiting for 'mounted MOUNTPOINT=/' to return before handling 'mounted
+    MOUNTPOINT=/run' and emitting virtual-filesystems, thus causing
+    dependency loops and long boot timeouts.  LP: #1078926.
+
+ -- Steve Langasek <vorlon@debian.org>  Mon, 03 Dec 2012 23:44:16 +0000
+
 mountall (2.45) unstable; urgency=low
 
   [ Serge Hallyn ]

=== modified file 'src/mountall.c'
--- src/mountall.c	2012-11-06 09:02:21 +0000
+++ src/mountall.c	2012-12-03 23:40:14 +0000
@@ -1741,6 +1741,8 @@
 			/* All mounts have been attempted, so wait for
 			 * pending events.
 			 */
+			int still_pending = 0;
+
 			NIH_LIST_FOREACH (mounts, iter) {
 				Mount           *mnt = (Mount *)iter;
 				DBusPendingCall *pending_call = mnt->pending_call;
@@ -1748,10 +1750,17 @@
 				if (!pending_call)
 					continue;
 
+				if (! dbus_pending_call_get_completed (pending_call))
+				{
+					still_pending++;
+					continue;
+				}
 				dbus_pending_call_block (pending_call);
 				dbus_pending_call_unref (pending_call);
 				mnt->pending_call = NULL;
 			}
+			if (still_pending > 0)
+				return;
 
 			if (control_server) {
 				dbus_server_disconnect (control_server);

