** Changed in: linux (Ubuntu Jammy)
Status: In Progress => Fix Committed
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/2107516
Title:
Mounting btrfs LVM volumes changes mountpoint location and breaks
lsblk output
Status in linux package in Ubuntu:
Invalid
Status in linux source package in Jammy:
Fix Committed
Bug description:
BugLink: https://bugs.launchpad.net/bugs/2107516
[Impact]
Since 5.15.0-136-generic, mounting btrfs LVM volumes changes behaviour in two
subtle ways.
The first, changes the mountpoint from
/dev/mapper/VG0-LV0
to
/dev/VG0/LV0
breaking any existing applications which rely on the volume being accessible
at
/dev/mapper.
The second, breaks lsblk displaying volume mountpoints when the volume is
mounted in duplicated places, e.g.:
sdb 8:16 0 9,1T 0 disk
└─sdb1 8:17 0 9,1T 0 part
└─hdd2 254:6 0 9,1T 0 crypt /mnt/hdd2
/var/cache/distfiles
/var/cache/binpkgs
becomes
sdb 8:16 0 9,1T 0 disk
└─sdb1 8:17 0 9,1T 0 part
└─hdd2 254:6 0 9,1T 0 crypt /mnt/hdd2
Only the first mountpoint is now displayed, where previously it would show
all of them.
[Fix]
The issue has been debugged in gentoo with the original patch author:
https://bugs.gentoo.org/947126
The findings were that the patch:
commit fc83c00ca63bc3a29778957170ccb96fabccf44c
Author: Qu Wenruo <[email protected]>
Date: Tue Sep 24 12:52:17 2024 +0930
Subject: btrfs: avoid unnecessary device path update for the same device
Link:
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy/commit/?id=fc83c00ca63bc3a29778957170ccb96fabccf44c
relies on the recent migration of btrfs to the new fsconfig mount API,
available
in 6.8 onwards.
The author tried to fix things up further, but only introduced more
regressions,
leading to the conclusion that this patch needs to be reverted for 5.15.
Hence, submitting a SAUCE patch to revert.
[Testcase]
Create a fresh VM, and attach a scratch disk to be used as a btrfs
volume.
$ uname -rv
5.15.0-127-generic #137-Ubuntu SMP Fri Nov 8 15:21:01 UTC 2024
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 252:0 0 10G 0 disk
├─vda1 252:1 0 9.9G 0 part /
├─vda14 252:14 0 4M 0 part
└─vda15 252:15 0 106M 0 part /boot/efi
vdb 252:16 0 372K 0 disk
vdc 252:32 0 5G 0 disk
$ sudo pvcreate /dev/vdc
Physical volume "/dev/vdc" successfully created.
$ sudo vgcreate VG0 /dev/vdc
Volume group "VG0" successfully created
$ sudo lvcreate -n LV0 -l 100%FREE VG0
Logical volume "LV0" created.
$ sudo mkfs.btrfs /dev/dm-0
$ sudo mkdir /mnt/a
$ sudo mkdir /mnt/b
$ sudo mkdir /mnt/c
$ sudo mount /dev/dm-0/mnt/a
$ sudo mount /dev/dm-0/mnt/b
$ sudo mount /dev/dm-0/mnt/c
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 252:0 0 10G 0 disk
├─vda1 252:1 0 9.9G 0 part /
├─vda14 252:14 0 4M 0 part
└─vda15 252:15 0 106M 0 part /boot/efi
vdb 252:16 0 372K 0 disk
vdc 252:32 0 5G 0 disk
└─VG0-LV0 253:0 0 5G 0 lvm /mnt/c
/mnt/b
/mnt/a
$ grep /mnt /proc/mounts
/dev/mapper/VG0-LV0 /mnt/a btrfs
rw,relatime,space_cache=v2,subvolid=5,subvol=/ 0 0
/dev/mapper/VG0-LV0 /mnt/b btrfs
rw,relatime,space_cache=v2,subvolid=5,subvol=/ 0 0
/dev/mapper/VG0-LV0 /mnt/c btrfs
rw,relatime,space_cache=v2,subvolid=5,subvol=/ 0 0
$ sudo apt install linux-image-5.15.0-136-generic linux-
modules-5.15.0-136-generic linux-modules-extra-5.15.0-136-generic
linux-headers-5.15.0-136-generic
$ uname -rv
5.15.0-136-generic #147-Ubuntu SMP Sat Mar 15 15:53:30 UTC 2025
$ ls /mnt
a b c
$ sudo mount /dev/dm-0/mnt/a
$ sudo mount /dev/dm-0/mnt/b
$ sudo mount /dev/dm-0/mnt/c
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 252:0 0 10G 0 disk
├─vda1 252:1 0 9.9G 0 part /
├─vda14 252:14 0 4M 0 part
└─vda15 252:15 0 106M 0 part /boot/efi
vdb 252:16 0 372K 0 disk
vdc 252:32 0 5G 0 disk
└─VG0-LV0 253:0 0 5G 0 lvm /mnt/c
$ grep /mnt /proc/mounts
/dev/mapper/VG0-LV0 /mnt/a btrfs
rw,relatime,space_cache=v2,subvolid=5,subvol=/ 0 0
/dev/mapper/VG0-LV0 /mnt/b btrfs
rw,relatime,space_cache=v2,subvolid=5,subvol=/ 0 0
/dev/mapper/VG0-LV0 /mnt/c btrfs
rw,relatime,space_cache=v2,subvolid=5,subvol=/ 0 0
$ sudo touch /dev/mapper/VG0-LV0
$ grep /mnt /proc/mounts
/dev/VG0/LV0 /mnt/a btrfs rw,relatime,space_cache=v2,subvolid=5,subvol=/ 0 0
/dev/VG0/LV0 /mnt/b btrfs rw,relatime,space_cache=v2,subvolid=5,subvol=/ 0 0
/dev/VG0/LV0 /mnt/c btrfs rw,relatime,space_cache=v2,subvolid=5,subvol=/ 0 0
[Where problems could occur]
We are changing how we check if devices are the same, and what happens if they
are. The original motivation behind the patch was to try avoid updating the
device paths on rescan from udev, but there is no evidence that this is even
a problem on 5.15, and the regressions from having the path names completely
changed and lsblk missing mountpoints outweighs any benefit of perceived
reductions in path updates on udev rescan.
We will go back to the original behaviour in 5.15.0-134-generic and earlier,
to keep things stable as they have been over jammy's lifecycle.
If a regression were to occur, it would affect btrfs mountpoints, and output
from lsblk showing duplicated mountpoints.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2107516/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp