[Bug 1757565] Re: btrfs and tar sparse truncate archives
Ryan Harper
1757565 at bugs.launchpad.net
Tue Apr 10 14:11:43 UTC 2018
Verified artful-proposed.
root at ubuntu:~# cat /etc/cloud/build.info
build_name: server
serial: 20180404
root at ubuntu:~# uname -a
Linux ubuntu 4.13.0-38-generic #43-Ubuntu SMP Wed Mar 14 15:20:44 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root at ubuntu:~# mount /dev/sda /mnt
root at ubuntu:~# grep sda /proc/mounts
/dev/sda /mnt btrfs rw,relatime,space_cache,subvolid=5,subvol=/ 0 0
root at ubuntu:~# SPARSE="-S"; rm -rf /mnt/tmp; md5sum /usr/bin/python3.6; mkdir -p /mnt/tmp; cp -a /usr/bin/python3.6 /mnt/tmp; tar -C /mnt/tmp $SPARSE -czf /mnt/test.tgz .; tar $SPARSE -xzf /mnt/test.tgz -O | md5sum
e4121d2f3126b8c364bfa1aaa82371a3 /usr/bin/python3.6
0ce8c4139740198926273853defcb12a -
root at ubuntu:~# dpkg --list | grep virtual
ii linux-headers-virtual 4.13.0.38.41 amd64 Virtual Linux kernel headers
ii linux-image-virtual 4.13.0.38.41 amd64 Virtual Linux kernel image
ii linux-virtual 4.13.0.38.41 amd64 Minimal Generic Linux kernel and headers
ii open-vm-tools 2:10.1.10-3ubuntu0.1 amd64 Open VMware Tools for virtual machines hosted on VMware (CLI)
root at ubuntu:~# apt update && apt install linux-image-virtual
Hit:1 http://archive.ubuntu.com/ubuntu artful InRelease
Hit:2 http://security.ubuntu.com/ubuntu artful-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu artful-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu artful-backports InRelease
Get:5 http://archive.ubuntu.com/ubuntu artful-proposed InRelease [235 kB]
Get:6 http://archive.ubuntu.com/ubuntu artful-proposed/main amd64 Packages [62.3 kB]
Get:7 http://archive.ubuntu.com/ubuntu artful-proposed/main Translation-en [26.1 kB]
Fetched 323 kB in 1s (206 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
29 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
grub-pc-bin
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
linux-headers-4.13.0-39 linux-headers-4.13.0-39-generic linux-headers-generic linux-headers-virtual linux-image-4.13.0-39-generic
linux-virtual
Suggested packages:
fdutils linux-doc-4.13.0 | linux-source-4.13.0 linux-tools
The following NEW packages will be installed:
linux-headers-4.13.0-39 linux-headers-4.13.0-39-generic linux-image-4.13.0-39-generic
The following packages will be upgraded:
linux-headers-generic linux-headers-virtual linux-image-virtual linux-virtual
4 upgraded, 3 newly installed, 0 to remove and 25 not upgraded.
Need to get 32.5 MB of archives.
After this operation, 156 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu artful-proposed/main amd64 linux-headers-4.13.0-39 all 4.13.0-39.44 [10.9 MB]
Get:2 http://archive.ubuntu.com/ubuntu artful-proposed/main amd64 linux-headers-4.13.0-39-generic amd64 4.13.0-39.44 [704 kB]
Get:3 http://archive.ubuntu.com/ubuntu artful-proposed/main amd64 linux-image-4.13.0-39-generic amd64 4.13.0-39.44 [20.9 MB]
Get:4 http://archive.ubuntu.com/ubuntu artful-proposed/main amd64 linux-virtual amd64 4.13.0.39.42 [1780 B]
Get:5 http://archive.ubuntu.com/ubuntu artful-proposed/main amd64 linux-image-virtual amd64 4.13.0.39.42 [2308 B]
Get:6 http://archive.ubuntu.com/ubuntu artful-proposed/main amd64 linux-headers-virtual amd64 4.13.0.39.42 [1766 B]
Get:7 http://archive.ubuntu.com/ubuntu artful-proposed/main amd64 linux-headers-generic amd64 4.13.0.39.42 [2294 B]
Fetched 32.5 MB in 5s (5459 kB/s)
Selecting previously unselected package linux-headers-4.13.0-39.
(Reading database ... 57609 files and directories currently installed.)
Preparing to unpack .../0-linux-headers-4.13.0-39_4.13.0-39.44_all.deb ...
Unpacking linux-headers-4.13.0-39 (4.13.0-39.44) ...
Selecting previously unselected package linux-headers-4.13.0-39-generic.
Preparing to unpack .../1-linux-headers-4.13.0-39-generic_4.13.0-39.44_amd64.deb ...
Unpacking linux-headers-4.13.0-39-generic (4.13.0-39.44) ...
Selecting previously unselected package linux-image-4.13.0-39-generic.
Preparing to unpack .../2-linux-image-4.13.0-39-generic_4.13.0-39.44_amd64.deb ...
Done.
Unpacking linux-image-4.13.0-39-generic (4.13.0-39.44) ...
Preparing to unpack .../3-linux-virtual_4.13.0.39.42_amd64.deb ...
Unpacking linux-virtual (4.13.0.39.42) over (4.13.0.38.41) ...
Preparing to unpack .../4-linux-image-virtual_4.13.0.39.42_amd64.deb ...
Unpacking linux-image-virtual (4.13.0.39.42) over (4.13.0.38.41) ...
Preparing to unpack .../5-linux-headers-virtual_4.13.0.39.42_amd64.deb ...
Unpacking linux-headers-virtual (4.13.0.39.42) over (4.13.0.38.41) ...
Preparing to unpack .../6-linux-headers-generic_4.13.0.39.42_amd64.deb ...
Unpacking linux-headers-generic (4.13.0.39.42) over (4.13.0.38.41) ...
Setting up linux-image-4.13.0-39-generic (4.13.0-39.44) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.13.0-39-generic /boot/vmlinuz-4.13.0-39-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.13.0-39-generic /boot/vmlinuz-4.13.0-39-generic
update-initramfs: Generating /boot/initrd.img-4.13.0-39-generic
WARNING: Setting CRYPTSETUP in /etc/initramfs-tools/initramfs.conf is deprecated and will stop working in the future. Use /etc/cryptsetup-initramfs/conf-hook instead.
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 4.13.0-39-generic /boot/vmlinuz-4.13.0-39-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 4.13.0-39-generic /boot/vmlinuz-4.13.0-39-generic
run-parts: executing /etc/kernel/postinst.d/x-grub-legacy-ec2 4.13.0-39-generic /boot/vmlinuz-4.13.0-39-generic
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-4.13.0-38-generic
Found kernel: /boot/vmlinuz-4.13.0-39-generic
Found kernel: /boot/vmlinuz-4.13.0-38-generic
Updating /boot/grub/menu.lst ... done
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.13.0-39-generic /boot/vmlinuz-4.13.0-39-generic
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.13.0-39-generic
Found initrd image: /boot/initrd.img-4.13.0-39-generic
Found linux image: /boot/vmlinuz-4.13.0-38-generic
Found initrd image: /boot/initrd.img-4.13.0-38-generic
done
Setting up linux-image-virtual (4.13.0.39.42) ...
Setting up linux-headers-4.13.0-39 (4.13.0-39.44) ...
Setting up linux-headers-4.13.0-39-generic (4.13.0-39.44) ...
Setting up linux-headers-generic (4.13.0.39.42) ...
Setting up linux-headers-virtual (4.13.0.39.42) ...
Setting up linux-virtual (4.13.0.39.42) ...
# reboot
root at ubuntu:~# uname -a
Linux ubuntu 4.13.0-39-generic #44-Ubuntu SMP Thu Apr 5 14:25:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root at ubuntu:~# apt-cache policy linux-image-virtual
linux-image-virtual:
Installed: 4.13.0.39.42
Candidate: 4.13.0.39.42
Version table:
*** 4.13.0.39.42 500
500 http://archive.ubuntu.com/ubuntu artful-proposed/main amd64 Packages
100 /var/lib/dpkg/status
4.13.0.38.41 500
500 http://archive.ubuntu.com/ubuntu artful-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu artful-security/main amd64 Packages
4.13.0.16.17 500
500 http://archive.ubuntu.com/ubuntu artful/main amd64 Packages
root at ubuntu:~# mount /dev/sda /mnt
root at ubuntu:~# grep sda /proc/mounts
/dev/sda /mnt btrfs rw,relatime,space_cache,subvolid=5,subvol=/ 0 0
root at ubuntu:~# SPARSE="-S"; rm -rf /mnt/tmp; md5sum /usr/bin/python3.6; mkdir -p /mnt/tmp; cp -a /usr/bin/python3.6 /mnt/tmp; tar -C /mnt/tmp $SPARSE -czf /mnt/test.tgz .; tar $SPARSE -xzf /mnt/test.tgz -O | md5sum
e4121d2f3126b8c364bfa1aaa82371a3 /usr/bin/python3.6
e4121d2f3126b8c364bfa1aaa82371a3 -
** Tags removed: verification-needed-artful
** Tags added: verification-done-artful
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to tar in Ubuntu.
https://bugs.launchpad.net/bugs/1757565
Title:
btrfs and tar sparse truncate archives
Status in linux package in Ubuntu:
Fix Released
Status in tar package in Ubuntu:
New
Status in linux source package in Artful:
Fix Committed
Status in tar source package in Artful:
New
Bug description:
== SRU Justification ==
This bug causes btrfs and tar sparse to truncate archives. This bug has been
fixed in v4.15-rc3 by commit e3b8a4858566, which has a prereq commit of f48bf66b662e.
These commits were cc'd to upstream stable and are already in Bionic. However, upstream
4.13 is EOL, so Artful never recieved the fixes, which is the reason for
the SRU request.
== Fixes ==
f48bf66b662e ("Btrfs: move definition of the function btrfs_find_new_delalloc_bytes")
e3b8a4858566 ("Btrfs: fix reported number of inode blocks after buffered append writes")
== Regression Potential ==
Low. This fix was also sent and accepted to stable, so it has had additional upstream review.
== Test Case ==
A test kernel was built with these patches and tested by the original bug reporter.
The bug reporter states the test kernel resolved the bug.
root at ubuntu:~# lsb_release -rd
Description: Ubuntu 17.10
Release: 17.10
root at ubuntu:~# apt-cache policy linux-image-virtual
linux-image-virtual:
Installed: 4.13.0.37.40
Candidate: 4.13.0.37.40
Version table:
*** 4.13.0.37.40 500
500 http://archive.ubuntu.com/ubuntu artful-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu artful-security/main amd64 Packages
100 /var/lib/dpkg/status
4.13.0.16.17 500
500 http://archive.ubuntu.com/ubuntu artful/main amd64 Packages
3. Taring files into an archive are not truncated
4. Files included in tar are filled with NULLs
To reproduce, run an Artful system with one spare disk:
- mkfs.btrfs -f /dev/sda
- mount /dev/sda /mnt
- grep sda /proc/mounts
/dev/sda /mnt btrfs rw,relatime,space_cache,subvolid=5,subvol=/ 0 0
Then run this script which copies a 4MB binary to a btrfs filesystem,
tars the directory up containing the binary; then untars to stdout and
md5sum compares, showing it's different.
% SPARSE="-S"; rm -rf /mnt/tmp; md5sum /usr/bin/python3.6; mkdir -p /mnt/tmp; cp -a /usr/bin/python3.6 /mnt/tmp; tar -C /mnt/tmp $SPARSE -czf /mnt/test.tgz .; tar $SPARSE -xzf /mnt/test.tgz -O | md5sum
e4121d2f3126b8c364bfa1aaa82371a3 /usr/bin/python3.6
0ce8c4139740198926273853defcb12a -
And now without the sparse flag:
# SPARSE=""; rm -rf /mnt/tmp; md5sum /usr/bin/python3.6; mkdir -p /mnt/tmp; cp -a /usr/bin/python3.6 /mnt/tmp; tar -C /mnt/tmp $SPARSE -czf /mnt/test.tgz .; tar $SPARSE -xzf /mnt/test.tgz -O | md5sum
e4121d2f3126b8c364bfa1aaa82371a3 /usr/bin/python3.6
e4121d2f3126b8c364bfa1aaa82371a3 -
This has been reported to both gnu-tar and linux-btrfs; I'm not aware of an actual fix.
Note that Xenial 4.4 kernels do not exhibit this behavior, and Bionic 4.15 kernel appears to be fixed as well though I'm not sure what the difference is.
References:
https://patchwork.kernel.org/patch/10151037/
https://www.spinics.net/lists/linux-btrfs/msg56768.html
https://www.spinics.net/lists/linux-btrfs/msg57111.html
ProblemType: Bug
DistroRelease: Ubuntu 17.10
Package: linux-image-virtual 4.13.0.37.40
ProcVersionSignature: Ubuntu 4.13.0-37.42-generic 4.13.13
Uname: Linux 4.13.0-37-generic x86_64
AlsaDevices:
total 0
crw-rw---- 1 root audio 116, 1 Mar 21 22:55 seq
crw-rw---- 1 root audio 116, 33 Mar 21 22:55 timer
AplayDevices: Error: [Errno 2] No such file or directory: 'aplay': 'aplay'
ApportVersion: 2.20.7-0ubuntu3.7
Architecture: amd64
ArecordDevices: Error: [Errno 2] No such file or directory: 'arecord': 'arecord'
AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/seq', '/dev/snd/timer'] failed with exit code 1:
CRDA: N/A
Date: Wed Mar 21 23:08:05 2018
IwConfig: Error: [Errno 2] No such file or directory: 'iwconfig': 'iwconfig'
Lsusb: Error: command ['lsusb'] failed with exit code 1:
MachineType: QEMU Standard PC (i440FX + PIIX, 1996)
PciMultimedia:
ProcEnviron:
TERM=xterm-256color
PATH=(custom, no user)
LANG=C.UTF-8
SHELL=/bin/bash
ProcFB:
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.13.0-37-generic root=LABEL=cloudimg-rootfs ro console=tty1 console=ttyS0
RelatedPackageVersions:
linux-restricted-modules-4.13.0-37-generic N/A
linux-backports-modules-4.13.0-37-generic N/A
linux-firmware N/A
RfKill: Error: [Errno 2] No such file or directory: 'rfkill': 'rfkill'
SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 04/01/2014
dmi.bios.vendor: SeaBIOS
dmi.bios.version: Ubuntu-1.8.2-1ubuntu1
dmi.chassis.type: 1
dmi.chassis.vendor: QEMU
dmi.chassis.version: pc-i440fx-xenial
dmi.modalias: dmi:bvnSeaBIOS:bvrUbuntu-1.8.2-1ubuntu1:bd04/01/2014:svnQEMU:pnStandardPC(i440FX+PIIX,1996):pvrpc-i440fx-xenial:cvnQEMU:ct1:cvrpc-i440fx-xenial:
dmi.product.name: Standard PC (i440FX + PIIX, 1996)
dmi.product.version: pc-i440fx-xenial
dmi.sys.vendor: QEMU
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1757565/+subscriptions
More information about the foundations-bugs
mailing list