Subject: Issue in grub-probe when boot device is located on device mapper partition.
Hi,
I've hit an issue when trying to reinstall grub on my system.
My /boot partition is located on /dev/mapper/pdc_djabadcbjep1 device.
However, when grub-install executes grub-probe -t fs /boot, and the latter one starts probing the filesystem, it incorrectly tries to open hostdisk//dev/mapper/pdc_djabadcbje device instead of hostdisk//dev/mapper/pdc_djabadcbje,msdos1.
Here's verbose output of grub-probe:
# grub2-probe -v -t fs /boot/
grub2-probe: info: cannot open `/boot/grub2/device.map': No such file or directory.
grub2-probe: info: Looking for /dev/mapper/pdc_djabadcbjep1.
grub2-probe: info: /dev/mapper/pdc_djabadcbje is a parent of /dev/mapper/pdc_djabadcbjep1.
grub2-probe: info: Looking for /dev/mapper/pdc_djabadcbjep1.
grub2-probe: info: /dev/mapper/pdc_djabadcbje is a parent of /dev/mapper/pdc_djabadcbjep1.
grub2-probe: info: Looking for /dev/mapper/pdc_djabadcbjep1.
grub2-probe: info: /dev/mapper/pdc_djabadcbje is a parent of /dev/mapper/pdc_djabadcbjep1.
grub2-probe: info: opening hostdisk//dev/mapper/pdc_djabadcbje.
grub2-probe: info: the size of hostdisk//dev/mapper/pdc_djabadcbje is 1953124992.
grub2-probe: error: unknown filesystem.
I think that the issue is in util/get_root.c in convert_system_partition_to_system_disk() function - it does not seem to determine if the device is partition or not for device-mapper case.
The following change seems to fix the issue, however I'm not really familiar with device mapper and can't be sure if it's correct:
/* Counter-intuitively, device-mapper refers to the disk-like
device containing a DM-RAID partition device as a "child" of
the partition device. */
child = dm_tree_next_child (&handle, node, 0);
if (! child)
{
grub_util_info ("%s has no DM children", path);
goto devmapper_out;
}
+ *is_part = 1;
child_uuid = dm_tree_node_get_uuid (child);
if (! child_uuid)
{
grub_util_info ("%s child has no DM uuid", path);
goto devmapper_out;
}
--
--
Regards,
Eldar Yusupov.