Merge lp:~ubuntu-branches/ubuntu/karmic/mountall/karmic-201010040944 into lp:ubuntu/karmic/mountall

Proposed by James Westby on 2010-10-04
Status: Work in progress
Proposed branch: lp:~ubuntu-branches/ubuntu/karmic/mountall/karmic-201010040944
Merge into: lp:ubuntu/karmic/mountall
Diff against target: 128 lines (+116/-0) (has conflicts)
2 files modified
dbus/com.ubuntu.Upstart.Instance.xml (+45/-0)
dbus/com.ubuntu.Upstart.Job.xml (+71/-0)
Conflict adding file dbus/com.ubuntu.Upstart.Instance.xml.  Moved existing file to dbus/com.ubuntu.Upstart.Instance.xml.moved.
Conflict adding file dbus/com.ubuntu.Upstart.Job.xml.  Moved existing file to dbus/com.ubuntu.Upstart.Job.xml.moved.
To merge this branch: bzr merge lp:~ubuntu-branches/ubuntu/karmic/mountall/karmic-201010040944

Description of the change

The package history in the archive and the history in the bzr branch differ. As the archive is authoritative the history of lp:ubuntu/karmic/mountall now reflects that and the old bzr branch has been pushed to lp:~ubuntu-branches/ubuntu/karmic/mountall/karmic-201010040944. A merge should be performed if necessary.

To post a comment you must log in.

Unmerged revisions

11. By Scott James Remnant (Canonical) on 2009-10-26

[ Kees Cook ]
* Call out to restorecon after mounting tmpfs filesystems. LP: #456942.

[ Johan Kiviniemi ]
* Fix a bug introduced by the 0.2.6 change. In certain situations, we’d
  quit even though we’re still waiting for some filesystems to be
  mounted. LP: #456806.

[ Scott James Remnant ]
* Don't clear the splash screen when we're waiting for filesystems,
  instead just output following whatever else is there. In non-verbose
  mode this won't look any different, but it means we don't clear previous
  verbose mode text. LP: #458389.
* Only update the "waiting for one or more mounts" text if there's actually
  a change in the set we're waiting for; this removes the need for a CLEAR
  this case anyway.
* Don't say we're waiting for mounts we're, in fact, not waiting
  for. LP: #459859.
* Stop mountall (normally) when entering recovery mode. LP: #458060.

* Clean up source tarball. LP: #460348.

10. By Scott James Remnant (Canonical) on 2009-10-20

* Filesystem check progress reporting, including cancellation. LP: 446596.
* When we're waiting for a mountpoint, if a few seconds of inactivity
  passes, report what we're waiting for and allow Escape to drop you to
  a recovery shell.
* Start usplash for filesystem check progress reporting or when we've
  been waiting for more than a few seconds. LP: #431184.

* Hide error removing /forcefsck, people mis-report this as a bug and
  don't tell us the error above it.
* Don't call mount.ecryptfs or mount.aufs when adding an entry for
  /etc/mtab; these helpers are broken and do not support the -f argument.
  This means your passphrase may end up in /etc/mtab, blame them not me.
  LP: #431954, #443080.
* Unlink /etc/mtab~ after creating/truncating /etc/mtab and before writing
  mtab entries. LP: #431865.
* Stop the recovery shell if the user runs shutdown within it, so we
  don't run mountall again. LP: #452196.
* If the root filesystem check fails, we'll need to reboot, so just have
  the recovery shell script do that.

* Post-review logic fixes.

9. By Scott James Remnant (Canonical) on 2009-10-13

[ Steve Langasek ]
* Don't emit the local-filesystem signal until after virtual filesystems
  are also done mounting. LP: #448981.

[ Robert Gerlach ]
* Fix segfault when root filesystem missing from fstab, or listed
  as /dev/root. LP: #448323.

[ Johan Kiviniemi ]
* Don’t queue filesystem check when either device or type is "none".

[ Scott James Remnant ]
* Removed /srv from the list of "essential" mountpoints. LP: #448267.
* Allow overriding of the above list by using the "bootwait" and
  "nobootwait" fstab options, e.g.

  LABEL=foo /home ext4 nobootwait 0 0

