mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
zipl_helper.device-mapper: Add missed step in logical device resolution
Steps to reproduce the problem:
\# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 5G 0 loop
|-loop0p1 253:15 0 128M 0 part
`-loop0p2 253:16 0 4.9G 0 part /mnt
\# ./zipl_helper.device-mapper 253:16
Expected result:
targetbase=7:0
targettype=SCSI
targetblocksize=4096
targetoffset=32784
Actual result:
targetbase=253:16
targettype=SCSI
targetblocksize=4096
targetoffset=32784
The problem is in a missed step which resolves the uppermost
logical dm-device to a physical device. Reproducible only for loop
devices.
Add missing step to correctly resolve to a physical device.
Fixes: 670bf3e870 ("zipl: refactor zipl_helper.device-mapper")
Signed-off-by: Eduard Shishkin <edward6@linux.ibm.com>
Acked-by: Jan Höppner <hoeppner@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
committed by
Jan Höppner
parent
560b276f7e
commit
3db20bccef
@@ -1306,13 +1306,13 @@ static int complete_physical_device(struct physical_device *pd, dev_t *base_dev)
|
|||||||
*base_dev = base_entry->dev.dev;
|
*base_dev = base_entry->dev.dev;
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* In this case base device is the uppermost logical
|
* In this case base device is the uppermost physical
|
||||||
* device which provides access to boot sectors
|
* device which provides access to boot sectors
|
||||||
*/
|
*/
|
||||||
base_entry = find_base_entry(pd->dmpath, dc->bootsectors);
|
base_entry = find_base_entry(pd->dmpath, dc->bootsectors);
|
||||||
if (!base_entry)
|
if (!base_entry)
|
||||||
return -1;
|
return -1;
|
||||||
*base_dev = base_entry->dev.dev;
|
*base_dev = first_device_by_target_data(base_entry->target);
|
||||||
}
|
}
|
||||||
/* Check for valid offset of filesystem */
|
/* Check for valid offset of filesystem */
|
||||||
if ((pd->offset % (dc->blocksize / SECTOR_SIZE)) != 0) {
|
if ((pd->offset % (dc->blocksize / SECTOR_SIZE)) != 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user