URL: <https://savannah.gnu.org/bugs/?62197>
Summary: grub-install fails if ZFS root pool is in degraded state Project: GNU GRUB Submitted by: prakashsurya Submitted on: Fri 18 Mar 2022 05:37:32 PM UTC Category: None Severity: Major Priority: 5 - Normal Item Group: None Status: None Privacy: Public Assigned to: None Originator Name: Originator Email: Open/Closed: Open Release: Release: other Discussion Lock: Any Reproducibility: None Planned Release: None _______________________________________________________ Details: I have a system with a root ZFS pool that's DEGRADED: $ zpool status -v pool: rpool state: DEGRADED status: One or more devices has experienced an unrecoverable error. An attempt was made to correct the error. Applications are unaffected. action: Determine if the device needs to be replaced, and clear the errors using 'zpool clear' or replace the device with 'zpool replace'. see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-9P config: NAME STATE READ WRITE CKSUM rpool DEGRADED 0 0 0 sda1 DEGRADED 0 0 0 too many errors errors: No known data errors In this state, "grub-install" will fail: grub-install: error: failed to get canonical path of `rpool/grub'. If I apply the following patch, "grub-install" works properly: --- a/grub-core/osdep/unix/getroot.c +++ b/grub-core/osdep/unix/getroot.c @@ -296,7 +296,7 @@ grub_util_find_root_devices_from_poolname (char *poolname) && !sscanf (name, "raidz1%u", &dummy) && !sscanf (name, "raidz2%u", &dummy) && !sscanf (name, "raidz3%u", &dummy) - && !strcmp (state, "ONLINE")) + && (!strcmp (state, "ONLINE") || !strcmp (state, "DEGRADED"))) { if (ndevices >= devices_allocated) { _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?62197> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/