* Mount /proc before attempting to parse /proc/filesystems. LP: #447947.
* Further improvements to event tagging of filesystems. A virtual bootwait
  filesystem underneath a local or remote filesystem inherits that tag,
  a local bootwait filesystem underneath a remote filesystem inherits that
  tag, remote filesystems do not inherit them. LP: #447654.

* Replace previous hardcoded "arch specific" flag for /spu with an
  "optional" fstab mount option.
* Made binfmt_misc,fusectl, debugfs, securityfs and /lib/init/rw optional
  as well.
* Check whether the mountpoint of optional fstab entries exists before
  trying to mount, and skip over that if it doesn't. LP: #447525.

* Keep /proc/self/mountinfo open, if it changes while we're running,
  update the knowledge of the mount table and what's mounted. That
  way if something else mounts it while mountall running, you'll still
  get events and mountall will still exit.
* Try mounts again if another network device comes up while we were

8. By Steve Langasek on 2009-10-09

Make mountall recognize that *remote* filesystems are still remote, given
that their parent fs is almost always local. LP: #447654.

7. By Scott James Remnant (Canonical) on 2009-10-09

[ Colin Watson ]
* Always check the root filesystem if --force-fsck is used, regardless of
  passno. LP: #435707.

[ Johan Kiviniemi ]
* Have each fsck instance create a lock for each underlying physical device.
  If you have a single disk or RAID, all filesystem checks will happen
  sequentially in order to avoid thrashing. On more complex configurations,
  you’ll benefit from the parallel checks mountall has been doing all along.
  LP: #434974.

[ Scott James Remnant ]
* Flush standard output and error before spawning processes to make
  capturing logs easier (otherwise we end up repeating things still in
  the buffer), and before calling exec().
* Turn the code upside down so that each mount knows what it's waiting
  for, and allow multiple dependencies. This makes the code much more
  readable putting the "policy" in a single function, and will make it
  much easier in future when this is done by Upstart.
* For kernel filesystems listed in fstab, honour the order that they
  are listed in fstab. LP: #432571, #433537, #436796
* Always create new swap partition mounts for each fstab entry, don't
  treat them as updating the same. LP: #435027.
* Virtual filesystems under local or remote filesystems (and local under
  remote) don't delay the virtual or local events. LP: #431040.
* Simplify event emission, this has the advantage that we can now output
  what mount points we're waiting for and what they are waiting for as
* Fixed issue with trailing slashes. LP: #443035.
* Only run hooks if the filesystem was not already mounted. LP: #444252.
* Don't clean up /tmp when run without --tmptime argument.
* Ignore loop and ram devices until ready. LP: #441454.
* Add options to binfmt_misc filesystem, which will probably cause it to
  be mounted on boot as well.
* Synchronously mount local and virtual filesystems, I suspect this is
  the real cause behind the XFS races as one will modprobe and the other
  will not (and fail). LP: #432620.
* Synchronously activate swap to avoid out of memory issues when checking
  the root filesystem.
* Enumerate existing udev devices on startup, so we don't always have to
  see udev be coldplugged.
* Don't break on general errors for non-essential filesystems.
  LP: #441144.
* Don't repeat attempts to mount a filesystem without having first
  succeded to mount another.
* Still restart mountall even if the recovery shell fails.
* Don't queue filesystem check when device is "none", or missing, or the
  filesystem is marked nodev.
* Generate a "mount" event before mounting a filesystem, and wait for its
  effects to complete.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'dbus/com.ubuntu.Upstart.Instance.xml'
