loader(8): embedded MD should be the most preferred currdev

A loader built with MD_IMAGE_SIZE is almost always meant for use with
its embedded image and should try that as currdev before anything else.
Recent changes (d69fc3a9dc, 784150fd25) seem to have relaxed the ZFS
code's search for a rootfs and exposed this problem.

Reviewed by:	imp, tsoome
MFC after:	1 week
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D55979
This commit is contained in:
Navdeep Parhar
2026-03-19 17:39:17 -07:00
parent 17494c6e6b
commit 0661997cea
+9 -9
View File
@@ -597,6 +597,15 @@ find_currdev(bool do_bootmgr, char *boot_info, size_t boot_info_sz)
} /* Nothing specified, try normal match */
}
#ifdef MD_IMAGE_SIZE
/*
* If there is an embedded MD, try to use that.
*/
printf("Trying MD\n");
if (probe_md_currdev())
return (0);
#endif /* MD_IMAGE_SIZE */
#ifdef EFI_ZFS_BOOT
zfsinfo_list_t *zfsinfo = efizfs_get_zfsinfo_list();
zfsinfo_t *zi;
@@ -616,15 +625,6 @@ find_currdev(bool do_bootmgr, char *boot_info, size_t boot_info_sz)
}
#endif /* EFI_ZFS_BOOT */
#ifdef MD_IMAGE_SIZE
/*
* If there is an embedded MD, try to use that.
*/
printf("Trying MD\n");
if (probe_md_currdev())
return (0);
#endif /* MD_IMAGE_SIZE */
/*
* Try to find the block device by its handle based on the
* image we're booting. If we can't find a sane partition,