diff options
Diffstat (limited to 'usr/src/tools/scripts/bfu.sh')
-rw-r--r-- | usr/src/tools/scripts/bfu.sh | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/usr/src/tools/scripts/bfu.sh b/usr/src/tools/scripts/bfu.sh index 85a6406488..2dec0c1bc0 100644 --- a/usr/src/tools/scripts/bfu.sh +++ b/usr/src/tools/scripts/bfu.sh @@ -1909,6 +1909,7 @@ multiboot_archives=no dca_to_multi=no is_pcfs_boot=no need_datalink=no +new_dladm=no test $# -ge 1 || usage @@ -2130,6 +2131,15 @@ if $ZCAT $cpiodir/generic.root$ZFIX | cpio -it 2>/dev/null | \ need_datalink=yes fi +# +# Check whether the archives have an etc/dladm directory; this is +# later used to determine if aggregation.conf needs to be moved. +# +if $ZCAT $cpiodir/generic.root$ZFIX | cpio -it 2>/dev/null | \ + grep etc/dladm > /dev/null 2>&1 ; then + new_dladm=yes +fi + time_ref=/tmp/bfu.time_ref.$$ rm -f $time_ref touch $time_ref || fail "$time_ref: Unable to create time reference." @@ -6295,6 +6305,25 @@ mondo_loop() { create_datalink_conf fi + # Move existing /etc/aggregation.conf entries to + # /etc/dladm/aggregation.conf; or, if bfu'ing + # backwards, move aggregation.conf back to /etc + aggr_old=$rootprefix/etc/aggregation.conf + aggr_new=$rootprefix/etc/dladm/aggregation.conf + if [ $new_dladm = yes ]; then + if [ -f $aggr_old ]; then + # use cat instead of cp/mv to keep owner+group of dest + cat $aggr_old > $aggr_new + rm -f $aggr_old + fi + else + if [ -f $aggr_new ]; then + cp $aggr_new $aggr_old + chgrp sys $aggr_old + rm -rf $rootprefix/etc/dladm + fi + fi + print "\nRestoring configuration files.\n" cd $root |