29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5 in btrfs_kernel_fixes failed on T

Bug #1809868 reported by Po-Hsu Lin on 2018-12-27
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ubuntu-kernel-tests
Undecided
Po-Hsu Lin
linux (Ubuntu)
Undecided
Po-Hsu Lin
Trusty
Medium
Po-Hsu Lin

Bug Description

== Justification ==
When doing an incremental send on a Btrfs filesystem, if we delete a directory that has N > 1 hardlinks for the same file and that file has the highest inode number inside the directory contents, an incremental send would send N times rmdir operation against the directory. This made the btrfs receive command fail on the second rmdir instruction, as the target directory didn't exist anymore.

This issue can be triggered with 29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5
test in ubuntu_btrfs_kernel_fixes test suite.

The test will fail with:
  "ERROR: rmdir o259-6-0 failed. No such file or directory" with Trusty kernel.

Performing full device TRIM (1.00GiB) ...
Turning ON incompat feature 'extref': increased hardlink limit per file to 65536

WARNING! - Btrfs v3.12 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using

fs created label (null) on /dev/loop0
 nodesize 16384 leafsize 16384 sectorsize 4096 size 1.00GiB
Btrfs v3.12
Create a readonly snapshot of '/tmp/mnt-29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5' in '/tmp/mnt-29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5/snap1'
At subvol /tmp/mnt-29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5/snap1
Create a readonly snapshot of '/tmp/mnt-29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5' in '/tmp/mnt-29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5/snap2'
At subvol /tmp/mnt-29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5/snap2
Performing full device TRIM (1.00GiB) ...
Turning ON incompat feature 'extref': increased hardlink limit per file to 65536

WARNING! - Btrfs v3.12 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using

fs created label (null) on /dev/loop0
 nodesize 16384 leafsize 16384 sectorsize 4096 size 1.00GiB
Btrfs v3.12
At subvol snap1
At snapshot snap2
ERROR: rmdir o259-6-0 failed. No such file or directory
incremental receive failed

== Fix ==
29d6d30f5 (Btrfs: send, don't send rmdir for same target multiple times)
This patch needs to be backported for a variable difference in the process_recorded_refs function.

In the Trusty tree:
static int process_recorded_refs(struct send_ctx *sctx)

In the patch:
static int process_recorded_refs(struct send_ctx *sctx, int *pending_move)

As the new *pending_move is unrelated here, we can just backport the patch with the same logic in this function.

A test kernel could be found here:
http://people.canonical.com/~phlin/kernel/lp-1809868-btrfs-2nd-rmdir/
This test will pass with this kernel.

== Regression potential ==
Low,
this patch just adds an extra check to skip unnecessary rmdir operations.

ProblemType: Bug
DistroRelease: Ubuntu 14.04
Package: linux-image-3.13.0-164-generic 3.13.0-164.214
ProcVersionSignature: User Name 3.13.0-164.214-generic 3.13.11-ckt39
Uname: Linux 3.13.0-164-generic x86_64
AlsaDevices:
 total 0
 crw-rw---- 1 root audio 116, 1 Dec 27 03:14 seq
 crw-rw---- 1 root audio 116, 33 Dec 27 03:14 timer
AplayDevices: Error: [Errno 2] No such file or directory: 'aplay'
ApportVersion: 2.14.1-0ubuntu3.29
Architecture: amd64
ArecordDevices: Error: [Errno 2] No such file or directory: 'arecord'
AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/seq', '/dev/snd/timer'] failed with exit code 1:
CurrentDmesg:
 [13958.095408] btrfs: device fsid da34075a-4eaa-4e50-aeea-02206e8c8e44 devid 1 transid 4 /dev/loop0
 [13958.102670] btrfs: device fsid da34075a-4eaa-4e50-aeea-02206e8c8e44 devid 1 transid 4 /dev/loop0
 [13958.105901] btrfs: device fsid da34075a-4eaa-4e50-aeea-02206e8c8e44 devid 1 transid 4 /dev/loop0
 [13958.106099] btrfs: disk space caching is enabled
 [13958.107771] btrfs: creating UUID tree
Date: Thu Dec 27 07:11:58 2018
IwConfig: Error: [Errno 2] No such file or directory: 'iwconfig'
Lsusb: Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
MachineType: QEMU Standard PC (i440FX + PIIX, 1996)
PciMultimedia:

ProcFB: 0 cirrusdrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.13.0-164-generic root=UUID=576666e8-9e7f-40ee-934e-f1dce18323e5 ro console=ttyS0,115200n8
RelatedPackageVersions:
 linux-restricted-modules-3.13.0-164-generic N/A
 linux-backports-modules-3.13.0-164-generic N/A
 linux-firmware 1.127.24
RfKill: Error: [Errno 2] No such file or directory: 'rfkill'
SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
WifiSyslog:

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

Po-Hsu Lin (cypressyew) wrote :

This change was made by a bot.

Changed in linux (Ubuntu):
status: New → Confirmed
Po-Hsu Lin (cypressyew) wrote :

It appears to be an error in command "btrfs receive -f $TMP/incremental.send $MNT" [1]

This command will return 1 and complains about:
"ERROR: rmdir o259-6-0 failed. No such file or directory"

[1] https://kernel.ubuntu.com/git/ubuntu/autotest-client-tests.git/tree/ubuntu_btrfs_kernel_fixes/fixes/29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5.sh#n39

Po-Hsu Lin (cypressyew) on 2019-01-03
Changed in ubuntu-kernel-tests:
assignee: nobody → Po-Hsu Lin (cypressyew)
Changed in linux (Ubuntu):
assignee: nobody → Po-Hsu Lin (cypressyew)
Changed in ubuntu-kernel-tests:
status: New → In Progress
Changed in linux (Ubuntu):
status: Confirmed → In Progress
Po-Hsu Lin (cypressyew) on 2019-01-03
description: updated
description: updated
Po-Hsu Lin (cypressyew) on 2019-01-03
description: updated
Changed in linux (Ubuntu Trusty):
status: New → In Progress
assignee: nobody → Po-Hsu Lin (cypressyew)
Changed in linux (Ubuntu):
status: In Progress → Invalid
Stefan Bader (smb) on 2019-01-09
Changed in linux (Ubuntu Trusty):
importance: Undecided → Medium
Changed in linux (Ubuntu Trusty):
status: In Progress → Fix Committed
Brad Figg (brad-figg) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-trusty' to 'verification-done-trusty'. If the problem still exists, change the tag 'verification-needed-trusty' to 'verification-failed-trusty'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-trusty
Po-Hsu Lin (cypressyew) wrote :

Passed with the Trusty SRU.

tags: added: verification-done-trusty
removed: verification-needed-trusty
Changed in ubuntu-kernel-tests:
status: In Progress → Fix Released
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package linux - 3.13.0-165.215

---------------
linux (3.13.0-165.215) trusty; urgency=medium

  * linux: 3.13.0-165.215 -proposed tracker (LP: #1811856)

  * CVE-2018-17972
    - proc: restrict kernel stack dumps to root

  * CVE-2018-18281
    - mremap: properly flush TLB before releasing the page

  * 29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5 in btrfs_kernel_fixes failed on T
    (LP: #1809868)
    - Btrfs: send, don't send rmdir for same target multiple times

  * CVE-2018-9568
    - net: Set sk_prot_creator when cloning sockets to the right proto

  * CVE-2018-1066
    - cifs: empty TargetInfo leads to crash on recovery

 -- Khalid Elmously <email address hidden> Wed, 16 Jan 2019 06:19:08 +0000

Changed in linux (Ubuntu Trusty):
status: Fix Committed → Fix Released
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers