svn commit: r271501 - user/nwhitehorn/bsdinstall_zfspartedit/partedit
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Sat Sep 13 06:45:06 UTC 2014
Author: nwhitehorn
Date: Sat Sep 13 06:45:04 2014
New Revision: 271501
URL: http://svnweb.freebsd.org/changeset/base/271501
Log:
Untested, but simple, machine-dependent screening of bootable root file
system types.
Modified:
user/nwhitehorn/bsdinstall_zfspartedit/partedit/gpart_ops.c
user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit.h
user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_generic.c
user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_pc98.c
user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_powerpc.c
user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_sparc64.c
user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_x86.c
Modified: user/nwhitehorn/bsdinstall_zfspartedit/partedit/gpart_ops.c
==============================================================================
--- user/nwhitehorn/bsdinstall_zfspartedit/partedit/gpart_ops.c Sat Sep 13 06:34:31 2014 (r271500)
+++ user/nwhitehorn/bsdinstall_zfspartedit/partedit/gpart_ops.c Sat Sep 13 06:45:04 2014 (r271501)
@@ -994,6 +994,21 @@ addpartform:
goto addpartform;
}
+ /* If this is the root partition, check that this file system is
+ * bootable */
+ if (strcmp(items[2].text, "/") == 0 && !is_fs_bootable(scheme,
+ items[0].text)) {
+ char message[512];
+ sprintf(message, "This file system (%s) is not bootable "
+ "on this system. Are you sure you want to proceed?",
+ items[0].text);
+ dialog_vars.defaultno = TRUE;
+ choice = dialog_yesno("Warning", message, 0, 0);
+ dialog_vars.defaultno = FALSE;
+ if (choice == 1) /* cancel */
+ goto addpartform;
+ }
+
/*
* If this is the root partition, and we need a boot partition, ask
* the user to add one.
Modified: user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit.h
==============================================================================
--- user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit.h Sat Sep 13 06:34:31 2014 (r271500)
+++ user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit.h Sat Sep 13 06:45:04 2014 (r271501)
@@ -77,6 +77,7 @@ void set_default_part_metadata(const cha
/* machine-dependent bootability checks */
const char *default_scheme(void);
int is_scheme_bootable(const char *scheme);
+int is_fs_bootable(const char *scheme, const char *fs);
size_t bootpart_size(const char *scheme);
const char *bootpart_type(const char *scheme);
const char *bootcode_path(const char *scheme);
Modified: user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_generic.c
==============================================================================
--- user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_generic.c Sat Sep 13 06:34:31 2014 (r271500)
+++ user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_generic.c Sat Sep 13 06:45:04 2014 (r271501)
@@ -50,6 +50,11 @@ is_scheme_bootable(const char *part_type
return (1);
}
+int
+is_fs_bootable(const char *part_type, const char *fs) {
+ return (1);
+}
+
/* No clue => no boot partition, bootcode, or partcode */
size_t
Modified: user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_pc98.c
==============================================================================
--- user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_pc98.c Sat Sep 13 06:34:31 2014 (r271500)
+++ user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_pc98.c Sat Sep 13 06:45:04 2014 (r271501)
@@ -45,6 +45,15 @@ is_scheme_bootable(const char *part_type
return (0);
}
+int
+is_fs_bootable(const char *part_type, const char *fs)
+{
+ if (strcmp(fs, "freebsd-ufs") == 0)
+ return (1);
+
+ return (0);
+}
+
size_t
bootpart_size(const char *part_type) {
/* No boot partition */
Modified: user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_powerpc.c
==============================================================================
--- user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_powerpc.c Sat Sep 13 06:34:31 2014 (r271500)
+++ user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_powerpc.c Sat Sep 13 06:45:04 2014 (r271501)
@@ -67,6 +67,15 @@ is_scheme_bootable(const char *part_type
return (0);
}
+int
+is_fs_bootable(const char *part_type, const char *fs)
+{
+ if (strcmp(fs, "freebsd-ufs") == 0)
+ return (1);
+
+ return (0);
+}
+
size_t
bootpart_size(const char *part_type) {
size_t platlen = sizeof(platform);
Modified: user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_sparc64.c
==============================================================================
--- user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_sparc64.c Sat Sep 13 06:34:31 2014 (r271500)
+++ user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_sparc64.c Sat Sep 13 06:45:04 2014 (r271501)
@@ -42,6 +42,15 @@ is_scheme_bootable(const char *part_type
return (0);
}
+int
+is_fs_bootable(const char *part_type, const char *fs)
+{
+ if (strcmp(fs, "freebsd-ufs") == 0 || strcmp(fs, "freebsd-zfs") == 0)
+ return (1);
+ return (0);
+}
+
+
size_t
bootpart_size(const char *part_type) {
/* No standalone boot partition */
Modified: user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_x86.c
==============================================================================
--- user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_x86.c Sat Sep 13 06:34:31 2014 (r271500)
+++ user/nwhitehorn/bsdinstall_zfspartedit/partedit/partedit_x86.c Sat Sep 13 06:45:04 2014 (r271501)
@@ -58,6 +58,21 @@ is_scheme_bootable(const char *part_type
return (0);
}
+int
+is_fs_bootable(const char *part_type, const char *fs) {
+ size_t platlen = sizeof(platform);
+ if (strlen(platform) == 0)
+ sysctlbyname(platform_sysctl, platform, &platlen, NULL, -1);
+
+ if (strcmp(fs, "freebsd-ufs") == 0)
+ return (1);
+
+ if (strcmp(fs, "freebsd-zfs") == 0 && strcmp(platform, "BIOS") == 0)
+ return (1);
+
+ return (0);
+}
+
size_t
bootpart_size(const char *scheme) {
size_t platlen = sizeof(platform);
More information about the svn-src-user
mailing list