Index: bootadm/usr/src/cmd/boot/bootadm/bootadm_upgrade.c =================================================================== --- bootadm.orig/usr/src/cmd/boot/bootadm/bootadm_upgrade.c 2012-10-08 04:25:23.000000000 +0400 +++ bootadm/usr/src/cmd/boot/bootadm/bootadm_upgrade.c 2013-01-12 19:45:01.242071252 +0400 @@ -36,7 +36,6 @@ #include #include -#include #include "message.h" #include "bootadm.h" @@ -111,7 +110,6 @@ uchar_t *ident; int fd; int m; - multiboot_header_t *mbh; struct stat sb; int error; const char *fcn = "get_boot_cap()"; @@ -128,6 +126,10 @@ return (BAM_ERROR); } + bam_direct = BAM_DIRECT_DBOOT; + BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + return (BAM_SUCCESS); +#if 0 (void) snprintf(fname, PATH_MAX, "%s/%s", osroot, "platform/i86pc/kernel/unix"); fd = open(fname, O_RDONLY); @@ -204,6 +206,7 @@ BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); return (BAM_SUCCESS); +#endif } #define INST_RELEASE "var/sadm/system/admin/INST_RELEASE" Index: bootadm/usr/src/cmd/boot/bootadm/bootadm.c =================================================================== --- bootadm.orig/usr/src/cmd/boot/bootadm/bootadm.c 2013-01-12 19:40:33.628941536 +0400 +++ bootadm/usr/src/cmd/boot/bootadm/bootadm.c 2013-01-12 19:44:20.854943702 +0400 @@ -2393,13 +2393,10 @@ if (ret == BAM_ERROR) return (BAM_ERROR); } else { - int what = FILE32; - do { + int what = is_amd64() ? FILE64 : FILE32; ret = is_valid_archive(root, what); if (ret == BAM_ERROR) return (BAM_ERROR); - what++; - } while (bam_direct == BAM_DIRECT_DBOOT && what < CACHEDIR_NUM); } if (bam_nowrite()) @@ -2434,9 +2431,8 @@ set_dir_present(FILE64); } else { - int what = FILE32; + int what = is_amd64() ? FILE64 : FILE32; - do { if (set_cache_dir(root, what) != 0) return (BAM_ERROR); @@ -2444,17 +2440,18 @@ if (set_update_dir(root, what) != 0) return (BAM_ERROR); - what++; - } while (bam_direct == BAM_DIRECT_DBOOT && what < CACHEDIR_NUM); } /* * if force, create archive unconditionally */ if (bam_force) { - if (!is_sparc()) + if (is_sparc()) + set_dir_flag(FILE64, NEED_UPDATE); + else if (is_amd64()) + set_dir_flag(FILE64, NEED_UPDATE); + else set_dir_flag(FILE32, NEED_UPDATE); - set_dir_flag(FILE64, NEED_UPDATE); if (bam_verbose) bam_print(UPDATE_FORCE); return (BAM_SUCCESS); @@ -2681,7 +2678,6 @@ (void) snprintf(path, sizeof (path), "%s/%s", root, file); if (access(path, F_OK) < 0) { - int what; if (bam_verbose) bam_print(PARSEABLE_STALE_FILE, path); @@ -2689,7 +2685,7 @@ if (is_flag_on(IS_SPARC_TARGET)) { set_dir_flag(FILE64, NEED_UPDATE); } else { - for (what = FILE32; what < CACHEDIR_NUM; what++) + int what = is_amd64() ? FILE64 : FILE32; if (has_cachedir(what)) delete_stale(file, what); } @@ -3376,14 +3372,13 @@ /* If there is mkisofs, use it to create the required archives */ if (is_mkisofs()) { - for (what = FILE32; what < CACHEDIR_NUM; what++) { + what = is_amd64() ? FILE64 : FILE32; if (has_cachedir(what) && is_dir_flag_on(what, NEED_UPDATE)) { ret = mkisofs_archive(root, what); if (ret != 0) status = BAM_ERROR; } - } return (status); }