install_grub: convert in-target EFI loader path to ESP path.
When calling efibootmgr convert esp-mount/efi-loader to efi-loader path,
as efibootmgr variable needs to be relative to the ESP mount point root,
rather than the in-target root.
block: fixes for verifying existing multipath partitions
Verifying a partition on a multipath disk currently fails for two
reasons:
1. get_blockdev_for_partition does not know how to go from a multipath
partition to a multipath disk, so sfdisk_info ends up calling sfdisk
on the partition, which fails.
2. sfdisk --json /dev/dm-X prints /dev/mapper paths for the partition
paths but compares them against the fully deferenced /dev/dm-Y path
for the partition.
2 is easily fixed by resolving symlinks before comparing nodes. 1
can be fixed with a little udev poking but then sys_block_path
returns paths like /sys/class/block/dm-1/dm-2 for a partition of
a multipath disk, which doesn't exist. Luckily, nodes for
partitions exist directly in /sys/class/block and have done since
/sys/class/block was added in 2008 (see kernel commit
edfaa7c36574f1bf09c65ad602412db9da5f96bf) so we can just remove
the call to get_blockdev_for_partition from sys_block_read.
multipath: use udev DM_NAME for find_mpath_id, fix 4k sector calc
1) find_mpath_id asked multipathd to list all maps and read out the name
(or wwid if no name) of the device from that and sometimes timed out,
but this information is already present in udev as DM_NAME. And
DM_NAME is the wwid if user_friendly_names is disabled, so there's no
need to be conditional about that either.
2) fix calculating start and offset of partition on multipathed 4k disk
calc_dm_partition_info returns start and offset in 512-byte sectors
but calc_partition_info only adjusted the sectors in the
non-multipath case.
I also did some code tidying, including moving the responsibility for
raising an exception if dmsetup produces no output to
calc_dm_partition_info.