On Tue, Sep 26, 2023 at 04:43:30PM +0800, Bin Meng wrote: > At present on Sandbox when binding to a host backing file, the host > block device is created with a hard-coded 512 bytes block size. > > Such assumption works for most cases, but for situation that with a raw > image file dump from a pre-formatted GPT partitioned disk image from a > 4KiB block size device, when binding this file to a host device and mapping > this device to a blkmap, "blkmap" command like "blkmap part" won't work > correctly, due to block size mismatch during parsing the partition table. > > This series updates Sandbox block driver, as well as the blkmap driver, > to get rid of the hard-coded 512 bytes block size assumption. > > This series is available at u-boot-x86/blk for testing. > > Test log (512 block size): > > => host bind 0 test.img > => host info > dev blocks blksz label path > 0 262144 512 0 test.img > => blkmap create 0 > Created "0" > => blkmap map 0 0 40000 linear host 0 0 > Block 0x0+0x40000 mapped to block 0x0 of "host 0" > => blkmap info > Device 0: Vendor: U-Boot Rev: 1.0 Prod: blkmap > Type: Hard Disk > Capacity: 128.0 MB = 0.1 GB (262144 x 512) > => blkmap part > > Partition Map for BLKMAP device 0 -- Partition Type: EFI > > Part Start LBA End LBA Name > Attributes > Type GUID > Partition GUID > 1 0x00000022 0x000000bd "u-boot-spl" > attrs: 0x0000000000000000 > type: 5b193300-fc78-40cd-8002-e86c45580b47 > (5b193300-fc78-40cd-8002-e86c45580b47) > guid: 0bb6bb6e-4aac-4c27-be03-016b01e7b941 > 2 0x00000822 0x00000c84 "u-boot" > attrs: 0x0000000000000000 > type: 2e54b353-1271-4842-806f-e436d6af6985 > (2e54b353-1271-4842-806f-e436d6af6985) > guid: 91d50814-8e31-4cc0-97dc-779e1dc59056 > 3 0x00000c85 0x0000cc84 "rootfs" > attrs: 0x0000000000000004 > type: 0fc63daf-8483-4772-8e79-3d69d8477de4 > (linux) > guid: 42799722-6e55-46e6-afa9-529e7af3f03b > > Test log (4096 block size): > > => host bind 0 test.img 4096 > => host info > dev blocks blksz label path > 0 32768 4096 0 test.img > => blkmap create 0 > Created "0" > => blkmap map 0 0 8000 linear host 0 0 > Block 0x0+0x8000 mapped to block 0x0 of "host 0" > => blkmap info > Device 0: Vendor: U-Boot Rev: 1.0 Prod: blkmap > Type: Hard Disk > Capacity: 128.0 MB = 0.1 GB (32768 x 4096) > => blkmap part > > Partition Map for BLKMAP device 0 -- Partition Type: EFI > > Part Start LBA End LBA Name > Attributes > Type GUID > Partition GUID > 1 0x00000100 0x00001fff "primary" > attrs: 0x0000000000000000 > type: 0fc63daf-8483-4772-8e79-3d69d8477de4 > (linux) > guid: eba904d7-72c1-4dbd-bb4e-36be49cba5e3 > 2 0x00002000 0x00007ffa "primary" > attrs: 0x0000000000000000 > type: 0fc63daf-8483-4772-8e79-3d69d8477de4 > (linux) > guid: c48c360e-db47-46da-ab87-26416fad3cd3
With minor changes to apply again, applied to u-boot/master, thanks! -- Tom
signature.asc
Description: PGP signature