Print this page
2741 format shouldn't allow write SMI label to disk with EFI partition
*** 1561,1584 ****
/* Ask user what label to use */
fmt_print("[0] SMI Label\n");
fmt_print("[1] EFI Label\n");
ioparam.io_bounds.lower = 0;
ioparam.io_bounds.upper = 1;
! if (cur_label == L_TYPE_SOLARIS)
! deflt = 0;
else
! deflt = 1;
defltptr = &deflt;
choice = input(FIO_INT, "Specify Label type", ':',
&ioparam, defltptr, DATA_INPUT);
! if ((choice == 0) && (cur_label == L_TYPE_SOLARIS)) {
goto expert_end;
! } else if ((choice == 1) && (cur_label == L_TYPE_EFI)) {
goto expert_end;
}
switch (choice) {
! case 0:
/*
* EFI label to SMI label
*/
if (cur_dtype->capacity > INFINITY) {
fmt_print("Warning: SMI labels only support up to "
--- 1561,1588 ----
/* Ask user what label to use */
fmt_print("[0] SMI Label\n");
fmt_print("[1] EFI Label\n");
ioparam.io_bounds.lower = 0;
ioparam.io_bounds.upper = 1;
! if ((cur_label == L_TYPE_SOLARIS) &&
! (cur_disk->fdisk_part.systid != EFI_PMBR))
! deflt = L_TYPE_SOLARIS;
else
! deflt = L_TYPE_EFI;
defltptr = &deflt;
choice = input(FIO_INT, "Specify Label type", ':',
&ioparam, defltptr, DATA_INPUT);
! if ((choice == L_TYPE_SOLARIS) &&
! (cur_label == L_TYPE_SOLARIS) &&
! (cur_disk->fdisk_part.systid != EFI_PMBR)) {
goto expert_end;
! } else if ((choice == L_TYPE_EFI) &&
! (cur_label == L_TYPE_EFI)) {
goto expert_end;
}
switch (choice) {
! case L_TYPE_SOLARIS:
/*
* EFI label to SMI label
*/
if (cur_dtype->capacity > INFINITY) {
fmt_print("Warning: SMI labels only support up to "
*** 1646,1667 ****
err_print("Label failed.\n");
return (-1);
}
! case 1:
/*
* SMI label to EFI label
*/
!
! fmt_print("Warning: This disk has an SMI label. Changing to "
! "EFI label will erase all\ncurrent partitions.\n");
!
if (check("Continue")) {
return (-1);
}
if (get_disk_info(cur_file, &efinfo) != 0) {
return (-1);
}
(void) memset((char *)&label, 0, sizeof (struct dk_label));
--- 1650,1673 ----
err_print("Label failed.\n");
return (-1);
}
! case L_TYPE_EFI:
/*
* SMI label to EFI label
*/
! if ((cur_disk->fdisk_part.systid == SUNIXOS) ||
! (cur_disk->fdisk_part.systid == SUNIXOS2)) {
! fmt_print("Warning: This disk has an SMI label. "
! "Changing to EFI label will erase all\ncurrent "
! "partitions.\n");
if (check("Continue")) {
return (-1);
}
+ }
if (get_disk_info(cur_file, &efinfo) != 0) {
return (-1);
}
(void) memset((char *)&label, 0, sizeof (struct dk_label));