2018-12-27 07:20:04 |
Po-Hsu Lin |
bug |
|
|
added bug |
2018-12-27 07:30:07 |
Ubuntu Kernel Bot |
linux (Ubuntu): status |
New |
Confirmed |
|
2019-01-02 10:35:57 |
Po-Hsu Lin |
nominated for series |
|
Ubuntu Trusty |
|
2019-01-02 10:36:50 |
Po-Hsu Lin |
bug task added |
|
ubuntu-kernel-tests |
|
2019-01-03 07:22:56 |
Po-Hsu Lin |
ubuntu-kernel-tests: assignee |
|
Po-Hsu Lin (cypressyew) |
|
2019-01-03 07:22:58 |
Po-Hsu Lin |
linux (Ubuntu): assignee |
|
Po-Hsu Lin (cypressyew) |
|
2019-01-03 07:23:00 |
Po-Hsu Lin |
ubuntu-kernel-tests: status |
New |
In Progress |
|
2019-01-03 07:23:03 |
Po-Hsu Lin |
linux (Ubuntu): status |
Confirmed |
In Progress |
|
2019-01-03 10:52:33 |
Po-Hsu Lin |
description |
Test failed with "ERROR: rmdir o259-6-0 failed. No such file or directory" on Trusty.
Invoking test 29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5
fix 29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5
Btrfs: send, don't send rmdir for same target multiple times
When doing an incremental send, 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 an
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.
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
It seems that commit 29d6d30f5c8aa58b04f40a58442df3bcaae5a1d5 does not exist in Trusty tree.
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 |
== 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 failed 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 to Trusty for a variable difference in the process_recorded_refs function.
In 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 make it 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 |
|
2019-01-03 10:54:13 |
Po-Hsu Lin |
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 failed 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 to Trusty for a variable difference in the process_recorded_refs function.
In 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 make it 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 |
== 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 to Trusty for a variable difference in the process_recorded_refs function.
In 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 make it 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 |
|
2019-01-03 10:58:22 |
Po-Hsu Lin |
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 to Trusty for a variable difference in the process_recorded_refs function.
In 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 make it 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 |
== 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 |
|
2019-01-08 13:11:28 |
Kleber Sacilotto de Souza |
bug task added |
|
linux (Ubuntu Trusty) |
|
2019-01-08 13:11:34 |
Kleber Sacilotto de Souza |
linux (Ubuntu Trusty): status |
New |
In Progress |
|
2019-01-08 13:12:34 |
Kleber Sacilotto de Souza |
linux (Ubuntu Trusty): assignee |
|
Po-Hsu Lin (cypressyew) |
|
2019-01-08 13:12:39 |
Kleber Sacilotto de Souza |
linux (Ubuntu): status |
In Progress |
Invalid |
|
2019-01-09 10:46:46 |
Stefan Bader |
linux (Ubuntu Trusty): importance |
Undecided |
Medium |
|
2019-01-10 02:23:52 |
Khaled El Mously |
linux (Ubuntu Trusty): status |
In Progress |
Fix Committed |
|
2019-01-17 17:03:47 |
Brad Figg |
tags |
amd64 apport-bug trusty uec-images |
amd64 apport-bug trusty uec-images verification-needed-trusty |
|
2019-01-22 03:54:06 |
Po-Hsu Lin |
tags |
amd64 apport-bug trusty uec-images verification-needed-trusty |
amd64 apport-bug trusty uec-images verification-done-trusty |
|
2019-01-22 03:54:55 |
Po-Hsu Lin |
ubuntu-kernel-tests: status |
In Progress |
Fix Released |
|
2019-02-04 08:47:17 |
Launchpad Janitor |
linux (Ubuntu Trusty): status |
Fix Committed |
Fix Released |
|
2019-02-04 08:47:17 |
Launchpad Janitor |
cve linked |
|
2018-1066 |
|
2019-02-04 08:47:17 |
Launchpad Janitor |
cve linked |
|
2018-17972 |
|
2019-02-04 08:47:17 |
Launchpad Janitor |
cve linked |
|
2018-18281 |
|
2019-02-04 08:47:17 |
Launchpad Janitor |
cve linked |
|
2018-9568 |
|
2019-02-04 08:47:17 |
Launchpad Janitor |
linux (Ubuntu Trusty): status |
Fix Committed |
Fix Released |
|
2019-07-24 21:33:04 |
Brad Figg |
tags |
amd64 apport-bug trusty uec-images verification-done-trusty |
amd64 apport-bug cscc trusty uec-images verification-done-trusty |
|