ACK: [SRU Jammy v2] Fix up Jammy loop block devices (LP: #2056143)

Thibault Ferrante thibault.ferrante at canonical.com
Tue Mar 5 16:05:24 UTC 2024


Acked-by: Thibault Ferrante <thibault.ferrante at canonial.com>


On 05-03-2024 14:15, Stefan Bader wrote:
> 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.
> 
> v2 update: It was pointed out that the upstream fix was followed by a fixup
>   748008e1da92 "block: don't add partitions if GD_SUPPRESS_PART_SCAN is set"
> 
> I investigated this but found that in the 5.15 environment blk_add_partitions()
> is using disk_part_scan_enabled() which I modified instead of testing this in
> the loop driver locally. So incidentally this made things correct without the
> fixup.
> 
> -- 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.
> 


-- 
--
Thibault



More information about the kernel-team mailing list