svn commit: r294073 - head/sys/boot/efi/loader

Allan Jude allanjude at FreeBSD.org
Fri Jan 15 05:45:47 UTC 2016


Author: allanjude
Date: Fri Jan 15 05:45:45 2016
New Revision: 294073
URL: https://svnweb.freebsd.org/changeset/base/294073

Log:
  Connect the ZFS boot environment menu to the UEFI loader
  
  MFC after:	3 days
  Sponsored by:	ScaleEngine Inc.

Modified:
  head/sys/boot/efi/loader/main.c

Modified: head/sys/boot/efi/loader/main.c
==============================================================================
--- head/sys/boot/efi/loader/main.c	Fri Jan 15 05:45:10 2016	(r294072)
+++ head/sys/boot/efi/loader/main.c	Fri Jan 15 05:45:45 2016	(r294073)
@@ -199,6 +199,7 @@ main(int argc, CHAR16 *argv[])
 			   efi_setcurrdev, env_nounset);
 		env_setenv("loaddev", EV_VOLATILE, efi_fmtdev(&currdev), env_noset,
 			   env_nounset);
+		init_zfs_bootenv(zfs_fmtdev(&currdev));
 		break;
 	}
 #endif
@@ -507,6 +508,38 @@ command_lszfs(int argc, char *argv[])
 	}
 	return (CMD_OK);
 }
+
+COMMAND_SET(reloadbe, "reloadbe", "refresh the list of ZFS Boot Environments",
+	    command_reloadbe);
+
+static int
+command_reloadbe(int argc, char *argv[])
+{
+	int err;
+	char *root;
+
+	if (argc > 2) {
+		command_errmsg = "wrong number of arguments";
+		return (CMD_ERROR);
+	}
+
+	if (argc == 2) {
+		err = zfs_bootenv(argv[1]);
+	} else {
+		root = getenv("zfs_be_root");
+		if (root == NULL) {
+			return (CMD_OK);
+		}
+		err = zfs_bootenv(root);
+	}
+
+	if (err != 0) {
+		command_errmsg = strerror(err);
+		return (CMD_ERROR);
+	}
+
+	return (CMD_OK);
+}
 #endif
 
 #ifdef LOADER_FDT_SUPPORT


More information about the svn-src-all mailing list