Date: Tue, 2 Oct 2012 04:41:44 +0000 (UTC) From: Peter Grehan <grehan@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r241121 - in projects/bhyve/sys/boot: common userboot/userboot Message-ID: <201210020441.q924filC069244@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: grehan Date: Tue Oct 2 04:41:43 2012 New Revision: 241121 URL: http://svn.freebsd.org/changeset/base/241121 Log: Fix the error return in disk_readslicetab() when an MBR/GPT partition wasn't found, and use that in userdisk_open() to allow raw disks and ISO images to be read. This is a temporary fix - disk.c has changed a lot in CURRENT so this code may be reworked or made redundant on the next IFC. It is useful to be able to boot from CD in the meantime. Modified: projects/bhyve/sys/boot/common/disk.c projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c Modified: projects/bhyve/sys/boot/common/disk.c ============================================================================== --- projects/bhyve/sys/boot/common/disk.c Tue Oct 2 04:36:37 2012 (r241120) +++ projects/bhyve/sys/boot/common/disk.c Tue Oct 2 04:41:43 2012 (r241121) @@ -192,6 +192,7 @@ disk_readslicetab(struct disk_devdesc *d */ if (buf[0x1fe] != 0x55 || buf[0x1ff] != 0xaa) { DEBUG("no slice table/MBR (no magic)"); + rc = EEXIST; return (rc); } Modified: projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c ============================================================================== --- projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c Tue Oct 2 04:36:37 2012 (r241120) +++ projects/bhyve/sys/boot/userboot/userboot/userboot_disk.c Tue Oct 2 04:41:43 2012 (r241121) @@ -103,6 +103,7 @@ userdisk_open(struct open_file *f, ...) { va_list ap; struct disk_devdesc *dev; + int rc; va_start(ap, f); dev = va_arg(ap, struct disk_devdesc *); @@ -111,7 +112,15 @@ userdisk_open(struct open_file *f, ...) if (dev->d_unit < 0 || dev->d_unit >= userboot_disk_maxunit) return (EIO); - return (disk_open(dev)); + rc = disk_open(dev); + + /* + * No MBR/GPT - assume a raw disk image + */ + if (rc) + dev->d_offset = 0; + + return (0); } static int
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201210020441.q924filC069244>