Fix up Jammy loop block devices (LP: #2056143)

Stefan Bader stefan.bader at canonical.com
Tue Mar 5 08:04:22 UTC 2024


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

== SRU Justification ==

-- Impact --
In 22.04/Jammy with the GA 5.15 kernel there was an upstream change preventing
partition table operations when GENHD_FL_NO_PART is set.

 1a721de8489f "block: don't add or resize partition on the disk with GENHD_FL_NO_PART"

Beside of changing return codes and breaking some user-space that way this also
causes loop block devices to no longer be able to have partitions manually
created. This is because the loop block driver uses GENHD_FL_NO_PART to prevent
active partition scans.

-- Fix --
This was changed in 5.19 (and thus Mantic is not affected) by introducing a
separate flag to prevent those scans:

 b9684a71fca7 "block, loop: support partitions without scanning"

The fix depends on a larger rewrite so it cannot be simply picked. The biggest
change from the original is moving the check for the new flag into a helper
function in genhd.h which checks whether a disk should be scanned for partitions.
That function was dropped with the upstream rewrite and checking moved into the
loop driver directly. But it felt like adjusting the helper was the better
approach.

-- Testcase --
$ fallocate -l 1G /tmp/blob
$ LOOPDEV=$(sudo losetup --find --show /tmp/blob)
$ sudo /usr/sbin/parted -s -m -a optimal $LOOPDEV -- unit KiB mklabel gpt mkpart primary 0% 100%

-- Regression Potential --
If things go wrong it might be other devices which no longer get scanned
automatically or other issues with the loop block driver.



More information about the kernel-team mailing list