1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
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 <sys/mman.h>
#include <sys/elf.h>
-#include <sys/multiboot.h>
#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);
}
|