[Bug 1735046] Re: mkfs.btrfs error checking mount status of loop device backing_file

Ryan Harper 1735046 at bugs.launchpad.net
Fri Dec 15 17:37:18 UTC 2017


** Description changed:

+ SRU Template
+ 
+ [Impact]
+ 
+  * Users may be unable to successfully create a btrfs filesystem on 
+    block devices when a loop device is mounted and the backing file
+    no longer exists.  This typically happens in the precense of
+    overlayroot but may be encountered in other situations.
+ 
+    This affects the btrfs-tools package prior to the 3.13 release.
+    
+  * Backporting the fix from the upstream repository is required to
+    allow Trusty MAAS/Cloud images which use overlayrootfs to create
+    btrfs filesystems in the presence of a loopdevice with a missing
+    backing file.
+ 
+  * All patches applied are already accepted upstream.  Xenial, Artful,
+    and Bionic are not affected.
+    
+ 
+ [Test Case]
+ 
+  * On a Trusty 14.04 system with a secondary disk (vdb)
+     - apt-get install btrfs-tools
+     - truncate -s 1G testloop.img
+     - losetup /dev/loop0 testloop.img
+     - mkfs.ext4 /dev/loop0
+     - mount /dev/loop0 /mnt
+     - rm testloop.img
+     - mkfs.btrfs --force /dev/vdb
+ 
+     PASS if mkfs.btrfs returns 0 and /dev/vdb has a btrfs filesystem
+ 
+     FAIL if mkfs.btrfs returns non-zero and /dev/vdb does not have a
+     btrfs filesystem.  mkfs.btrfs returns the error message:
+ 
+     Error: error checking /dev/vdb mount status
+ 
+ [Regression Potential]
+ 
+  * mkfs.btrfs fails to detect that the target device is already mounted
+    and an existing btrfs filesystem is destroyed.
+ 
+ 
+ [Original Description]
  # lsb_release -rd
  Description:    Ubuntu 14.04.5 LTS
  Release:        14.04
  
  # apt-cache policy btrfs-tools
  btrfs-tools:
-   Installed: 3.12-1ubuntu0.1
-   Candidate: 3.12-1ubuntu0.1
-   Version table:
-  *** 3.12-1ubuntu0.1 0
-         500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
-         100 /var/lib/dpkg/status
-      3.12-1 0
-         500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
+   Installed: 3.12-1ubuntu0.1
+   Candidate: 3.12-1ubuntu0.1
+   Version table:
+  *** 3.12-1ubuntu0.1 0
+         500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
+         100 /var/lib/dpkg/status
+      3.12-1 0
+         500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
  
  # mkfs.btrfs --force /dev/vdd   succeeds
  
