[Bug 1047659] Re: mountall fails to activate swap if device contains multiple filesystem signatures
Steve Langasek
steve.langasek at canonical.com
Sat Sep 8 22:40:03 UTC 2012
On Sat, Sep 08, 2012 at 09:46:59PM -0000, a7x wrote:
> /var/log/udev attached
Thanks. So this is an interaction with this section of the mountall
code:
/* devmapper, md, loop and ram devices must be "ready" before
* we'll try them - as must any device we found without udev.
*/
if ((! action)
|| (! strncmp (kernel, "dm-", 3))
|| (! strncmp (kernel, "md", 2))
|| (! strncmp (kernel, "loop", 4))
|| (! strncmp (kernel, "ram", 3))) {
if ((! usage) && (! type) && (! uuid) && (! label)) {
if (action)
nih_debug ("ignored %s (not yet ready?)", devname);
return;
}
}
Combined with the fact that blkid can't tell what the device is, this
results in ID_FS_* variables being unset by udev and mountall refusing to
act on the device because it can't tell that the device is ready.
I'm not sure it's at all possible for us to address this in mountall safely
(i.e., without breaking other cases). And since blkid knows the disk usage
is ambiguous, blkid doesn't seem to be doing anything wrong here either.
The only actionable bug here seems to be the mkswap one.
--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
slangasek at ubuntu.com vorlon at debian.org
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to mountall in Ubuntu.
https://bugs.launchpad.net/bugs/1047659
Title:
mountall fails to activate swap if device contains multiple filesystem
signatures
Status in “mountall” package in Ubuntu:
New
Bug description:
If the swap device (LVM logical volume on an encrypted physical volume
in my case) has multiple filesystem signatures (as reported by 'wipefs
-n /path/to/swap/device'), mountall will fail to activate the swap
even though the swap device is listed in /etc/fstab. Manually running
'swapon -a' does work, however.
Also, blkid does not list the swap device in its output even though
lsblk does. I'm assuming this is related to the mountall problem.
The following script replecates the situation by creating a looback
block device with multiple filesystem signatures:
-------------
#!/bin/sh
log() { printf %s\\n "$*"; }
error() { log "ERROR: $*" >&2; }
fatal() { error "$*"; exit 1; }
try() { "$@" || fatal "'$*' failed"; }
# this script's name
myname=$(try basename "$0") || exit 1
# temporary file for storing the swap partition
FS=${myname}.tmpfs
# which loopback device to use for ${FS}
LOOP=/dev/loop0
command -v mkfs.ufs >/dev/null \
|| fatal "mkfs.ufs not found; please install the ufsutils package"
log "creating ${LOOP} using a temporary 128MiB file..."
try dd if=/dev/zero of="${FS}" bs=1M count=128 2>/dev/null
try losetup "${LOOP}" "${FS}"
log "formatting ${LOOP} as UFS2..."
try mkfs.ufs "${LOOP}" >/dev/null
log "formatting ${LOOP} as swap..."
try mkswap "${LOOP}" >/dev/null
log "running 'wipefs -n ${LOOP}'..."
try wipefs -n "${LOOP}"
log "running 'blkid -p ${LOOP}'..."
blkid -p "${LOOP}"
log "cleaning up..."
try losetup -d "${LOOP}"
try rm "${FS}"
-------------
Note how wipefs reports multiple filesystem signatures:
offset type
----------------------------------------------------------------
0x1055c ufs [filesystem]
0xff6 swap [other]
UUID: 5ac922dc-3bc5-463f-a2e8-a692ee5c293a
Also note how blkid does not list the UUID of the swap device. It
prints this error message instead:
ambivalent result (probably more filesystems on the device, use
wipefs(8) to see more details)
$ lsb_release -rd
Description: Ubuntu 12.04.1 LTS
Release: 12.04
$ apt-cache policy mountall
mountall:
Installed: 2.36
Candidate: 2.36
Version table:
*** 2.36 0
500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
$ apt-cache policy util-linux
util-linux:
Installed: 2.20.1-1ubuntu3
Candidate: 2.20.1-1ubuntu3
Version table:
*** 2.20.1-1ubuntu3 0
500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
$ apt-cache policy ufsutils
ufsutils:
Installed: 8.2-3
Candidate: 8.2-3
Version table:
*** 8.2-3 0
500 http://us.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
100 /var/lib/dpkg/status
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/mountall/+bug/1047659/+subscriptions
More information about the foundations-bugs
mailing list