2--- dbus/com.ubuntu.Upstart.Instance.xml 1970-01-01 00:00:00 +0000
3+++ dbus/com.ubuntu.Upstart.Instance.xml 2010-10-04 09:54:43 +0000
4@@ -0,0 +1,45 @@
5+<?xml version="1.0" encoding="UTF-8" ?>
6+<!-- upstart
8+ com.ubuntu.Upstart.Instance.xml - interface definition for interface
9+ objects
11+ Copyright © 2009 Canonical Ltd.
12+ Author: Scott James Remnant <>.
14+ This file is free software; Canonical Ltd gives unlimited permission
15+ to copy and/or distribute it, with or without modifications, as long
16+ as this notice is preserved.
18+ Communication and interaction with Upstart through this interface is
19+ permitted without restriction.
20+ -->
23+ "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
24+ "">
27+ <interface name="com.ubuntu.Upstart0_6.Instance">
28+ <!-- Methods to directly control instances. Unlike the equivalent methods
29+ for a Job, these are not permitted to pass or set environment. -->
30+ <method name="Start">
31+ <annotation name="com.netsplit.Nih.Method.Async" value="true" />
32+ <arg name="wait" type="b" direction="in" />
33+ </method>
34+ <method name="Stop">
35+ <annotation name="com.netsplit.Nih.Method.Async" value="true" />
36+ <arg name="wait" type="b" direction="in" />
37+ </method>
38+ <method name="Restart">
39+ <annotation name="com.netsplit.Nih.Method.Async" value="true" />
40+ <arg name="wait" type="b" direction="in" />
41+ </method>
43+ <!-- Basic information about an Instance -->
44+ <property name="name" type="s" access="read" />
45+ <property name="goal" type="s" access="read" />
46+ <property name="state" type="s" access="read" />
47+ <property name="processes" type="a(si)" access="read" />
48+ </interface>
51=== renamed file 'dbus/com.ubuntu.Upstart.Instance.xml' => 'dbus/com.ubuntu.Upstart.Instance.xml.moved'
52=== added file 'dbus/com.ubuntu.Upstart.Job.xml'
53--- dbus/com.ubuntu.Upstart.Job.xml 1970-01-01 00:00:00 +0000
54+++ dbus/com.ubuntu.Upstart.Job.xml 2010-10-04 09:54:43 +0000
55@@ -0,0 +1,71 @@
56+<?xml version="1.0" encoding="UTF-8" ?>
57+<!-- upstart
59+ com.ubuntu.Upstart.Job.xml - interface definition for job objects
61+ Copyright © 2009 Canonical Ltd.
62+ Author: Scott James Remnant <>.
64+ This file is free software; Canonical Ltd gives unlimited permission
65+ to copy and/or distribute it, with or without modifications, as long
66+ as this notice is preserved.
68+ Communication and interaction with Upstart through this interface is
69+ permitted without restriction.
70+ -->
73+ "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
74+ "">
77+ <interface name="com.ubuntu.Upstart0_6.Job">
78+ <!-- Get object paths for instances, while you can figure these out too,
79+ it's still better form to use these -->
80+ <method name="GetInstance">
81+ <arg name="env" type="as" direction="in" />
82+ <arg name="instance" type="o" direction="out" />
83+ </method>
84+ <method name="GetInstanceByName">
85+ <arg name="name" type="s" direction="in" />
86+ <arg name="instance" type="o" direction="out" />
87+ </method>
88+ <method name="GetAllInstances">
89+ <arg name="instances" type="ao" direction="out" />
90+ </method>
92+ <!-- Signals for changes to the instance list for a job -->
93+ <signal name="InstanceAdded">
94+ <arg name="instance" type="o" />
95+ </signal>
96+ <signal name="InstanceRemoved">
97+ <arg name="instance" type="o" />
98+ </signal>
100+ <!-- Job control; the environment arguments are used for both instance
101+ selection and for passing environment to the processes of the job. -->
102+ <method name="Start">
103+ <annotation name="com.netsplit.Nih.Method.Async" value="true" />
104+ <arg name="env" type="as" direction="in" />
105+ <arg name="wait" type="b" direction="in" />
106+ <arg name="instance" type="o" direction="out" />
107+ </method>
108+ <method name="Stop">
109+ <annotation name="com.netsplit.Nih.Method.Async" value="true" />
110+ <arg name="env" type="as" direction="in" />
111+ <arg name="wait" type="b" direction="in" />
112+ </method>
113+ <method name="Restart">
114+ <annotation name="com.netsplit.Nih.Method.Async" value="true" />
115+ <arg name="env" type="as" direction="in" />
116+ <arg name="wait" type="b" direction="in" />
117+ <arg name="instance" type="o" direction="out" />
118+ </method>
120+ <!-- Basic information about a Job -->
121+ <property name="name" type="s" access="read" />
122+ <property name="description" type="s" access="read" />
123+ <property name="author" type="s" access="read" />
124+ <property name="version" type="s" access="read" />
125+ </interface>
128=== renamed file 'dbus/com.ubuntu.Upstart.Job.xml' => 'dbus/com.ubuntu.Upstart.Job.xml.moved'


People subscribed via source and target branches