portmap does not stop during shutdown, causing possible root fs corruption
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
portmap (Ubuntu) |
Fix Released
|
High
|
Clint Byrum | ||
Lucid |
Fix Released
|
High
|
Clint Byrum | ||
Maverick |
Won't Fix
|
High
|
Unassigned | ||
sysvinit (Ubuntu) |
Fix Released
|
High
|
Clint Byrum | ||
Lucid |
Fix Released
|
High
|
Clint Byrum | ||
Maverick |
Won't Fix
|
High
|
Unassigned |
Bug Description
= SRU JUSTIFICATION =
= IMPACT =
This bug can cause data corruption in rare cases, and at the very least, forces fsck on reboot unnecessarily.
= TEST CASE: =
1. apt-get install portmap
2. apt-get install libc6 --reinstall
3. reboot
4. affected systems will show orphaned inodes in 'dmesg' on the next boot. fixed systems should not.
Binary package hint: portmap
This is related, but not the same, as bug #672177
portmap should be stopped as soon as it is no longer needed, which is right after NFS filesystems are unmounted. The unmounting is done by unmountnfs.sh from sysvinit. It properly defines an LSB header to say that portmap should be stopped after it. The trouble is that nothing interprets this header anymore as upstart does not support this method of shutdown.
When libc6 is upgraded, this means portmap keeps /lib/libc.so.xxxxx open, and so / cannot be remounted as readonly, causing filesystem corruption (this was reported in the comments of bug #672177 by "ingo".
So portmap should define an event to stop on and sysvinit should emit that event when it happens.
Related branches
- Ubuntu Sponsors: Pending requested
-
Diff: 32 lines (+7/-1)2 files modifieddebian/changelog (+6/-1)
debian/portmap.upstart (+1/-0)
Changed in portmap (Ubuntu): | |
status: | New → Confirmed |
Changed in sysvinit (Ubuntu): | |
status: | New → In Progress |
assignee: | nobody → Clint Byrum (clint-fewbar) |
Changed in portmap (Ubuntu): | |
status: | Triaged → In Progress |
Changed in sysvinit (Ubuntu): | |
importance: | Undecided → High |
Changed in portmap (Ubuntu Lucid): | |
importance: | Undecided → High |
status: | New → Triaged |
Changed in portmap (Ubuntu Maverick): | |
importance: | Undecided → High |
status: | New → Triaged |
Changed in sysvinit (Ubuntu Lucid): | |
importance: | Undecided → High |
status: | New → Triaged |
Changed in sysvinit (Ubuntu Maverick): | |
importance: | Undecided → High |
status: | New → Triaged |
Changed in portmap (Ubuntu Lucid): | |
assignee: | nobody → Clint Byrum (clint-fewbar) |
Changed in sysvinit (Ubuntu Lucid): | |
assignee: | nobody → Clint Byrum (clint-fewbar) |
Changed in portmap (Ubuntu Maverick): | |
assignee: | nobody → Clint Byrum (clint-fewbar) |
Changed in sysvinit (Ubuntu Maverick): | |
assignee: | nobody → Clint Byrum (clint-fewbar) |
Changed in portmap (Ubuntu Lucid): | |
milestone: | ubuntu-10.04.3 → ubuntu-10.04.4 |
Changed in sysvinit (Ubuntu Lucid): | |
milestone: | ubuntu-10.04.3 → ubuntu-10.04.4 |
description: | updated |
tags: |
added: verification-done removed: verification-needed |
On my machine portmap is started/running anyhow (together with rpc.statd), also if no nfs share has been mounted ever. In Lucid I have just installed 'nfs-common' (not the kernel server!). It is only used when I temporarly mount some nfs3-exports from guests in VBox, or nfs4-exports from my nas (running Lenny-armel).
You need to install nfs-common also if you only want just the client - and that brings portmap and rpc.statd.
Amaizingly; stopping portmap also stops rpc.statd?
Portmap is not included in nfs-common, it's a separate package. But it is refereced by nfs-common as "required"!