[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