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