- # # mkfs.btrfs --force /dev/vdd 
+ # # mkfs.btrfs --force /dev/vdd
  Error: error checking /dev/vdd mount status
  
  # strace -f mkfs.btrfs --force /dev/vdd
  <snip>
  stat("/dev/loop0", {st_mode=S_IFBLK|0660, st_rdev=makedev(7, 0), ...}) = 0
  lstat("/dev", {st_mode=S_IFDIR|0755, st_size=4180, ...}) = 0
  lstat("/dev/loop0", {st_mode=S_IFBLK|0660, st_rdev=makedev(7, 0), ...}) = 0
  open("/sys/block//loop0/loop/backing_file", O_RDONLY) = 5
  fstat(5, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe8bd73c000
  read(5, "/root.tmp.img (deleted)\n", 4096) = 24
  close(5)                                = 0
  munmap(0x7fe8bd73c000, 4096)            = 0
  lstat("/dev", {st_mode=S_IFDIR|0755, st_size=4180, ...}) = 0
  lstat("/dev/vdd", {st_mode=S_IFBLK|0660, st_rdev=makedev(253, 48), ...}) = 0
  lstat("/root.tmp.img (deleted)", 0x7ffeaa3f0bf0) = -1 ENOENT (No such file or directory)
  close(4)                                = 0
  munmap(0x7fe8bd73d000, 4096)            = 0
  close(3)                                = 0
  write(2, "Error: error checking /dev/vdd m"..., 44Error: error checking /dev/vdd mount status
  ) = 44
  exit_group(1)                           = ?
  +++ exited with 1 +++
  
  It appears that mkfs.btrfs doesn't like the loop device, /dev/loop0
  which has a deleted backing file.
  
- root at ubuntu:~# cat /sys/block/loop0/loop/backing_file 
+ root at ubuntu:~# cat /sys/block/loop0/loop/backing_file
  /root.tmp.img (deleted)
  root at ubuntu:~# ls -al /root.tmp.img
  ls: cannot access /root.tmp.img: No such file or directory
  
  ProblemType: Bug
  DistroRelease: Ubuntu 14.04
  Package: btrfs-tools 3.12-1ubuntu0.1
  ProcVersionSignature: Ubuntu 3.13.0-135.184-generic 3.13.11-ckt39
  Uname: Linux 3.13.0-135-generic x86_64
  ApportVersion: 2.14.1-0ubuntu3.27
  Architecture: amd64
  Date: Wed Nov 29 02:58:04 2017
  ProcEnviron:
-  TERM=vt102
-  PATH=(custom, no user)
-  LANG=en_US.UTF-8
-  SHELL=/bin/bash
+  TERM=vt102
+  PATH=(custom, no user)
+  LANG=en_US.UTF-8
+  SHELL=/bin/bash
  SourcePackage: btrfs-tools
  UpgradeStatus: No upgrade log present (probably fresh install)

-- 
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1735046

Title:
  mkfs.btrfs error checking mount status of loop device backing_file

Status in btrfs-tools package in Ubuntu:
  New

Bug description:
  SRU Template

  [Impact]

   * Users may be unable to successfully create a btrfs filesystem on 
     block devices when a loop device is mounted and the backing file
     no longer exists.  This typically happens in the precense of
     overlayroot but may be encountered in other situations.

     This affects the btrfs-tools package prior to the 3.13 release.
     
   * Backporting the fix from the upstream repository is required to
     allow Trusty MAAS/Cloud images which use overlayrootfs to create
     btrfs filesystems in the presence of a loopdevice with a missing
     backing file.

   * All patches applied are already accepted upstream.  Xenial, Artful,
     and Bionic are not affected.
     

  [Test Case]

   * On a Trusty 14.04 system with a secondary disk (vdb)
      - apt-get install btrfs-tools
      - truncate -s 1G testloop.img
      - losetup /dev/loop0 testloop.img
      - mkfs.ext4 /dev/loop0
      - mount /dev/loop0 /mnt
      - rm testloop.img
      - mkfs.btrfs --force /dev/vdb

      PASS if mkfs.btrfs returns 0 and /dev/vdb has a btrfs filesystem

      FAIL if mkfs.btrfs returns non-zero and /dev/vdb does not have a
      btrfs filesystem.  mkfs.btrfs returns the error message:

      Error: error checking /dev/vdb mount status

  [Regression Potential]

   * mkfs.btrfs fails to detect that the target device is already mounted
     and an existing btrfs filesystem is destroyed.

  
  [Original Description]
  # lsb_release -rd
  Description:    Ubuntu 14.04.5 LTS
  Release:        14.04

  # apt-cache policy btrfs-tools
  btrfs-tools:
    Installed: 3.12-1ubuntu0.1
    Candidate: 3.12-1ubuntu0.1
    Version table:
   *** 3.12-1ubuntu0.1 0
          500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
          100 /var/lib/dpkg/status
       3.12-1 0
          500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

  # mkfs.btrfs --force /dev/vdd   succeeds

  # # mkfs.btrfs --force /dev/vdd
  Error: error checking /dev/vdd mount status

  # strace -f mkfs.btrfs --force /dev/vdd
  <snip>
  stat("/dev/loop0", {st_mode=S_IFBLK|0660, st_rdev=makedev(7, 0), ...}) = 0
  lstat("/dev", {st_mode=S_IFDIR|0755, st_size=4180, ...}) = 0
  lstat("/dev/loop0", {st_mode=S_IFBLK|0660, st_rdev=makedev(7, 0), ...}) = 0
  open("/sys/block//loop0/loop/backing_file", O_RDONLY) = 5
  fstat(5, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe8bd73c000
  read(5, "/root.tmp.img (deleted)\n", 4096) = 24
  close(5)                                = 0
  munmap(0x7fe8bd73c000, 4096)            = 0
  lstat("/dev", {st_mode=S_IFDIR|0755, st_size=4180, ...}) = 0
  lstat("/dev/vdd", {st_mode=S_IFBLK|0660, st_rdev=makedev(253, 48), ...}) = 0
  lstat("/root.tmp.img (deleted)", 0x7ffeaa3f0bf0) = -1 ENOENT (No such file or directory)
  close(4)                                = 0
  munmap(0x7fe8bd73d000, 4096)            = 0
  close(3)                                = 0
  write(2, "Error: error checking /dev/vdd m"..., 44Error: error checking /dev/vdd mount status
  ) = 44
  exit_group(1)                           = ?
  +++ exited with 1 +++

  It appears that mkfs.btrfs doesn't like the loop device, /dev/loop0
  which has a deleted backing file.

  root at ubuntu:~# cat /sys/block/loop0/loop/backing_file
  /root.tmp.img (deleted)
  root at ubuntu:~# ls -al /root.tmp.img
  ls: cannot access /root.tmp.img: No such file or directory

  ProblemType: Bug
  DistroRelease: Ubuntu 14.04
  Package: btrfs-tools 3.12-1ubuntu0.1
  ProcVersionSignature: Ubuntu 3.13.0-135.184-generic 3.13.11-ckt39
  Uname: Linux 3.13.0-135-generic x86_64
  ApportVersion: 2.14.1-0ubuntu3.27
  Architecture: amd64
  Date: Wed Nov 29 02:58:04 2017
  ProcEnviron:
   TERM=vt102
   PATH=(custom, no user)
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  SourcePackage: btrfs-tools
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/btrfs-tools/+bug/1735046/+subscriptions



More information about the Ubuntu-sponsors mailing list