|
1 #!/bin/sh |
|
2 # |
|
3 # CDDL HEADER START |
|
4 # |
|
5 # The contents of this file are subject to the terms of the |
|
6 # Common Development and Distribution License (the "License"). |
|
7 # You may not use this file except in compliance with the License. |
|
8 # |
|
9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
|
10 # or http://www.opensolaris.org/os/licensing. |
|
11 # See the License for the specific language governing permissions |
|
12 # and limitations under the License. |
|
13 # |
|
14 # When distributing Covered Code, include this CDDL HEADER in each |
|
15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
|
16 # If applicable, add the following below this CDDL HEADER, with the |
|
17 # fields enclosed by brackets "[]" replaced with your own identifying |
|
18 # information: Portions Copyright [yyyy] [name of copyright owner] |
|
19 # |
|
20 # CDDL HEADER END |
|
21 # |
|
22 |
|
23 # |
|
24 # Copyright 2007 Sun Microsystems, Inc. All rights reserved. |
|
25 # Use is subject to license terms. |
|
26 |
|
27 # ident "%Z%%M% %I% %E% SMI" |
|
28 |
|
29 ROOT=${PKG_INSTALL_ROOT:-/} |
|
30 SYSTEM=${ROOT}/etc/system |
|
31 BOOTENVRC=${ROOT}/boot/solaris/bootenv.rc |
|
32 PATH_TO_INST=${ROOT}/etc/path_to_inst |
|
33 POWER_CONF=${ROOT}/etc/power.conf |
|
34 BAK=bak |
|
35 TMP=/tmp |
|
36 NV_SATA=nv_sata |
|
37 NVSATA_TMP=$TMP/${NV_SATA} |
|
38 SYSTEM_BAK=${NVSATA_TMP}/system.${BAK} |
|
39 BOOTENVRC_BAK=${NVSATA_TMP}/bootenv.rc.${BAK} |
|
40 POWER_CONF_BAK=${NVSATA_TMP}/power.conf.${BAK} |
|
41 UPGRADE_LOG=${ROOT}/var/sadm/system/logs/upgrade_log |
|
42 LIVEUPGRADE_TMP_LOG=$TMP/.luupgrade.pfinstall.log.* |
|
43 DEVMAP_TABLE=${TMP}/devmap_table |
|
44 DRIVER_ALIASES='"pci10de,37f" "pci10de,55" "pci10de,54"' |
|
45 ETC_DEV_DIR=${ROOT}/etc/dev |
|
46 ENUMERATE_RESERVED=${ETC_DEV_DIR}/reserved_devnames |
|
47 DEVLINK_DB=${ETC_DEV_DIR}/.devlink_db |
|
48 |
|
49 CP=/usr/bin/cp |
|
50 MV=/usr/bin/mv |
|
51 LN=/usr/bin/ln |
|
52 LS=/usr/bin/ls |
|
53 GREP=/usr/bin/grep |
|
54 SED=/usr/bin/sed |
|
55 CUT=/usr/bin/cut |
|
56 CAT=/usr/bin/cat |
|
57 NAWK=/usr/bin/nawk |
|
58 RM=/usr/bin/rm |
|
59 MKDIR=/usr/bin/mkdir |
|
60 MOUNT=/usr/sbin/mount |
|
61 MODINFO=/usr/sbin/modinfo |
|
62 PRTCONF=/etc/prtconf |
|
63 PRTCONF_OUT=${NVSATA_TMP}/prtconf_vp.out |
|
64 DEV_PROPS=${NVSATA_TMP}/dev_props.out |
|
65 |
|
66 # |
|
67 # get_devinfo_prop(file, prop) |
|
68 # |
|
69 # <prtconf.out> file that has output from 'prtconf -vp' command |
|
70 # <prop> name of the property OR "ALL" for all properties |
|
71 # |
|
72 # parse the output of prtconf command and print the value of |
|
73 # of the specified property or all if <prop> is "ALL" in |
|
74 # the format "<name>=<value>". |
|
75 # |
|
76 get_devinfo_prop() |
|
77 { |
|
78 /bin/cat $1 | ${NAWK} -v prop=$2 ' |
|
79 BEGIN { |
|
80 if (match(prop,"ALL")) |
|
81 check_all=1; |
|
82 else |
|
83 check_all=0; |
|
84 } |
|
85 { |
|
86 if (!match($1, "name=")) |
|
87 next; |
|
88 if (!check_all) { |
|
89 pname = sprintf("name=\047%s\047", prop); |
|
90 if (!match($1, pname)) |
|
91 next; |
|
92 } |
|
93 gsub("\047", "", $1); |
|
94 name = substr($1, index($1,"=")+1); |
|
95 if (match($2, "type=boolean")) { |
|
96 value=1; |
|
97 } else if (match($2, "type=int") || match($2, "type=byte")) { |
|
98 getline; |
|
99 value = "" |
|
100 cnt = split(substr($0,index($0, "=")+1), words, "."); |
|
101 for (i = 1; i <= cnt; i++) { |
|
102 w = "0x" skipzeros(words[i]); |
|
103 if (i > 1) |
|
104 value = value " "; |
|
105 value = value w; |
|
106 } |
|
107 } else { |
|
108 getline; |
|
109 value = substr($0,index($0, "=")+1); |
|
110 } |
|
111 if (!check_all) { |
|
112 print value; |
|
113 exit (0); |
|
114 } |
|
115 print name "=" value; |
|
116 } |
|
117 # skp the leading '0' characters in the string |
|
118 function skipzeros (str, out, n, i) |
|
119 { |
|
120 n = length(str); |
|
121 for (i = 1; i <= n; i++) { |
|
122 if (!match(substr(str, i, 1), "0")) { |
|
123 break; |
|
124 } |
|
125 } |
|
126 if (i > n) |
|
127 out=substr(str,n); |
|
128 else |
|
129 out=substr(str,i); |
|
130 return (out); |
|
131 }' |
|
132 } |
|
133 |
|
134 # |
|
135 # Function get_properties() gets the following properties for the |
|
136 # device (i.e /devices path without '/devices' prefix) passed as |
|
137 # an argument: |
|
138 # |
|
139 # vendor-id |
|
140 # device-id |
|
141 # subsystem-vendor-id |
|
142 # subsystem-id |
|
143 # |
|
144 # Note: it saves the pathname and the properties in ${DEV_PROPS} file |
|
145 # to optimize subsequent mapping calls for the same path name. |
|
146 # |
|
147 # e.g: get_properties "/pci@0,0/pci-ide@1f,2" |
|
148 # |
|
149 get_properties() |
|
150 { |
|
151 if [ -f ${DEV_PROPS} ] |
|
152 then |
|
153 mapped_path=`${GREP} $1 ${DEV_PROPS}` |
|
154 if [ $? -eq 0 ] |
|
155 then |
|
156 vendor_id=`echo ${mapped_path} | ${CUT} -d ' ' -f2` |
|
157 device_id=`echo ${mapped_path} | ${CUT} -d ' ' -f3` |
|
158 subsystem_vendor_id=`echo ${mapped_path} | ${CUT} -d ' ' -f4` |
|
159 subsystem_id=`echo ${mapped_path} | ${CUT} -d ' ' -f5` |
|
160 return; |
|
161 fi |
|
162 fi |
|
163 |
|
164 path=`echo $1|${GREP} -v storage` |
|
165 ${PRTCONF} -vp "/devices"$path >${PRTCONF_OUT} |
|
166 if [ $? -eq 0 ] |
|
167 then |
|
168 vendor_id=`get_devinfo_prop ${PRTCONF_OUT} "vendor-id" | ${SED} "s/^0x//"` |
|
169 device_id=`get_devinfo_prop ${PRTCONF_OUT} "device-id" | ${SED} "s/^0x//"` |
|
170 subsystem_vendor_id=`get_devinfo_prop ${PRTCONF_OUT} "subsystem-vendor-id" | ${SED} "s/^0x//"` |
|
171 subsystem_id=`get_devinfo_prop ${PRTCONF_OUT} "subsystem-id" | ${SED} "s/^0x//"` |
|
172 rm -f ${PRTCONF_OUT} |
|
173 echo $1 "$vendor_id" "$device_id" "$subsystem_vendor_id" "$subsystem_id" >>${DEV_PROPS} |
|
174 else |
|
175 vendor_id="" |
|
176 device_id="" |
|
177 subsystem_vendor_id="" |
|
178 subsystem_id="" |
|
179 echo $1 "$vendor_id" >>${DEV_PROPS} |
|
180 fi |
|
181 } |
|
182 |
|
183 # |
|
184 # Function process_bootenvrc_for_install() converts bootpath in ata style |
|
185 # to nv_sata style in the file /boot/solaris/bootenv.rc for normal upgrade. |
|
186 # |
|
187 process_bootenvrc_for_install() { |
|
188 |
|
189 # Check to see if bootenv.rc file has ata disk entries. |
|
190 ${GREP} "cmdk@" ${BOOTENVRC} > /dev/null |
|
191 if [ $? -eq 1 ] |
|
192 then |
|
193 # There is no ata disk entry. No mapping is needed. |
|
194 return 0 |
|
195 fi |
|
196 |
|
197 # Backup the bootenv.rc file. |
|
198 $CP ${BOOTENVRC} ${BOOTENVRC_BAK} |
|
199 if [ $? -ne 0 ] |
|
200 then |
|
201 # Can't backup bootenv.rc file. |
|
202 rem_drv -b ${ROOT} nv_sata |
|
203 ${RM} -rf ${NVSATA_TMP} |
|
204 exit 1 |
|
205 fi |
|
206 |
|
207 ${GREP} "cmdk@" ${BOOTENVRC} | while read bootpath_line |
|
208 do |
|
209 old_path=`echo ${bootpath_line} | ${CUT} -d' ' -f3` |
|
210 devname=`echo ${old_path} | $CUT -d/ -f4- | $SED "{ |
|
211 s/ide@/disk@/ |
|
212 s/\/cmdk@.// |
|
213 }"` |
|
214 $LS -l /dev/dsk | $GREP ${devname} | while read line |
|
215 do |
|
216 new_path=`echo $line | $NAWK '{print $11}'` |
|
217 arg="/`echo ${new_path} | ${CUT} -d/ -f4,5`" |
|
218 get_properties ${arg} |
|
219 |
|
220 for pair in ${DRIVER_ALIASES} |
|
221 do |
|
222 VENDOR_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
223 | $CUT -d, -f1` |
|
224 DEVICE_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
225 | $CUT -d, -f2` |
|
226 # Check to see if it is a nv_sata device. |
|
227 if [ "pci${vendor_id}" = ${VENDOR_ID} -a \ |
|
228 ${device_id} = ${DEVICE_ID} ] |
|
229 then |
|
230 if [ "X${subsystem_vendor_id}" = "X" ] |
|
231 then |
|
232 ids="pci${vendor_id},${device_id}" |
|
233 else |
|
234 ids="pci${subsystem_vendor_id},${subsystem_id}" |
|
235 fi |
|
236 mapped_path=`echo ${old_path} | ${SED} "{ |
|
237 s/pci-ide/${ids}/ |
|
238 s/ide/disk/ |
|
239 s/\/cmdk@.// |
|
240 }"` |
|
241 new_path="/`echo ${new_path} | $CUT -d/ -f4-`" |
|
242 if [ ${new_path} = ${mapped_path} ] |
|
243 then |
|
244 if [ ! -f ${NVSATA_TMP}/bootenv.rc ] |
|
245 then |
|
246 $GREP -v "cmdk@" ${BOOTENVRC} > \ |
|
247 ${NVSATA_TMP}/bootenv.rc |
|
248 fi |
|
249 echo "setprop bootpath ${new_path}" \ |
|
250 >> ${NVSATA_TMP}/bootenv.rc |
|
251 break |
|
252 fi |
|
253 fi |
|
254 done |
|
255 done |
|
256 done |
|
257 # Commit the changes |
|
258 if [ -f ${NVSATA_TMP}/bootenv.rc ] |
|
259 then |
|
260 ${CP} ${NVSATA_TMP}/bootenv.rc ${BOOTENVRC} |
|
261 if [ $? -ne 0 ] |
|
262 then |
|
263 # Failed to modify bootenv.rc file. |
|
264 rem_drv -b ${ROOT} nv_sata |
|
265 ${RM} -rf ${NVSATA_TMP} |
|
266 exit 1 |
|
267 fi |
|
268 fi |
|
269 } |
|
270 |
|
271 # |
|
272 # Function process_bootenvrc_for_lu() converts bootpath in ata style |
|
273 # to nv_sata style in the file /boot/solaris/bootenv.rc for live upgrade. |
|
274 # |
|
275 process_bootenvrc_for_lu() { |
|
276 |
|
277 # Check to see if bootenv.rc has ata disk entries. |
|
278 |
|
279 ${GREP} "cmdk@" ${BOOTENVRC} > /dev/null |
|
280 if [ $? -eq 1 ] |
|
281 then |
|
282 # There is no ata disk. No mapping is needed. |
|
283 return 0 |
|
284 fi |
|
285 |
|
286 # Backup the bootenv.rc file. |
|
287 $CP ${BOOTENVRC} ${BOOTENVRC_BAK} |
|
288 if [ $? -ne 0 ] |
|
289 then |
|
290 # Can't backup bootenv.rc file. |
|
291 rem_drv -b ${ROOT} nv_sata |
|
292 ${RM} -rf ${NVSATA_TMP} |
|
293 exit 1 |
|
294 fi |
|
295 |
|
296 ${GREP} "cmdk@" ${BOOTENVRC} | while read bootpath_line |
|
297 do |
|
298 bootpath=`echo ${bootpath_line} | ${CUT} -d' ' -f3` |
|
299 if [ "X${no_nvsata_in_CBE}" != "X0" ] |
|
300 then |
|
301 arg=`echo ${bootpath} | ${CUT} -d/ -f1-3` |
|
302 get_properties ${arg} |
|
303 |
|
304 # Check if boot device is a supported nv_sata device. |
|
305 for pair in ${DRIVER_ALIASES} |
|
306 do |
|
307 dr_vendor_id=`echo $pair | $SED "s/\"//g" | $CUT -d, -f1` |
|
308 dr_device_id=`echo $pair | $SED "s/\"//g" | $CUT -d, -f2` |
|
309 if [ "pci${vendor_id}" = ${dr_vendor_id} -a ${device_id} = \ |
|
310 ${dr_device_id} ] |
|
311 then |
|
312 if [ "X${subsystem_vendor_id}" = "X" ] |
|
313 then |
|
314 ids="pci${vendor_id},${device_id}" |
|
315 else |
|
316 ids="pci${subsystem_vendor_id},${subsystem_id}" |
|
317 fi |
|
318 if [ ! -f ${NVSATA_TMP}/bootenv.rc ] |
|
319 then |
|
320 $GREP -v "cmdk@" ${BOOTENVRC} > \ |
|
321 ${NVSATA_TMP}/bootenv.rc |
|
322 fi |
|
323 mapped_bootpath_line=`echo ${bootpath_line} | ${SED} "{ |
|
324 s/pci-ide/${ids}/ |
|
325 s/ide/disk/ |
|
326 s/\/cmdk@.// |
|
327 }"` |
|
328 |
|
329 echo ${mapped_bootpath_line} >> ${NVSATA_TMP}/bootenv.rc |
|
330 break |
|
331 fi |
|
332 done |
|
333 else |
|
334 is_mapped="no" |
|
335 devname=`echo ${bootpath} | $CUT -d/ -f4- | $SED "{ |
|
336 s/ide@/disk@/ |
|
337 s/\/cmdk@.// |
|
338 }"` |
|
339 for new_path in `$LS -l "/dev/dsk" | $GREP ${devname} |$NAWK '{print $11}'` |
|
340 do |
|
341 arg2="/`echo ${new_path} | ${CUT} -d/ -f4,5`" |
|
342 get_properties ${arg2} |
|
343 for pair in ${DRIVER_ALIASES} |
|
344 do |
|
345 VENDOR_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
346 | $CUT -d, -f1` |
|
347 DEVICE_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
348 | $CUT -d, -f2` |
|
349 |
|
350 # Check to see if it is a nv_sata device. |
|
351 if [ "pci${vendor_id}" = ${VENDOR_ID} -a \ |
|
352 ${device_id} = ${DEVICE_ID} ] |
|
353 then |
|
354 if [ "X${subsystem_vendor_id}" = "X" ] |
|
355 then |
|
356 ids3="pci${vendor_id},${device_id}" |
|
357 else |
|
358 ids3="pci${subsystem_vendor_id},${subsystem_id}" |
|
359 fi |
|
360 mapped_bootpath_line=`echo ${bootpath_line} | ${SED} "{ |
|
361 s/pci-ide/${ids3}/ |
|
362 s/ide/disk/ |
|
363 s/\/cmdk@.// |
|
364 }"` |
|
365 mapped_bootpath=`echo ${mapped_bootpath_line} \ |
|
366 | ${CUT} -d' ' -f3` |
|
367 $LS -l "/dev/dsk" | $GREP ${mapped_bootpath} >/dev/null |
|
368 if [ $? -eq 0 ] |
|
369 then |
|
370 if [ ! -f ${NVSATA_TMP}/bootenv.rc ] |
|
371 then |
|
372 $GREP -v "cmdk@" ${BOOTENVRC} > \ |
|
373 ${NVSATA_TMP}/bootenv.rc |
|
374 fi |
|
375 echo ${mapped_bootpath_line} >> \ |
|
376 ${NVSATA_TMP}/bootenv.rc |
|
377 is_mapped="yes" |
|
378 break |
|
379 fi |
|
380 fi |
|
381 done |
|
382 if [ "${is_mapped}" = "yes" ] |
|
383 then |
|
384 break |
|
385 fi |
|
386 done |
|
387 fi |
|
388 done |
|
389 # Commit the changes |
|
390 if [ -f ${NVSATA_TMP}/bootenv.rc ] |
|
391 then |
|
392 ${CP} ${NVSATA_TMP}/bootenv.rc ${BOOTENVRC} |
|
393 if [ $? -ne 0 ] |
|
394 then |
|
395 # Failed to modify bootenv.rc file. |
|
396 rem_drv -b ${ROOT} nv_sata |
|
397 ${RM} -rf ${NVSATA_TMP} |
|
398 exit 1 |
|
399 fi |
|
400 fi |
|
401 } |
|
402 |
|
403 # |
|
404 # Function process_system_for_lu() converts rootdev in /etc/system from |
|
405 # old ata fromat to new nv_sata format during live upgrade. |
|
406 # |
|
407 process_system_for_lu() { |
|
408 |
|
409 # Check to see if system has ata disk as a root device. |
|
410 rootdev_line=`${GREP} -v "*" $SYSTEM | ${GREP} "rootdev:/"| ${GREP} "cmdk@"` |
|
411 if [ $? -eq 1 ] |
|
412 then |
|
413 # roodev entry does not exist, or root disk is not ata. |
|
414 return 0 |
|
415 fi |
|
416 |
|
417 ${CP} ${SYSTEM} ${SYSTEM_BAK} |
|
418 if [ $? -ne 0 ] |
|
419 then |
|
420 # Can't backup system file." |
|
421 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
422 rem_drv -b ${ROOT} nv_sata |
|
423 ${RM} -rf ${NVSATA_TMP} |
|
424 exit 1 |
|
425 fi |
|
426 |
|
427 rootdev=`echo ${rootdev_line} | ${CUT} -d: -f2-` |
|
428 if [ "X${no_nvsata_in_CBE}" != "X0" ] |
|
429 then |
|
430 ar=`echo ${rootdev} | ${CUT} -d/ -f1-3` |
|
431 get_properties ${ar} |
|
432 |
|
433 # Check if boot device is a supported nv_sata device. |
|
434 for pair in ${DRIVER_ALIASES} |
|
435 do |
|
436 dr_vendor_id=`echo $pair | $SED "s/\"//g" | $CUT -d, -f1` |
|
437 dr_device_id=`echo $pair | $SED "s/\"//g" | $CUT -d, -f2` |
|
438 if [ "pci${vendor_id}" = ${dr_vendor_id} -a \ |
|
439 ${device_id} = ${dr_device_id} ] |
|
440 then |
|
441 |
|
442 if [ "X${subsystem_vendor_id}" = "X" ] |
|
443 then |
|
444 ids="pci${vendor_id},${device_id}" |
|
445 else |
|
446 ids="pci${subsystem_vendor_id},${subsystem_id}" |
|
447 fi |
|
448 $SED "{ |
|
449 s/pci-ide/$ids/ |
|
450 s/ide/disk/ |
|
451 s/\/cmdk@.// |
|
452 }" ${SYSTEM} > "${NVSATA_TMP}/system" |
|
453 |
|
454 break |
|
455 fi |
|
456 done |
|
457 else |
|
458 devname=`echo ${rootdev} | $CUT -d/ -f4- | $SED "{ |
|
459 s/ide@/disk@/ |
|
460 s/\/cmdk@.// |
|
461 }"` |
|
462 is_mapped="no" |
|
463 for dev_path in `$LS -l "/dev/dsk" | $GREP ${devname} |$NAWK '{print $11}'` |
|
464 do |
|
465 ar="/`echo ${dev_path} | ${CUT} -d/ -f4,5`" |
|
466 get_properties ${ar} |
|
467 for pair in ${DRIVER_ALIASES} |
|
468 do |
|
469 VENDOR_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
470 | $CUT -d, -f1` |
|
471 DEVICE_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
472 | $CUT -d, -f2` |
|
473 |
|
474 # Check to see if it is a nv_sata device. |
|
475 if [ "pci${vendor_id}" = ${VENDOR_ID} -a \ |
|
476 ${device_id} = ${DEVICE_ID} ] |
|
477 then |
|
478 if [ "X${subsystem_vendor_id}" = "X" ] |
|
479 then |
|
480 ids="pci${vendor_id},${device_id}" |
|
481 else |
|
482 ids="pci${subsystem_vendor_id},${subsystem_id}" |
|
483 fi |
|
484 |
|
485 mapped_rootdev=`echo ${rootdev} | ${SED} "{ |
|
486 s/pci-ide/${ids}/ |
|
487 s/ide/disk/ |
|
488 s/\/cmdk@.// |
|
489 }"` |
|
490 $LS -l "/dev/dsk" | $GREP ${mapped_rootdev} >/dev/null |
|
491 if [ $? -eq 0 ] |
|
492 then |
|
493 $SED "{ |
|
494 s/pci-ide/$ids/ |
|
495 s/ide/disk/ |
|
496 s/\/cmdk@.// |
|
497 }" ${SYSTEM} > "${NVSATA_TMP}/system" |
|
498 is_mapped="yes" |
|
499 break |
|
500 fi |
|
501 fi |
|
502 done |
|
503 if [ "${is_mapped}" = "yes" ] |
|
504 then |
|
505 break |
|
506 fi |
|
507 done |
|
508 fi |
|
509 |
|
510 if [ -f ${NVSATA_TMP}/system ] |
|
511 then |
|
512 ${CP} ${NVSATA_TMP}/system ${SYSTEM} |
|
513 if [ $? -ne 0 ] |
|
514 then |
|
515 # Failed to modify system file. |
|
516 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
517 rem_drv -b ${ROOT} nv_sata |
|
518 ${RM} -rf ${NVSATA_TMP} |
|
519 exit 1 |
|
520 fi |
|
521 fi |
|
522 } |
|
523 |
|
524 # |
|
525 # Function process_system_for_install() converts rootdev in /etc/system from |
|
526 # old ata format to new nv_sata format during the upgrade installation. |
|
527 # |
|
528 process_system_for_install() { |
|
529 |
|
530 # Check to see if system has ata disk as a root device. |
|
531 rootdev_line=`${GREP} -v "*" $SYSTEM | ${GREP} "rootdev:/"| ${GREP} "cmdk@"` |
|
532 if [ $? -eq 1 ] |
|
533 then |
|
534 # roodev entry does not exist, or root disk is not ata. |
|
535 return 0 |
|
536 fi |
|
537 |
|
538 ${CP} ${SYSTEM} ${SYSTEM_BAK} |
|
539 if [ $? -ne 0 ] |
|
540 then |
|
541 # Can't backup system file." |
|
542 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
543 rem_drv -b ${ROOT} nv_sata |
|
544 ${RM} -rf ${NVSATA_TMP} |
|
545 exit 1 |
|
546 fi |
|
547 |
|
548 rootdev=`echo ${rootdev_line} | ${CUT} -d: -f2-` |
|
549 devname=`echo ${rootdev} | $CUT -d/ -f4- | $SED "{ |
|
550 s/ide@/disk@/ |
|
551 s/\/cmdk@.// |
|
552 }"` |
|
553 is_mapped="no" |
|
554 for dev_path in `$LS -l "/dev/dsk" | $GREP ${devname} |$NAWK '{print $11}'` |
|
555 do |
|
556 arg="/`echo ${dev_path} | ${CUT} -d/ -f4,5`" |
|
557 get_properties ${arg} |
|
558 for pair in ${DRIVER_ALIASES} |
|
559 do |
|
560 VENDOR_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
561 | $CUT -d, -f1` |
|
562 DEVICE_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
563 | $CUT -d, -f2` |
|
564 |
|
565 # Check to see if it is a nv_sata device. |
|
566 if [ "pci${vendor_id}" = ${VENDOR_ID} -a \ |
|
567 ${device_id} = ${DEVICE_ID} ] |
|
568 then |
|
569 if [ "X${subsystem_vendor_id}" = "X" ] |
|
570 then |
|
571 ids="pci${vendor_id},${device_id}" |
|
572 else |
|
573 ids="pci${subsystem_vendor_id},${subsystem_id}" |
|
574 fi |
|
575 |
|
576 mapped_rootdev=`echo ${rootdev} | ${SED} "{ |
|
577 s/pci-ide/${ids}/ |
|
578 s/ide/disk/ |
|
579 s/\/cmdk@.// |
|
580 }"` |
|
581 $LS -l "/dev/dsk" | $GREP ${mapped_rootdev} >/dev/null |
|
582 if [ $? -eq 0 ] |
|
583 then |
|
584 $SED "{ |
|
585 s/pci-ide/$ids/ |
|
586 s/ide/disk/ |
|
587 s/\/cmdk@.// |
|
588 }" ${SYSTEM} > "${NVSATA_TMP}/system" |
|
589 is_mapped="yes" |
|
590 break |
|
591 fi |
|
592 fi |
|
593 done |
|
594 if [ "${is_mapped}" = "yes" ] |
|
595 then |
|
596 break |
|
597 fi |
|
598 done |
|
599 |
|
600 if [ -f ${NVSATA_TMP}/system ] |
|
601 then |
|
602 ${CP} ${NVSATA_TMP}/system ${SYSTEM} |
|
603 if [ $? -ne 0 ] |
|
604 then |
|
605 # Failed to modify system file. |
|
606 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
607 rem_drv -b ${ROOT} nv_sata |
|
608 ${RM} -rf ${NVSATA_TMP} |
|
609 exit 1 |
|
610 fi |
|
611 fi |
|
612 } |
|
613 |
|
614 # |
|
615 # Function process_power_conf_for_lu converts ata device path to nv_sata |
|
616 # device path if any for live upgrade. |
|
617 # |
|
618 process_power_conf_for_lu() { |
|
619 |
|
620 $GREP -v "#" ${POWER_CONF} | $GREP "cmdk@">/dev/null |
|
621 if [ $? -ne 0 ] |
|
622 then |
|
623 # No ata device entry in power.conf. No conversion is needed. |
|
624 return 0 |
|
625 fi |
|
626 |
|
627 $CP ${POWER_CONF} ${POWER_CONF_BAK} |
|
628 if [ $? -ne 0 ] |
|
629 then |
|
630 # Failed to back up the power.conf file |
|
631 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
632 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
633 rem_drv -b ${ROOT} nv_sata |
|
634 $RM -rf ${NVSATA_TMP} |
|
635 exit 1 |
|
636 fi |
|
637 |
|
638 $GREP "#" ${POWER_CONF} > ${NVSATA_TMP}/power.conf |
|
639 $GREP -v "#" ${POWER_CONF} | $GREP -v "cmdk@" \ |
|
640 >> ${NVSATA_TMP}/power.conf |
|
641 |
|
642 if [ "X${no_nvsata_in_CBE}" != "X0" ] |
|
643 then |
|
644 $GREP -v "#" ${POWER_CONF} | $GREP "cmdk@" \ |
|
645 ${POWER_CONF} | while read l |
|
646 do |
|
647 is_mapped="no" |
|
648 new_entry="" |
|
649 for i in $l |
|
650 do |
|
651 tp=$i |
|
652 echo $i | $GREP "cmdk@" >/dev/dull |
|
653 if [ $? -eq 0 ] |
|
654 then |
|
655 a="/`echo $i | ${CUT} -d/ -f2,3`" |
|
656 get_properties $a |
|
657 |
|
658 for pair in ${DRIVER_ALIASES} |
|
659 do |
|
660 dr_vendor_id=`echo $pair | $SED "s/\"//g" \ |
|
661 | $CUT -d, -f1` |
|
662 dr_device_id=`echo $pair | $SED "s/\"//g" \ |
|
663 | $CUT -d, -f2` |
|
664 if [ "pci${vendor_id}" = ${dr_vendor_id} -a \ |
|
665 ${device_id} = ${dr_device_id} ] |
|
666 then |
|
667 if [ "X${subsystem_vendor_id}" = "X" ] |
|
668 then |
|
669 is="pci${vendor_id},${device_id}" |
|
670 else |
|
671 is="pci${subsystem_vendor_id},${subsystem_id}" |
|
672 fi |
|
673 tp=`echo $i | $SED "{ |
|
674 s/pci-ide/$is/ |
|
675 s/ide/disk/ |
|
676 s/\/cmdk@.// |
|
677 }"` |
|
678 if [ "${is_mapped}" = "no" ] |
|
679 then |
|
680 is_mapped="yes" |
|
681 fi |
|
682 break |
|
683 fi |
|
684 done |
|
685 fi |
|
686 new_entry="${new_entry}$tp " |
|
687 done |
|
688 if [ "${is_mapped}" = "yes" ] |
|
689 then |
|
690 echo ${new_entry} >> ${NVSATA_TMP}/mapped_power.conf |
|
691 else |
|
692 echo ${new_entry} >> ${NVSATA_TMP}/power.conf |
|
693 fi |
|
694 done |
|
695 else |
|
696 $GREP -v "#" ${POWER_CONF} | $GREP "cmdk@" ${POWER_CONF} \ |
|
697 | while read l |
|
698 do |
|
699 is_mapped="no" |
|
700 new_entry="" |
|
701 for i in $l |
|
702 do |
|
703 tp=$i |
|
704 echo $i | $GREP "cmdk@" >/dev/dull |
|
705 if [ $? -eq 0 ] |
|
706 then |
|
707 dn=`echo $i | $CUT -d/ -f4- | $SED "{ |
|
708 s/ide@/disk@/ |
|
709 s/\/cmdk@.// |
|
710 }"` |
|
711 for x in `$LS -l /dev/dsk | $GREP $dn \ |
|
712 | $NAWK '{print $11}'` |
|
713 do |
|
714 np="" |
|
715 a="/`echo ${x} | ${CUT} -d/ -f4,5`" |
|
716 get_properties $a |
|
717 for pair in ${DRIVER_ALIASES} |
|
718 do |
|
719 VENDOR_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
720 | $CUT -d, -f1` |
|
721 DEVICE_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
722 | $CUT -d, -f2` |
|
723 if [ "pci${vendor_id}" = ${VENDOR_ID} -a \ |
|
724 ${device_id} = ${DEVICE_ID} ] |
|
725 then |
|
726 if [ "X${subsystem_vendor_id}" = "X" ] |
|
727 then |
|
728 is="pci${vendor_id},${device_id}" |
|
729 else |
|
730 is="pci${subsystem_vendor_id},${subsystem_id}" |
|
731 fi |
|
732 mapped_path=`echo $i | ${SED} "{ |
|
733 s/pci-ide/${is}/ |
|
734 s/ide/disk/ |
|
735 s/\/cmdk@.// |
|
736 }"` |
|
737 np="/`echo ${x} | $CUT -d/ -f4- \ |
|
738 | $CUT -d: -f1`" |
|
739 if [ ${np} = ${mapped_path} ] |
|
740 then |
|
741 tp=${mapped_path} |
|
742 if [ "${is_mapped}" = "no" ] |
|
743 then |
|
744 is_mapped="yes" |
|
745 fi |
|
746 break |
|
747 fi |
|
748 fi |
|
749 done |
|
750 |
|
751 if [ "${is_mapped}" = "yes" ] |
|
752 then |
|
753 break |
|
754 fi |
|
755 done |
|
756 fi |
|
757 new_entry="${new_entry}$tp " |
|
758 done |
|
759 if [ "${is_mapped}" = "yes" ] |
|
760 then |
|
761 echo ${new_entry} >> ${NVSATA_TMP}/mapped_power.conf |
|
762 else |
|
763 echo ${new_entry} >> ${NVSATA_TMP}/power.conf |
|
764 fi |
|
765 done |
|
766 fi |
|
767 |
|
768 if [ -f ${NVSATA_TMP}/mapped_power.conf ] |
|
769 then |
|
770 $CAT ${NVSATA_TMP}/mapped_power.conf >> ${NVSATA_TMP}/power.conf |
|
771 $CP ${NVSATA_TMP}/power.conf ${POWER_CONF} |
|
772 if [ $? -ne 0 ] |
|
773 then |
|
774 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
775 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
776 rem_drv -b ${ROOT} nv_sata |
|
777 $RM -rf ${NVSATA_TMP} |
|
778 exit 1 |
|
779 fi |
|
780 fi |
|
781 } |
|
782 |
|
783 # |
|
784 # Function process_power_conf_for_install converts ata device path to nv_sata |
|
785 # device path if any for normal upgrade installation. |
|
786 # |
|
787 process_power_conf_for_install() { |
|
788 |
|
789 $GREP -v "#" ${POWER_CONF} | $GREP "cmdk@" >/dev/null |
|
790 if [ $? -ne 0 ] |
|
791 then |
|
792 # No ata device entry in power.conf. No conversion is needed. |
|
793 return 0 |
|
794 fi |
|
795 |
|
796 $CP ${POWER_CONF} ${POWER_CONF_BAK} |
|
797 if [ $? -ne 0 ] |
|
798 then |
|
799 # Failed to back up the power.conf file. |
|
800 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
801 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
802 rem_drv -b ${ROOT} nv_sata |
|
803 $RM -rf ${NVSATA_TMP} |
|
804 exit 1 |
|
805 fi |
|
806 |
|
807 $GREP "#" ${POWER_CONF} > ${NVSATA_TMP}/power.conf |
|
808 $GREP -v "#" ${POWER_CONF} | $GREP -v "cmdk@" \ |
|
809 >> ${NVSATA_TMP}/power.conf |
|
810 |
|
811 $GREP -v "#" ${POWER_CONF} | $GREP "cmdk@" ${POWER_CONF} | while read l |
|
812 do |
|
813 is_mapped="no" |
|
814 new_entry="" |
|
815 for i in $l |
|
816 do |
|
817 tp=$i |
|
818 echo $i | $GREP "cmdk@" >/dev/dull |
|
819 if [ $? -eq 0 ] |
|
820 then |
|
821 dn=`echo $i | $CUT -d/ -f4- | $SED "{ |
|
822 s/ide@/disk@/ |
|
823 s/\/cmdk@.// |
|
824 }"` |
|
825 for x in `$LS -l /dev/dsk | $GREP $dn \ |
|
826 | $NAWK '{print $11}'` |
|
827 do |
|
828 np="" |
|
829 a="/`echo ${x} | ${CUT} -d/ -f4,5`" |
|
830 get_properties $a |
|
831 |
|
832 for pair in ${DRIVER_ALIASES} |
|
833 do |
|
834 VENDOR_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
835 | $CUT -d, -f1` |
|
836 DEVICE_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
837 | $CUT -d, -f2` |
|
838 if [ "pci${vendor_id}" = ${VENDOR_ID} -a \ |
|
839 ${device_id} = ${DEVICE_ID} ] |
|
840 then |
|
841 if [ "X${subsystem_vendor_id}" = "X" ] |
|
842 then |
|
843 is="pci${vendor_id},${device_id}" |
|
844 else |
|
845 is="pci${subsystem_vendor_id},${subsystem_id}" |
|
846 fi |
|
847 mapped_path=`echo $i | ${SED} "{ |
|
848 s/pci-ide/${is}/ |
|
849 s/ide/disk/ |
|
850 s/\/cmdk@.// |
|
851 }"` |
|
852 np="/`echo ${x} | $CUT -d/ -f4- \ |
|
853 | $CUT -d: -f1`" |
|
854 if [ ${np} = ${mapped_path} ] |
|
855 then |
|
856 tp=${mapped_path} |
|
857 if [ "${is_mapped}" = "no" ] |
|
858 then |
|
859 is_mapped="yes" |
|
860 fi |
|
861 break |
|
862 fi |
|
863 fi |
|
864 done |
|
865 |
|
866 if [ "${is_mapped}" = "yes" ] |
|
867 then |
|
868 break |
|
869 fi |
|
870 done |
|
871 fi |
|
872 new_entry="${new_entry}$tp " |
|
873 done |
|
874 if [ "${is_mapped}" = "yes" ] |
|
875 then |
|
876 echo ${new_entry} >> ${NVSATA_TMP}/mapped_power.conf |
|
877 else |
|
878 echo ${new_entry} >> ${NVSATA_TMP}/power.conf |
|
879 fi |
|
880 done |
|
881 |
|
882 if [ -f ${NVSATA_TMP}/mapped_power.conf ] |
|
883 then |
|
884 $CAT ${NVSATA_TMP}/mapped_power.conf >> ${NVSATA_TMP}/power.conf |
|
885 $CP ${NVSATA_TMP}/power.conf ${POWER_CONF} |
|
886 if [ $? -ne 0 ] |
|
887 then |
|
888 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
889 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
890 rem_drv -b ${ROOT} nv_sata |
|
891 $RM -rf ${NVSATA_TMP} |
|
892 exit 1 |
|
893 fi |
|
894 fi |
|
895 } |
|
896 |
|
897 # |
|
898 # Function process_devlink_for_lu() links all old ata logical device names |
|
899 # to new physical device paths on upgraded BE. |
|
900 # |
|
901 process_devlink_for_lu() { |
|
902 |
|
903 $LS -l "${ROOT}/dev/dsk" | $GREP "cmdk@" | while read line1 |
|
904 do |
|
905 logical_disk=`echo $line1 | $NAWK '{print $9}'` |
|
906 old_path=`echo $line1 | $NAWK '{print $11}'` |
|
907 mapped_new_path="" |
|
908 if [ "X${no_nvsata_in_CBE}" != "X0" ] |
|
909 then |
|
910 arg2="/`echo ${old_path} | ${CUT} -d/ -f4,5`" |
|
911 get_properties ${arg2} |
|
912 |
|
913 for pair in ${DRIVER_ALIASES} |
|
914 do |
|
915 VENDOR_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
916 | $CUT -d, -f1` |
|
917 DEVICE_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
918 | $CUT -d, -f2` |
|
919 # Check to see if it is a nv_sata device. |
|
920 if [ "pci${vendor_id}" = ${VENDOR_ID} -a \ |
|
921 ${device_id} = ${DEVICE_ID} ] |
|
922 then |
|
923 if [ "X${subsystem_vendor_id}" = "X" ] |
|
924 then |
|
925 ids3="pci${vendor_id},${device_id}" |
|
926 else |
|
927 ids3="pci${subsystem_vendor_id},${subsystem_id}" |
|
928 fi |
|
929 mapped_new_path=`echo ${old_path} | ${SED} "{ |
|
930 s/pci-ide/${ids3}/ |
|
931 s/ide/disk/ |
|
932 s/\/cmdk@.// |
|
933 }"` |
|
934 break |
|
935 fi |
|
936 done |
|
937 else |
|
938 devname=`echo ${old_path} | $CUT -d/ -f6- | $SED "{ |
|
939 s/ide@/disk@/ |
|
940 s/\/cmdk@.// |
|
941 }"` |
|
942 is_mapped="no" |
|
943 for new_path in `$LS -l "/dev/dsk" | $GREP ${devname} | $NAWK '{print $11}'` |
|
944 do |
|
945 arg2="/`echo ${new_path} | ${CUT} -d/ -f4,5`" |
|
946 get_properties ${arg2} |
|
947 for pair in ${DRIVER_ALIASES} |
|
948 do |
|
949 VENDOR_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
950 | $CUT -d, -f1` |
|
951 DEVICE_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
952 | $CUT -d, -f2` |
|
953 |
|
954 # Check to see if it is a nv_sata device. |
|
955 if [ "pci${vendor_id}" = ${VENDOR_ID} -a \ |
|
956 ${device_id} = ${DEVICE_ID} ] |
|
957 then |
|
958 if [ "X${subsystem_vendor_id}" = "X" ] |
|
959 then |
|
960 ids3="pci${vendor_id},${device_id}" |
|
961 else |
|
962 ids3="pci${subsystem_vendor_id},${subsystem_id}" |
|
963 fi |
|
964 mapped_new_path=`echo ${old_path} | ${SED} "{ |
|
965 s/pci-ide/${ids3}/ |
|
966 s/ide/disk/ |
|
967 s/\/cmdk@.// |
|
968 }"` |
|
969 if [ ${new_path} = ${mapped_new_path} ] |
|
970 then |
|
971 is_mapped="yes" |
|
972 break |
|
973 fi |
|
974 fi |
|
975 done |
|
976 if [ "${is_mapped}" = "yes" ] |
|
977 then |
|
978 break |
|
979 fi |
|
980 done |
|
981 fi |
|
982 |
|
983 if [ "X${mapped_new_path}" != "X" ] |
|
984 then |
|
985 cd ${ROOT}/dev/dsk |
|
986 ${MV} ${logical_disk} ${logical_disk}.${BAK} |
|
987 if [ $? -ne 0 ] |
|
988 then |
|
989 # Can't back up old link. |
|
990 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
991 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
992 $CP ${POWER_CONF_BAK} ${POWER_CONF} |
|
993 rem_drv -b ${ROOT} nv_sata |
|
994 ${RM} -rf ${NVSATA_TMP} |
|
995 exit 1 |
|
996 fi |
|
997 |
|
998 ${LN} -s ${mapped_new_path} ${logical_disk} |
|
999 if [ $? -ne 0 ] |
|
1000 then |
|
1001 # Can't create symbolic link |
|
1002 ${MV} ${logical_disk}.${BAK} ${logical_disk} |
|
1003 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
1004 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
1005 $CP ${POWER_CONF_BAK} ${POWER_CONF} |
|
1006 rem_drv -b ${ROOT} nv_sata |
|
1007 ${RM} -rf ${NVSATA_TMP} |
|
1008 exit 1 |
|
1009 fi |
|
1010 |
|
1011 c_number="dsk/`echo ${logical_disk} | $CUT -d'd' -f1`" |
|
1012 $GREP ${c_number} ${ENUMERATE_RESERVED} >/dev/null |
|
1013 if [ $? -ne 0 ] |
|
1014 then |
|
1015 echo ${c_number} >> ${ENUMERATE_RESERVED} |
|
1016 fi |
|
1017 |
|
1018 cd ../rdsk |
|
1019 mapped_new_path="${mapped_new_path},raw" |
|
1020 ${MV} ${logical_disk} ${logical_disk}.${BAK} |
|
1021 if [ $? -ne 0 ] |
|
1022 then |
|
1023 # Can't back up old link. |
|
1024 ${RM} ../dsk/${logical_disk} |
|
1025 ${MV} ../dsk/${logical_disk}.${BAK} \ |
|
1026 ../dsk/${logical_disk} |
|
1027 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
1028 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
1029 $CP ${POWER_CONF_BAK} ${POWER_CONF} |
|
1030 rem_drv -b ${ROOT} nv_sata |
|
1031 ${RM} -rf ${NVSATA_TMP} |
|
1032 exit 1 |
|
1033 fi |
|
1034 |
|
1035 ${LN} -s ${mapped_new_path} ${logical_disk} |
|
1036 if [ $? -ne 0 ] |
|
1037 then |
|
1038 # Can't create symbolic link. |
|
1039 ${MV} ${logical_disk}.${BAK} ${logical_disk} |
|
1040 ${RM} ../dsk/${logical_disk} |
|
1041 ${MV} ../dsk/${logical_disk}.${BAK} \ |
|
1042 ../dsk/${logical_disk} |
|
1043 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
1044 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
1045 $CP ${POWER_CONF_BAK} ${POWER_CONF} |
|
1046 rem_drv -b ${ROOT} nv_sata |
|
1047 ${RM} -rf ${NVSATA_TMP} |
|
1048 exit 1 |
|
1049 fi |
|
1050 fi |
|
1051 done |
|
1052 |
|
1053 $GREP "^dsk" ${ENUMERATE_RESERVED} >/dev/null |
|
1054 if [ $? -eq 0 ] |
|
1055 then |
|
1056 $RM ${DEVLINK_DB} |
|
1057 fi |
|
1058 } |
|
1059 |
|
1060 # |
|
1061 # Function process_devlink_for_install() links all old ata logical device names |
|
1062 # to new physical device paths for normal upgrade installation. |
|
1063 # |
|
1064 process_devlink_for_install() { |
|
1065 |
|
1066 $LS -l "${ROOT}/dev/dsk" | $GREP "cmdk@" | while read line1 |
|
1067 do |
|
1068 logical_disk=`echo $line1 | $NAWK '{print $9}'` |
|
1069 old_path=`echo $line1 | $NAWK '{print $11}'` |
|
1070 devname=`echo ${old_path} | $CUT -d/ -f6- | $SED "{ |
|
1071 s/ide@/disk@/ |
|
1072 s/\/cmdk@.// |
|
1073 }"` |
|
1074 $LS -l "/dev/dsk" | $GREP ${devname} | while read line2 |
|
1075 do |
|
1076 new_path=`echo $line2 | $NAWK '{print $11}'` |
|
1077 arg2="/`echo ${new_path} | ${CUT} -d/ -f4,5`" |
|
1078 get_properties ${arg2} |
|
1079 |
|
1080 for pair in ${DRIVER_ALIASES} |
|
1081 do |
|
1082 VENDOR_ID=`echo ${pair} | $SED "s/\"//g"\ |
|
1083 | $CUT -d, -f1` |
|
1084 DEVICE_ID=`echo ${pair} | $SED "s/\"//g" \ |
|
1085 | $CUT -d, -f2` |
|
1086 |
|
1087 # Check to see if it is a nv_sata device. |
|
1088 if [ "pci${vendor_id}" = ${VENDOR_ID} -a \ |
|
1089 ${device_id} = ${DEVICE_ID} ] |
|
1090 then |
|
1091 if [ "X${subsystem_vendor_id}" = "X" ] |
|
1092 then |
|
1093 ids3="pci${vendor_id},${device_id}" |
|
1094 else |
|
1095 ids3="pci${subsystem_vendor_id},${subsystem_id}" |
|
1096 fi |
|
1097 mapped_new_path=`echo ${old_path} | ${SED} "{ |
|
1098 s/pci-ide/${ids3}/ |
|
1099 s/ide/disk/ |
|
1100 s/\/cmdk@.// |
|
1101 }"` |
|
1102 if [ ${new_path} = ${mapped_new_path} ] |
|
1103 then |
|
1104 # Found the match. |
|
1105 cd ${ROOT}/dev/dsk |
|
1106 ${MV} ${logical_disk} ${logical_disk}.${BAK} |
|
1107 if [ $? -ne 0 ] |
|
1108 then |
|
1109 # Can't back up old link. |
|
1110 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
1111 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
1112 $CP ${POWER_CONF_BAK} ${POWER_CONF} |
|
1113 rem_drv -b ${ROOT} nv_sata |
|
1114 ${RM} -rf ${NVSATA_TMP} |
|
1115 exit 1 |
|
1116 fi |
|
1117 |
|
1118 ${LN} -s ${mapped_new_path} ${logical_disk} |
|
1119 if [ $? -ne 0 ] |
|
1120 then |
|
1121 # Can't create symbolic link |
|
1122 ${MV} ${logical_disk}.${BAK} ${logical_disk} |
|
1123 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
1124 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
1125 $CP ${POWER_CONF_BAK} ${POWER_CONF} |
|
1126 rem_drv -b ${ROOT} nv_sata |
|
1127 ${RM} -rf ${NVSATA_TMP} |
|
1128 exit 1 |
|
1129 fi |
|
1130 |
|
1131 c_number="dsk/`echo ${logical_disk} \ |
|
1132 | $CUT -d'd' -f1`" |
|
1133 $GREP ${c_number} ${ENUMERATE_RESERVED} >/dev/null |
|
1134 if [ $? -ne 0 ] |
|
1135 then |
|
1136 echo ${c_number} >> ${ENUMERATE_RESERVED} |
|
1137 fi |
|
1138 |
|
1139 cd ../rdsk |
|
1140 mapped_new_path="${mapped_new_path},raw" |
|
1141 ${MV} ${logical_disk} ${logical_disk}.${BAK} |
|
1142 if [ $? -ne 0 ] |
|
1143 then |
|
1144 # Can't back up old link. |
|
1145 ${RM} ../dsk/${logical_disk} |
|
1146 ${MV} ../dsk/${logical_disk}.${BAK} \ |
|
1147 ../dsk/${logical_disk} |
|
1148 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
1149 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
1150 $CP ${POWER_CONF_BAK} ${POWER_CONF} |
|
1151 rem_drv -b ${ROOT} nv_sata |
|
1152 ${RM} -rf ${NVSATA_TMP} |
|
1153 exit 1 |
|
1154 fi |
|
1155 |
|
1156 ${LN} -s ${mapped_new_path} ${logical_disk} |
|
1157 if [ $? -ne 0 ] |
|
1158 then |
|
1159 # Can't create symbolic link. |
|
1160 ${MV} ${logical_disk}.${BAK} ${logical_disk} |
|
1161 ${RM} ../dsk/${logical_disk} |
|
1162 ${MV} ../dsk/${logical_disk}.${BAK} \ |
|
1163 ../dsk/${logical_disk} |
|
1164 $CP ${BOOTENVRC_BAK} ${BOOTENVRC} |
|
1165 $CP ${SYSTEM_BAK} ${SYSTEM} |
|
1166 $CP ${POWER_CONF_BAK} ${POWER_CONF} |
|
1167 rem_drv -b ${ROOT} nv_sata |
|
1168 ${RM} -rf ${NVSATA_TMP} |
|
1169 exit 1 |
|
1170 fi |
|
1171 fi |
|
1172 fi |
|
1173 done |
|
1174 done |
|
1175 done |
|
1176 |
|
1177 $GREP "^dsk" ${ENUMERATE_RESERVED} >/dev/null |
|
1178 if [ $? -eq 0 ] |
|
1179 then |
|
1180 $RM ${DEVLINK_DB} |
|
1181 fi |
|
1182 } |
|
1183 |
|
1184 clean_up() { |
|
1185 |
|
1186 ${RM} -rf ${NVSATA_TMP} |
|
1187 $LS -l "${ROOT}/dev/dsk" | $GREP "disk@" | while read line |
|
1188 do |
|
1189 logical_disk=`echo $line | $NAWK '{print $9}'` |
|
1190 cd ${ROOT}/dev/dsk |
|
1191 ${RM} -f ${logical_disk}.${BAK} |
|
1192 |
|
1193 cd ../rdsk |
|
1194 ${RM} -f ${logical_disk}.${BAK} |
|
1195 done |
|
1196 } |
|
1197 |
|
1198 # Function: check_add_drv() |
|
1199 # |
|
1200 # This function will check if the module has an entry in etc/name_to_major |
|
1201 # If not simply calls add_drv with the arguments given. If there is |
|
1202 # such an entry in name_to_major file, it adds entries in driver_aliases |
|
1203 # driver_classes and minor_perm if necessary. |
|
1204 # The syntax of this function is the same as add_drv. |
|
1205 |
|
1206 check_add_drv() |
|
1207 { |
|
1208 if [ "$BASEDIR" = "" ] |
|
1209 then |
|
1210 BASEDIR=/ |
|
1211 fi |
|
1212 alias="" |
|
1213 class="" |
|
1214 ADD_ALIAS=0 |
|
1215 ADD_CLASS=0 |
|
1216 ADD_MINOR=0 |
|
1217 OPTIND=1 |
|
1218 IS_NET_DRIVER=0 |
|
1219 |
|
1220 cmd="add_drv" |
|
1221 |
|
1222 NO_CMD= |
|
1223 while getopts i:b:m:c:N opt |
|
1224 do |
|
1225 case $opt in |
|
1226 N ) NO_CMD=1;; |
|
1227 i ) ADD_ALIAS=1 |
|
1228 alias=$OPTARG |
|
1229 cmd=$cmd" -i '$alias'" |
|
1230 ;; |
|
1231 m ) ADD_MINOR=1 |
|
1232 minor=$OPTARG |
|
1233 cmd=$cmd" -m '$minor'" |
|
1234 ;; |
|
1235 c) ADD_CLASS=1 |
|
1236 class=$OPTARG |
|
1237 cmd=$cmd" -c $class" |
|
1238 ;; |
|
1239 b) BASEDIR=$OPTARG |
|
1240 cmd=$cmd" -b $BASEDIR" |
|
1241 ;; |
|
1242 \?) echo "check_add_drv can not handle this option" |
|
1243 return |
|
1244 ;; |
|
1245 esac |
|
1246 done |
|
1247 shift `/usr/bin/expr $OPTIND - 1` |
|
1248 |
|
1249 drvname=$1 |
|
1250 |
|
1251 cmd=$cmd" "$drvname |
|
1252 |
|
1253 drvname=`echo $drvname | /usr/bin/sed 's;.*/;;g'` |
|
1254 |
|
1255 /usr/bin/grep "^$drvname[ ]" ${ROOT}/etc/name_to_major > /dev/null 2>&1 |
|
1256 |
|
1257 if [ "$NO_CMD" = "" -a $? -ne 0 ] |
|
1258 then |
|
1259 eval $cmd |
|
1260 else |
|
1261 # entry already in name_to_major, add alias, class, minorperm |
|
1262 # if necessary |
|
1263 if [ $ADD_ALIAS = 1 ] |
|
1264 then |
|
1265 for i in $alias |
|
1266 do |
|
1267 /usr/bin/egrep "^$drvname[ ]+$i" ${ROOT}/etc/driver_aliases>/dev/null 2>&1 |
|
1268 if [ $? -ne 0 ] |
|
1269 then |
|
1270 echo "$drvname $i" >> ${ROOT}/etc/driver_aliases |
|
1271 fi |
|
1272 done |
|
1273 fi |
|
1274 |
|
1275 if [ $ADD_CLASS = 1 ] |
|
1276 then |
|
1277 /usr/bin/egrep "^$drvname[ ]+$class( | |$)" ${ROOT}/etc/driver_classes > /dev/null 2>&1 |
|
1278 if [ $? -ne 0 ] |
|
1279 then |
|
1280 echo "$drvname\t$class" >> ${ROOT}/etc/driver_classes |
|
1281 fi |
|
1282 fi |
|
1283 |
|
1284 if [ $ADD_MINOR = 1 ] |
|
1285 then |
|
1286 /usr/bin/grep "^$drvname:" ${ROOT}/etc/minor_perm > /dev/null 2>&1 |
|
1287 if [ $? -ne 0 ] |
|
1288 then |
|
1289 minorentry="$drvname:$minor" |
|
1290 echo $minorentry >> ${ROOT}/etc/minor_perm |
|
1291 fi |
|
1292 fi |
|
1293 |
|
1294 fi |
|
1295 } |
|
1296 |
|
1297 # |
|
1298 # Main program starts here. |
|
1299 # |
|
1300 check_add_drv -b ${ROOT} -i '"pci10de,37f" "pci10de,55" "pci10de,54"' -m '* 0644 root sys' nv_sata |
|
1301 |
|
1302 # |
|
1303 # Create temporary directory for node migration |
|
1304 # |
|
1305 if [ ! -d ${NVSATA_TMP} ] |
|
1306 then |
|
1307 ${MKDIR} ${NVSATA_TMP} |
|
1308 if [ $? -ne 0 ] |
|
1309 then |
|
1310 # Failed to create ${NVSATA_TMP} directory. |
|
1311 exit 1 |
|
1312 fi |
|
1313 fi |
|
1314 |
|
1315 # |
|
1316 # If it is an install, do nothing. If it is an upgrade, do the conversion. |
|
1317 # |
|
1318 line=`$MOUNT | $GREP "/ "` |
|
1319 first_field=`echo $line | $NAWK '{print $1}'` |
|
1320 third_field=`echo $line | $NAWK '{print $3}'` |
|
1321 |
|
1322 if [ ${first_field} = "/" -a ${third_field} = "/ramdisk:a" ] |
|
1323 then |
|
1324 # It is either an install/upgrade. |
|
1325 if [ -f ${UPGRADE_LOG} ] |
|
1326 then |
|
1327 # It is an upgrade. |
|
1328 $GREP ${NV_SATA} ${PATH_TO_INST} > /dev/null |
|
1329 if [ $? -eq 0 ] |
|
1330 then |
|
1331 # The system was running nv_sata before the upgrade. |
|
1332 $RM -rf ${NVSATA_TMP} |
|
1333 exit 0 |
|
1334 fi |
|
1335 |
|
1336 process_bootenvrc_for_install |
|
1337 process_system_for_install |
|
1338 process_power_conf_for_install |
|
1339 process_devlink_for_install |
|
1340 clean_up |
|
1341 exit 0 |
|
1342 fi |
|
1343 $RM -rf ${NVSATA_TMP} |
|
1344 exit 0 |
|
1345 fi |
|
1346 |
|
1347 # |
|
1348 # Liveupgrade. |
|
1349 # |
|
1350 if [ -f ${LIVEUPGRADE_TMP_LOG} ] |
|
1351 then |
|
1352 $GREP ${NV_SATA} /etc/driver_aliases >/dev/null |
|
1353 no_nvsata_in_CBE=$? |
|
1354 $GREP ${NV_SATA} ${PATH_TO_INST} > /dev/null |
|
1355 if [ $? -eq 0 ] |
|
1356 then |
|
1357 # Target BE was running nv_sata driver before the upgrade. |
|
1358 $RM -rf ${NVSATA_TMP} |
|
1359 exit 0 |
|
1360 fi |
|
1361 process_bootenvrc_for_lu |
|
1362 process_system_for_lu |
|
1363 process_power_conf_for_lu |
|
1364 process_devlink_for_lu |
|
1365 clean_up |
|
1366 touch ${ROOT}/reconfigure |
|
1367 exit 0 |
|
1368 fi |
|
1369 |
|
1370 # |
|
1371 # Pkgadd. |
|
1372 # |
|
1373 $RM -rf ${NVSATA_TMP} |
|
1374 exit 0 |