[Bug 1733276] Re: Cannot resize partitions on NVME devices due to bad device name parsing
Aydin Doyak
aydin.doyak at canonical.com
Thu Feb 8 14:27:28 UTC 2018
Hello all,
I've also tested below procedure to see if there's any impacts on
resizing "non-NVMe" devices by using the mini.iso enabling the installer
to fetch necessarry components from -proposed.
Here's the mini.iso URL I've tested:
http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/installer-
amd64/20101020ubuntu451.18/images/netboot/mini.iso
Test phases:
1. Created a QEMU-KVM virtual machine with qcow2 formatted IDE BUS disk (/dev/sda)
2.I installed a Ubuntu 16.04 system on that qemu-kvm virtual machine via passing "apt-setup/proposed=true" value to the installers boot parameters without problem. I also used guided partitioning on the disks and continued with the installation.
3. I ensured that the VM is working without problems after installation.
4. I rebooted the VM with that mini.iso again with the same "apt-setup/proposed=true" parameter value to the ubuntu installer and resized the disk succesfully to an another size. Installed the system again on the new partitions without problems.
5. Ensured that the VM is working without problems after installation.
-
Aydin
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to partman-partitioning in Ubuntu.
https://bugs.launchpad.net/bugs/1733276
Title:
Cannot resize partitions on NVME devices due to bad device name
parsing
Status in partman-partitioning:
Fix Released
Status in partman-partitioning package in Ubuntu:
Fix Released
Status in partman-partitioning source package in Trusty:
Fix Committed
Status in partman-partitioning source package in Xenial:
Fix Committed
Status in partman-partitioning source package in Zesty:
Won't Fix
Status in partman-partitioning source package in Artful:
Fix Committed
Status in partman-partitioning source package in Bionic:
Fix Released
Bug description:
[Impact]
It is not possible to resize NVME partitions in the Ubiquity installer.
NVME devices have an unusual device format, specifically e.g. /dev/nvme0n1p1 that has two 'sections' that potentially look like partitions.
Based on the error message, it seems that this device name is being
parsed incorrectly and it attempts to use the device path /dev/nvme0n1
instead of /dev/nvme0n1p1
** See attachment (screenshot) took in action, illustrating the problem:
- resize.png
- resize_impossible.png
- console_log.png
[Test Case]
To test component(s) in -proposed
--------------------
https://wiki.ubuntu.com/Testing/EnableProposed
[Section: Installation testing using -proposed]
In order to install successfully from these images, you will normally
need to tell the installer to fetch its own components from -proposed
as well, which is not the default. To do this, add the following boot
parameter:
apt-setup/proposed=true
--------------------
You can test this using qemu and a virtual NVME device. If you toggle
the same device/partition between a virtual SCSI/IDE and an NVME
device - the issue appears and disappears.
Commands you can use to replicate the issue - unpack netboot.tar.gz
into the local directory and then
dd if=/dev/zero of=nvme.disk bs=1M count=16384
NVME:
qemu-system-x86_64 -drive file=nvme.disk,if=none,id=drv0,format=raw -device nvme,drive=drv0,serial=foo -enable-kvm -smp 2 -m 1024 -kernel xenial/ubuntu-installer/amd64/linux -initrd xenial/ubuntu-installer/amd64/initrd.gz
SCSI:
qemu-system-x86_64 -drive file=nvme.disk,if=none,id=drv0,format=raw -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drv0,id=virtio-disk0,bootindex=1 -enable-kvm -smp 2 -m 1024 -kernel ubuntu-installer/amd64/linux -initrd ubuntu-installer/amd64/initrd.gz
** See attachment (screenshot) took in action, illustrating how the installer should react with the fix :
xenial_with_fix1.png
xenial_with_fix2.png
xenial_with_fix3.png
xenial_console_with_fix.png
[Regression Potential]
* Low risk of regression, with this patch, partman, will be more robust and align with what disk_name() in the kernel does (linux.git/tree/block/partition-generic.c). It is sufficient to check
whether the last character is a digit.
* The patch may also fixes (or at least prevent for the future) other
potential similar devices issue and not only explicitly fixing and/or
benefit NVMe device types.
[Other Info]
* Debian upstream bug :
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=820818
* Debian upstream fix :
https://anonscm.debian.org/cgit/d-i/partman-partitioning.git/commit/?id=01087125e07a7b22da589e8116f9ef7a26275006
* Commit [01087125]
Make get_real_device() both simpler and more generic (See: #820818).
Looking at the implementation of the disk_name() function in the kernel
(linux.git/tree/block/partition-generic.c), it is sufficient to check
whether the last character is a digit.
* $ git describe --contains 01087125e07a7b22da589e8116f9ef7a26275006
116~2
* $ rmadison partman-partitioning
partman-partitioning | 85ubuntu2 | precise/main/debian-installer
partman-partitioning | 99ubuntu1 | trusty/main/debian-installer
partman-partitioning | 110ubuntu4.1 | xenial-updates/main/debian-installer
partman-partitioning | 114ubuntu2 | zesty/main/debian-installer
partman-partitioning | 114ubuntu2 | artful/main/debian-installer
partman-partitioning | 120ubuntu1 | bionic/main/debian-installer
[Original Description]
It is not possible to resize NVME partitions in the Ubiquity
installer. This appears to affect multiple filesystem types including
NTFS and ext4.
NVME devices have an unusual device format, specifically e.g.
/dev/nvme0n1p1 that has two 'sections' that potentially look like
partitions.
Based on the error message, it seems that this device name is being
parsed incorrectly and it attempts to use the device path /dev/nvme0n1
instead of /dev/nvme0n1p1
You can test this using qemu and a virtual NVME device. If you toggle
the same device/partition between a virtual SCSI/IDE and an NVME
device - the issue appears and disappears.
Commands you can use to replicate the issue - unpack netboot.tar.gz
into the local directory and then
dd if=/dev/zero of=nvme.disk bs=1M count=16384
NVME:
qemu-system-x86_64 -drive file=nvme.disk,if=none,id=drv0,format=raw -device nvme,drive=drv0,serial=foo -enable-kvm -smp 2 -m 1024 -kernel xenial/ubuntu-installer/amd64/linux -initrd xenial/ubuntu-installer/amd64/initrd.gz
SCSI:
qemu-system-x86_64 -drive file=nvme.disk,if=none,id=drv0,format=raw -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drv0,id=virtio-disk0,bootindex=1 -enable-kvm -smp 2 -m 1024 -kernel ubuntu-installer/amd64/linux -initrd ubuntu-installer/amd64/initrd.gz
To manage notifications about this bug go to:
https://bugs.launchpad.net/partman-partitioning/+bug/1733276/+subscriptions
More information about the foundations-bugs
mailing list