BLKDISCARD fails on LUKS volume hosting LVM PV

Bug #1920821 reported by Julian Andres Klode
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Linux
Fix Released
Medium
linux (Ubuntu)
New
Undecided
Unassigned
Hirsute
New
Undecided
Unassigned

Bug Description

Creating a logical volume and destroying it fails to discard the volume, on an encrypted installation. This can significantly increase wear on SSDs when a lot of LVs are created and destroyed.

jak@jak-t480s:~:master$ sudo lvcreate -L 10G -n foo ubuntu-vg
  Logical volume "foo" created.
jak@jak-t480s:~:master$ sudo strace -e ioctl blkdiscard /dev/ubuntu-vg/foo
ioctl(3, BLKGETSIZE64, [10737418240]) = 0
ioctl(3, BLKSSZGET, [512]) = 0
ioctl(3, BLKGETSIZE64, [10737418240]) = 0
ioctl(3, BLKSSZGET, [512]) = 0
ioctl(3, BLKDISCARD, [0, 10737418240]) = 0
+++ exited with 0 +++
jak@jak-t480s:~:master$ sudo strace -e ioctl lvremove ubuntu-vg/foo
ioctl(3, BLKGETSIZE64, [512110190592]) = 0
ioctl(3, BLKGETSIZE64, [119226368]) = 0
ioctl(3, DM_VERSION, {version=4.0.0, data_size=16384, flags=DM_EXISTS_FLAG} => {version=4.43.0, data_size=16384, flags=DM_EXISTS_FLAG}) = 0
ioctl(3, DM_TABLE_STATUS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG} => {version=4.43.0, data_size=353, data_start=312, dev=makedev(0xfd, 0), name="crypt", uuid="CRYPT-LUKS1-c9
12d3ffa2a8470ca2d5b692dce44cf6-crypt", target_count=1, open_count=7, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG, ...}) = 0
ioctl(4, BLKGETSIZE64, [510802264064]) = 0
ioctl(4, BLKGETSIZE64, [536870912]) = 0
ioctl(4, BLKGETSIZE64, [119230464]) = 0
ioctl(3, DM_TABLE_STATUS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0x1), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG} => {version=4.43.0, data_size=689, data_start=312, dev=makedev(0xfd, 0x1), name="ubuntu--vg-home", uuid="
LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe551v5TRqeQCqIesHAmG1c0dwlmKXl9xMIw", target_count=8, open_count=1, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG, ...}) = 0
ioctl(4, BLKGETSIZE64, [767557632]) = 0
ioctl(4, BLKGETSIZE64, [145514496]) = 0
ioctl(3, DM_TABLE_STATUS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0x2), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG} => {version=4.43.0, data_size=353, data_start=312, dev=makedev(0xfd, 0x2), name="ubuntu--vg-Bilder", uuid
="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55UAS6RI8aa0FetNkIOLdnVWrxmarwmh0e", target_count=1, open_count=1, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG, ...}) = 0
ioctl(4, BLKGETSIZE64, [510804361216]) = 0
ioctl(4, BLKGETSIZE64, [160391168]) = 0
ioctl(3, DM_TABLE_STATUS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0x3), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG} => {version=4.43.0, data_size=449, data_start=312, dev=makedev(0xfd, 0x3), name="ubuntu--vg-root", uuid="
LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55PolGi3ucaez6iDooYagnyVkjDaQyK0vC", target_count=3, open_count=1, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG, ...}) = 0
ioctl(4, BLKGETSIZE64, [104026112]) = 0
ioctl(3, DM_TABLE_STATUS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0x4), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG} => {version=4.43.0, data_size=353, data_start=312, dev=makedev(0xfd, 0x4), name="ubuntu--vg-swap", uuid="
LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55Lt8YyRRIrjAEwO3RvIiEDEgO4tiB05gc", target_count=1, open_count=2, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG, ...}) = 0
ioctl(4, BLKGETSIZE64, [64585728]) = 0
ioctl(3, DM_TABLE_STATUS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0x5), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG} => {version=4.43.0, data_size=353, data_start=312, dev=makedev(0xfd, 0x5), name="ubuntu--vg-vm--centos",
uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55Me2phVV2rbdcbbe6Jqeg88NBUMiIktwe", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG, ...}) = 0
ioctl(4, BLKGETSIZE64, [104030208]) = 0
ioctl(3, DM_TABLE_STATUS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0x6), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG} => {version=4.43.0, data_size=353, data_start=312, dev=makedev(0xfd, 0x6), name="ubuntu--vg-lxd", uuid="L
VM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55bP231cY9OsazoSfVV0IReQo2bpqJ52hX", target_count=1, open_count=1, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG, ...}) = 0
ioctl(4, BLKGETSIZE64, [58073088]) = 0
ioctl(3, DM_TABLE_STATUS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0x7), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG} => {version=4.43.0, data_size=353, data_start=312, dev=makedev(0xfd, 0x7), name="ubuntu--vg-foo", uuid="L
VM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG, ...}) = 0
ioctl(4, BLKGETSIZE64, [64626688]) = 0
ioctl(4, BLKGETSIZE64, [251187200]) = 0
ioctl(4, BLKGETSIZE64, [24576]) = 0
ioctl(4, BLKGETSIZE64, [116129792]) = 0
ioctl(4, BLKGETSIZE64, [152182784]) = 0
ioctl(4, BLKGETSIZE64, [24576]) = 0
ioctl(4, BLKGETSIZE64, [164261888]) = 0
ioctl(4, BLKGETSIZE64, [162983936]) = 0
ioctl(4, BLKGETSIZE64, [118456320]) = 0
ioctl(4, BLKGETSIZE64, [147488768]) = 0
ioctl(4, BLKGETSIZE64, [152199168]) = 0
ioctl(4, BLKGETSIZE64, [169254912]) = 0
ioctl(4, BLKGETSIZE64, [147501056]) = 0
ioctl(4, BLKGETSIZE64, [58159104]) = 0
ioctl(4, BLKGETSIZE64, [170778624]) = 0
ioctl(4, BLKGETSIZE64, [145547264]) = 0
ioctl(4, BLKGETSIZE64, [7491584]) = 0
ioctl(4, BLKGETSIZE64, [130760704]) = 0
ioctl(4, BLKGETSIZE64, [72015872]) = 0
ioctl(4, BLKGETSIZE64, [35610624]) = 0
ioctl(4, BLKGETSIZE64, [229629952]) = 0
ioctl(4, BLKGETSIZE64, [72065024]) = 0
ioctl(4, BLKGETSIZE64, [30892032]) = 0
ioctl(4, BLKGETSIZE64, [230596608]) = 0
ioctl(4, BLKGETSIZE64, [53501952]) = 0
ioctl(4, BLKGETSIZE64, [53522432]) = 0
ioctl(4, BLKGETSIZE64, [72974336]) = 0
ioctl(4, BLKGETSIZE64, [140472320]) = 0
ioctl(4, BLKGETSIZE64, [162983936]) = 0
ioctl(4, BLKGETSIZE64, [72069120]) = 0
ioctl(4, BLKGETSIZE64, [228478976]) = 0
ioctl(4, BLKGETSIZE64, [188289024]) = 0
ioctl(4, BLKGETSIZE64, [95731712]) = 0
ioctl(4, BLKGETSIZE64, [67915776]) = 0
ioctl(4, BLKGETSIZE64, [230596608]) = 0
ioctl(4, BLKGETSIZE64, [72765440]) = 0
ioctl(4, BLKGETSIZE64, [94121984]) = 0
ioctl(4, BLKGETSIZE64, [34992128]) = 0
ioctl(4, BLKGETSIZE64, [7491584]) = 0
ioctl(4, BLKGETSIZE64, [30892032]) = 0
ioctl(4, BLKGETSIZE64, [251142144]) = 0
ioctl(4, BLKGETSIZE64, [188170240]) = 0
ioctl(4, BLKGETSIZE64, [67477504]) = 0
ioctl(4, BLKGETSIZE64, [0]) = 0
ioctl(3, DM_TABLE_STATUS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG} => {version=4.43.0, data_size=353, data_start=312, dev=makedev(0xfd, 0), name="crypt", uuid="CRYPT-LUKS1-c912d3ffa2a8470ca2d5b692dce44cf6-crypt", target_count=1, open_count=8, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG|DM_NOFLUSH_FLAG, ...}) = 0
ioctl(3, DM_DEV_STATUS, {version=4.0.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", flags=DM_EXISTS_FLAG|DM_SKIP_BDGET_FLAG} => {version=4.43.0, data_size=305, dev=makedev(0xfd, 0x7), name="ubuntu--vg-foo", uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG}) = 0
ioctl(3, DM_DEV_STATUS, {version=4.0.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", flags=DM_EXISTS_FLAG|DM_SKIP_BDGET_FLAG} => {version=4.43.0, data_size=305, dev=makedev(0xfd, 0x7), name="ubuntu--vg-foo", uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG}) = 0
ioctl(3, DM_DEV_STATUS, {version=4.0.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", flags=DM_EXISTS_FLAG} => {version=4.43.0, data_size=305, dev=makedev(0xfd, 0x7), name="ubuntu--vg-foo", uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_ACTIVE_PRESENT_FLAG}) = 0
Do you really want to remove and DISCARD active logical volume ubuntu-vg/foo? [y/n]: y
ioctl(3, DM_DEV_STATUS, {version=4.0.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", flags=DM_EXISTS_FLAG|DM_SKIP_BDGET_FLAG} => {version=4.43.0, data_size=305, dev=makedev(0xfd, 0x7), name="ubuntu--vg-foo", uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_SKIP_BDGET_FLAG}) = 0
ioctl(3, DM_DEV_STATUS, {version=4.0.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", flags=DM_EXISTS_FLAG} => {version=4.43.0, data_size=305, dev=makedev(0xfd, 0x7), name="ubuntu--vg-foo", uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_ACTIVE_PRESENT_FLAG}) = 0
ioctl(3, DM_DEV_STATUS, {version=4.0.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", flags=DM_EXISTS_FLAG} => {version=4.43.0, data_size=305, dev=makedev(0xfd, 0x7), name="ubuntu--vg-foo", uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_ACTIVE_PRESENT_FLAG}) = 0
ioctl(3, DM_VERSION, {version=4.0.0, data_size=16384, flags=DM_EXISTS_FLAG} => {version=4.43.0, data_size=16384, flags=DM_EXISTS_FLAG}) = 0
ioctl(3, DM_TABLE_DEPS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0x7), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG} => {version=4.43.0, data_size=328, data_start=312, dev=makedev(0xfd, 0x7), name="ubuntu--vg-foo", uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG, ...}) = 0
ioctl(3, DM_TABLE_DEPS, {version=4.0.0, data_size=16384, data_start=312, dev=makedev(0xfd, 0), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG} => {version=4.43.0, data_size=328, data_start=312, dev=makedev(0xfd, 0), name="crypt", uuid="CRYPT-LUKS1-c912d3ffa2a8470ca2d5b692dce44cf6-crypt", target_count=1, open_count=8, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG, ...}) = 0
ioctl(3, DM_DEV_STATUS, {version=4.0.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0-real", flags=DM_EXISTS_FLAG} => {version=4.43.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0-real", flags=DM_EXISTS_FLAG}) = -1 ENXIO (No such device or address)
ioctl(3, DM_DEV_STATUS, {version=4.0.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0-cow", flags=DM_EXISTS_FLAG} => {version=4.43.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0-cow", flags=DM_EXISTS_FLAG}) = -1 ENXIO (No such device or address)
ioctl(3, DM_DEV_STATUS, {version=4.0.0, data_size=16384, dev=makedev(0xfd, 0x7), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG} => {version=4.43.0, data_size=305, dev=makedev(0xfd, 0x7), name="ubuntu--vg-foo", uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG}) = 0
ioctl(3, DM_DEV_REMOVE, {version=4.0.0, data_size=16384, dev=makedev(0xfd, 0x7), event_nr=6305658, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG} => {version=4.43.0, data_size=305, dev=makedev(0xfd, 0x7), name="ubuntu--vg-foo", uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_SKIP_BDGET_FLAG|DM_UEVENT_GENERATED_FLAG}) = 0
ioctl(3, DM_DEV_STATUS, {version=4.0.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", flags=DM_EXISTS_FLAG|DM_SKIP_BDGET_FLAG} => {version=4.43.0, data_size=16384, uuid="LVM-VOD619tlON0EhlOYmUbw4JUMQAnNHe55o3FhgBMf2RZriV5fKsfLEPpGFqL2L7A0", flags=DM_EXISTS_FLAG|DM_SKIP_BDGET_FLAG}) = -1 ENXIO (No such device or address)
ioctl(4, BLKDISCARD, [136009744384, 10737418240]) = -1 EBUSY (Device or resource busy)
  /dev/mapper/crypt: BLKDISCARD ioctl at offset 136009744384 size 10737418240 failed: Device or resource busy.
ioctl(5, BLKPBSZGET, [512]) = 0
ioctl(5, BLKSSZGET, [512]) = 0
  Logical volume "foo" successfully removed
+++ exited with 0 +++

ProblemType: Bug
DistroRelease: Ubuntu 21.04
Package: linux-image-5.11.0-11-generic 5.11.0-11.12
ProcVersionSignature: Ubuntu 5.11.0-11.12-generic 5.11.0
Uname: Linux 5.11.0-11-generic x86_64
NonfreeKernelModules: zfs zunicode zavl icp zcommon znvpair
ApportVersion: 2.20.11-0ubuntu60
Architecture: amd64
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC2: jak 8321 F.... pulseaudio
 /dev/snd/controlC1: jak 8321 F.... pulseaudio
 /dev/snd/controlC0: jak 8321 F.... pulseaudio
CasperMD5CheckResult: unknown
CurrentDesktop: GNOME
Date: Mon Mar 22 21:44:18 2021
HibernationDevice: RESUME=none
InstallationDate: Installed on 2018-03-14 (1104 days ago)
InstallationMedia: Ubuntu 18.04 LTS "Bionic Beaver" - Alpha amd64 (20180313)
MachineType: LENOVO 20L8S02D00
ProcFB: 0 i915drmfb
ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-5.11.0-11-generic root=/dev/mapper/ubuntu--vg-root ro rootflags=subvol=@ quiet splash
RelatedPackageVersions:
 linux-restricted-modules-5.11.0-11-generic N/A
 linux-backports-modules-5.11.0-11-generic N/A
 linux-firmware 1.195
SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 06/04/2020
dmi.bios.release: 1.42
dmi.bios.vendor: LENOVO
dmi.bios.version: N22ET65W (1.42 )
dmi.board.asset.tag: Not Available
dmi.board.name: 20L8S02D00
dmi.board.vendor: LENOVO
dmi.board.version: Not Defined
dmi.chassis.asset.tag: No Asset Information
dmi.chassis.type: 10
dmi.chassis.vendor: LENOVO
dmi.chassis.version: None
dmi.ec.firmware.release: 1.20
dmi.modalias: dmi:bvnLENOVO:bvrN22ET65W(1.42):bd06/04/2020:br1.42:efr1.20:svnLENOVO:pn20L8S02D00:pvrThinkPadT480s:rvnLENOVO:rn20L8S02D00:rvrNotDefined:cvnLENOVO:ct10:cvrNone:
dmi.product.family: ThinkPad T480s
dmi.product.name: 20L8S02D00
dmi.product.sku: LENOVO_MT_20L8_BU_Think_FM_ThinkPad T480s
dmi.product.version: ThinkPad T480s
dmi.sys.vendor: LENOVO

Revision history for this message
Julian Andres Klode (juliank) wrote :
Revision history for this message
Julian Andres Klode (juliank) wrote :
Revision history for this message
Julian Andres Klode (juliank) wrote :

Should be fixed in 5.10.24, 5.11.7 and 5.12-rc3 according to the internet

Revision history for this message
Julian Andres Klode (juliank) wrote :

I verified that mainline ppa build 5.11.8-051108-generic works

Changed in linux:
importance: Unknown → Medium
status: Unknown → Fix Released
Revision history for this message
Juerg Haefliger (juergh) wrote :

Hmm.. The referenced commit [1] is in 5.11.0-11 (which is based on stable 5.11.7).

[1]
commit 73dfbeb7fdb1c9f1f1dc991e3ea10f4c3fd8a7fb
Author: Jan Kara <email address hidden>
Date: Mon Feb 22 10:48:09 2021 +0100

    block: Try to handle busy underlying device on discard

    BugLink: https://bugs.launchpad.net/bugs/1919492

    commit 56887cffe946bb0a90c74429fa94d6110a73119d upstream.

    Commit 384d87ef2c95 ("block: Do not discard buffers under a mounted
    filesystem") made paths issuing discard or zeroout requests to the
    underlying device try to grab block device in exclusive mode. If that
    failed we returned EBUSY to userspace. This however caused unexpected
    fallout in userspace where e.g. FUSE filesystems issue discard requests
    from userspace daemons although the device is open exclusively by the
    kernel. Also shrinking of logical volume by LVM issues discard requests
    to a device which may be claimed exclusively because there's another LV
    on the same PV. So to avoid these userspace regressions, fall back to
    invalidate_inode_pages2_range() instead of returning EBUSY to userspace
    and return EBUSY only of that call fails as well (meaning that there's
    indeed someone using the particular device range we are trying to
    discard).

Revision history for this message
Julian Andres Klode (juliank) wrote :

Let me try 5.11.6 and 5.11.7 mainline then...

Revision history for this message
Julian Andres Klode (juliank) wrote :

Reference 1 - Ubuntu kernel 5.11.0-11-generic:

jak@jak-t480s:~:master$ sudo lvcreate -L 1G -n foo ubuntu-vg
  Logical volume "foo" created.
jak@jak-t480s:~:master$ sudo lvremove ubuntu-vg/foo
Do you really want to remove and DISCARD active logical volume ubuntu-vg/foo? [y/n]: y
  /dev/mapper/crypt: BLKDISCARD ioctl at offset 72717697024 size 1073741824 failed: Device or resource busy.
  Logical volume "foo" successfully removed
jak@jak-t480s:~:master$ uname -a
Linux jak-t480s 5.11.0-11-generic #12-Ubuntu SMP Mon Mar 1 19:26:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Revision history for this message
Julian Andres Klode (juliank) wrote :

5.11.6 bad, 5.11.7 good

@juerg I think you are getting your kernels confused; 5.11.0-11 seems to be based on 5.11 + some cherry-picks, not 5.11.7; 5.11.7 tracking bug is bug 1919492, which is not yet fixed.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.