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;
|
||||
} 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
|
||||
*/
|
||||
base_entry = find_base_entry(pd->dmpath, dc->bootsectors);
|
||||
if (!base_entry)
|
||||
return -1;
|
||||
*base_dev = base_entry->dev.dev;
|
||||
*base_dev = first_device_by_target_data(base_entry->target);
|
||||
}
|
||||
/* Check for valid offset of filesystem */
|
||||
if ((pd->offset % (dc->blocksize / SECTOR_SIZE)) != 0) {
|
||||
|
||||
Reference in New Issue
Block a user