summaryrefslogtreecommitdiffstats
path: root/sys/boot/ia64
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2010-01-09 22:54:29 +0000
committermarcel <marcel@FreeBSD.org>2010-01-09 22:54:29 +0000
commite1c64beebc41d28b21e9e6b120a7a361bd6acd52 (patch)
tree10075f9ec03989accec7e9481bd42bccf1d14068 /sys/boot/ia64
parent8a9b761eedfbc1dde4efb8333b61da39c37e9af0 (diff)
downloadFreeBSD-src-e1c64beebc41d28b21e9e6b120a7a361bd6acd52.zip
FreeBSD-src-e1c64beebc41d28b21e9e6b120a7a361bd6acd52.tar.gz
Remove file system support based on the simple file system protocol
as this only allows us to access file systems that EFI knows about. With a loader that can only use EFI-supported file systems, we're forced to put /boot on the EFI system partition. This is suboptimal in the following ways: 1. With /boot a symlink to /efi/boot, mergemaster complains about the mismatch and there's no quick solution. 2. The EFI loader can only boot a single version of FreeBSD. There's no way to install multiple versions of FreeBSD and select one at the loader prompt. 3. ZFS maintains /boot/zfs/zpool.cache and with /boot a symlink we end up with the file on a MSDOS file system. ZFS does not have proper handling of file systems that are under Giant. Implement a disk device based on the block I/O protocol instead and pull in file system code from libstand. The disk devices are really the partitions that EFI knows about. This change is backward compatible. MFC after: 1 week
Diffstat (limited to 'sys/boot/ia64')
-rw-r--r--sys/boot/ia64/efi/conf.c7
-rw-r--r--sys/boot/ia64/efi/version3
2 files changed, 7 insertions, 3 deletions
diff --git a/sys/boot/ia64/efi/conf.c b/sys/boot/ia64/efi/conf.c
index a72f79f..69d0927 100644
--- a/sys/boot/ia64/efi/conf.c
+++ b/sys/boot/ia64/efi/conf.c
@@ -49,15 +49,16 @@ __FBSDID("$FreeBSD$");
/* Exported for libstand */
struct devsw *devsw[] = {
- &efifs_dev,
+ &efipart_dev,
&efinet_dev,
NULL
};
struct fs_ops *file_system[] = {
- &efifs_fsops,
- &nfs_fsops,
+ &dosfs_fsops,
&ufs_fsops,
+ &cd9660_fsops,
+ &nfs_fsops,
&gzipfs_fsops,
NULL
};
diff --git a/sys/boot/ia64/efi/version b/sys/boot/ia64/efi/version
index 7d7f566..37a71c3 100644
--- a/sys/boot/ia64/efi/version
+++ b/sys/boot/ia64/efi/version
@@ -3,6 +3,9 @@ $FreeBSD$
NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
file is important. Make sure the current version number is on line 6.
+2.0: Provide devices based on the block I/O protocol, rather than the
+ simple file services protocol. Use the FreeBSD file system code
+ on top of those devices to access files.
1.2: Restructured. Has some user visible differences.
1.1: Pass the HCDP table address to the kernel via bootinfo if one
is present in the EFI system table.
OpenPOWER on IntegriCloud