Public bug reported: When attempting to remove multiple logical volumes (LVs) with the `lvremove -y` command, if any of the LVs are in use, the command fails but still causes the LVs to disappear from the system. However, these LVs reappear upon reactivating the volume group (VG), indicating they were not properly removed. This behavior can lead to confusion and inconsistent state of the VG and LVs. Expected behavior would either fully remove all not-in-use LVs or leave all LVs unchanged if any LV cannot be removed due to being in use.
The expected behavior, observed in previous versions, was to fully remove all not-in-use LVs while leaving the ones that are in use unchanged. This regression in functionality can disrupt workflows that rely on lvremove to accurately reflect the state of LVs post-operation, leading to administrative confusion and potential data management issues. Environments: Affected: - LVM versions: LVM version: 2.03.16(2) (2022-05-18) Library version: 1.02.185 (2022-05-18) Driver version: 4.48.0 - Operating System: Ubuntu 23.10 Unaffected: - LVM versions: LVM version: 2.03.11(2) (2021-01-08) Library version: 1.02.175 (2021-01-08) Driver version: 4.48.0 - Operating System: Ubuntu 22.04 Script to Reproduce: ``` #!/bin/bash IFS=$'\n\t' set -euox pipefail echo ==== Setup cd $(mktemp -d) dd if=/dev/zero of=bug.img bs=1G count=1 loop=$(losetup -fP bug.img --show) pvcreate $loop vgcreate bug_vg $loop lvcreate -L 4M -n p1 bug_vg lvcreate -L 4M -n p2 bug_vg lvcreate -L 4M -n p3 bug_vg mkfs.fat /dev/mapper/bug_vg-p2 mkdir x mount /dev/mapper/bug_vg-p2 x echo ==== Setup done, bug_vg p2 is now in use lsblk $loop set +e # this command exits with exit code 5 lvremove -y /dev/bug_vg/* echo $? set -e lsblk $loop echo ==== Activate the vg again vgchange -aay bug_vg echo ==== Observe removed LVs are back lsblk $loop umount x rmdir x echo ==== bug_vg p2 is no longer in use, remove again lvremove -y /dev/bug_vg/* lsblk $loop echo ==== Activate the vg again vgchange -aay bug_vg echo ==== Observe removed LVs stay gone this time lsblk $loop echo cleanup vgremove bug_vg pvremove $loop losetup -d $loop rm bug.img ``` ** Affects: lvm2 (Ubuntu) Importance: Undecided Status: New ** Tags: lvm lvm2 lvremove ** Attachment added: "Bash script that reproduces the issue using a loopback device" https://bugs.launchpad.net/bugs/2054131/+attachment/5746672/+files/reproducer.sh -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to lvm2 in Ubuntu. https://bugs.launchpad.net/bugs/2054131 Title: Regression: lvremove fails to remove all LVs if one is in use Status in lvm2 package in Ubuntu: New Bug description: When attempting to remove multiple logical volumes (LVs) with the `lvremove -y` command, if any of the LVs are in use, the command fails but still causes the LVs to disappear from the system. However, these LVs reappear upon reactivating the volume group (VG), indicating they were not properly removed. This behavior can lead to confusion and inconsistent state of the VG and LVs. Expected behavior would either fully remove all not-in-use LVs or leave all LVs unchanged if any LV cannot be removed due to being in use. The expected behavior, observed in previous versions, was to fully remove all not-in-use LVs while leaving the ones that are in use unchanged. This regression in functionality can disrupt workflows that rely on lvremove to accurately reflect the state of LVs post- operation, leading to administrative confusion and potential data management issues. Environments: Affected: - LVM versions: LVM version: 2.03.16(2) (2022-05-18) Library version: 1.02.185 (2022-05-18) Driver version: 4.48.0 - Operating System: Ubuntu 23.10 Unaffected: - LVM versions: LVM version: 2.03.11(2) (2021-01-08) Library version: 1.02.175 (2021-01-08) Driver version: 4.48.0 - Operating System: Ubuntu 22.04 Script to Reproduce: ``` #!/bin/bash IFS=$'\n\t' set -euox pipefail echo ==== Setup cd $(mktemp -d) dd if=/dev/zero of=bug.img bs=1G count=1 loop=$(losetup -fP bug.img --show) pvcreate $loop vgcreate bug_vg $loop lvcreate -L 4M -n p1 bug_vg lvcreate -L 4M -n p2 bug_vg lvcreate -L 4M -n p3 bug_vg mkfs.fat /dev/mapper/bug_vg-p2 mkdir x mount /dev/mapper/bug_vg-p2 x echo ==== Setup done, bug_vg p2 is now in use lsblk $loop set +e # this command exits with exit code 5 lvremove -y /dev/bug_vg/* echo $? set -e lsblk $loop echo ==== Activate the vg again vgchange -aay bug_vg echo ==== Observe removed LVs are back lsblk $loop umount x rmdir x echo ==== bug_vg p2 is no longer in use, remove again lvremove -y /dev/bug_vg/* lsblk $loop echo ==== Activate the vg again vgchange -aay bug_vg echo ==== Observe removed LVs stay gone this time lsblk $loop echo cleanup vgremove bug_vg pvremove $loop losetup -d $loop rm bug.img ``` To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/2054131/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp