OpenSolaris

Printable Version Enter a New Search
Bug ID 6376682
Synopsis /etc/flash/precreation/caplib doesn't execute properly and impact flash creation in snv_31 for sun4u
State 10-Fix Delivered:Verified (Fix available in build)
Category:Subcategory consolidation:os-net-pkgs
Keywords onnv_triage | sx-doc
Responsible Engineer Chris Kiick
Reported Against
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_34
Fixed In snv_34
Release Fixed solaris_nevada(snv_34) , solaris_10u2(s10u2_06) (Bug ID:2133694)
Related Bugs 6357980 , 2133179 , 6370222 , 6377526 , 5062145 , 6192995
Submit Date 25-January-2006
Last Update Date 8-June-2007
Description
This is found in snv_31 and also in the latest Nevada nightly build.  When you create a flash archive on sun4u, it will complain as follow:

# flarcreate -S -n nv_32.SUNWCXall.line2-240 -c /net/ins3525-svr/export/rw/nv_32.SUNWCXall.line2-240
Full Flash
Checking integrity...
Integrity OK.
Running precreation scripts...
./caplib[68]: test: argument expected
Precreation scripts done.
Creating the archive...
Archive creation complete.
Running postcreation scripts...
Postcreation scripts done.

Running pre-exit scripts...
./remount_hwcap.744: !/bin/sh: not found
Pre-exit scripts done.
# 

	The reason is that the /etc/flash/precreation/caplib had a typo and it does not execute properly to umount the lofs before creating the flash archive and mounting them back after flash creation.
Actually, this isn't a mistake in integration; the caplib in question is likely the one
from this checkin:

PSARC 2005/749 Panther libc_psr
5062145 hwcap flags for panther
6357980 block store in memcpy() hurts performance on USIV+

As this fix was integrated into snv_31.
I fixed the typo of !/bin/sh and change the script to run ksh in -x mode and it still fails as follow:

line2-240# flarcreate -S -n test.flar -c /net/ins3525-svr/export/rw/test.flar
Full Flash
Checking integrity...
Integrity OK.
Running precreation scripts...
+ [ -z 13710 ]
+ CHMOD=/usr/bin/chmod
+ ELFDUMP=/usr/ccs/bin/elfdump
+ MOUNT=/usr/sbin/mount
+ UMOUNT=/usr/sbin/umount
+ EGREP=/usr/bin/egrep
+ SED=/usr/bin/sed
+ CMD_LIST=/usr/bin/chmod /usr/ccs/bin/elfdump /usr/sbin/mount /usr/sbin/umount /usr/bin/egrep /usr/bin/sed
+ [ ! -x /usr/bin/chmod ]
+ [ ! -x /usr/ccs/bin/elfdump ]
+ [ ! -x /usr/sbin/mount ]
+ [ ! -x /usr/sbin/umount ]
+ [ ! -x /usr/bin/egrep ]
+ [ ! -x /usr/bin/sed ]
+ + /usr/sbin/mount
+ /usr/bin/sed -e s:^\(/[^ ]*\) on \([^ ]*\).*$:\1@\2:
+ /usr/bin/egrep ^/platform.*hwcap
LIBS=/platform/sun4u-us3/lib/libc_psr.so.1@/platform/sun4u-us3/lib/libc_psr/libc_psr_hwcap1.so.1
/platform/sun4u-us3/lib/sparcv9/libc_psr.so.1@/platform/sun4u-us3/lib/sparcv9/libc_psr/libc_psr_hwcap1.so.1
+ [ ! /platform/sun4u-us3/lib/libc_psr.so.1@/platform/sun4u-us3/lib/libc_psr/libc_psr_hwcap1.so.1 /platform/sun4u-us3/lib/sparcv9/libc_psr.so.1@/platform/sun4u-us3/lib/sparcv9/libc_psr/libc_psr_hwcap1.so.1 ]
./caplib[68]: test: argument expected
+ REMOUNT_DIR=/etc/flash/preexit
+ REMOUNT=/etc/flash/preexit/remount_hwcap.13710
+ [ ! -d /etc/flash/preexit ]
+ [ -f /etc/flash/preexit/remount_hwcap.13710 ]
+ umask 477
+ cat
+ 1> /etc/flash/preexit/remount_hwcap.13710 0<<
#!/bin/sh
if [ \"$FLASH_PID\" != \"13710\" ]; then
        /bin/rm -f /etc/flash/preexit/remount_hwcap.13710
        exit 0
fi
+ [ 0 -ne 0 ]
+ read MOUNTPOINT MOUNTLIB
+ IFS=@
+ echo /platform/sun4u-us3/lib/libc_psr.so.1@/platform/sun4u-us3/lib/libc_psr/libc_psr_hwcap1.so.1
+ /usr/sbin/umount /platform/sun4u-us3/lib/libc_psr.so.1
+ MOUNTOPTS=-O -F lofs
+ echo /usr/sbin/mount -O -F lofs /platform/sun4u-us3/lib/libc_psr/libc_psr_hwcap1.so.1 /platform/sun4u-us3/lib/libc_psr.so.1
+ 1>> /etc/flash/preexit/remount_hwcap.13710
+ read MOUNTPOINT MOUNTLIB
+ IFS=@
+ echo /platform/sun4u-us3/lib/sparcv9/libc_psr.so.1@/platform/sun4u-us3/lib/sparcv9/libc_psr/libc_psr_hwcap1.so.1
+ /usr/sbin/umount /platform/sun4u-us3/lib/sparcv9/libc_psr.so.1
+ MOUNTOPTS=-O -F lofs
+ echo /usr/sbin/mount -O -F lofs /platform/sun4u-us3/lib/sparcv9/libc_psr/libc_psr_hwcap1.so.1 /platform/sun4u-us3/lib/sparcv9/libc_psr.so.1
+ 1>> /etc/flash/preexit/remount_hwcap.13710
+ echo /bin/rm -f /etc/flash/preexit/remount_hwcap.13710
+ 1>> /etc/flash/preexit/remount_hwcap.13710
+ echo exit 0
+ 1>> /etc/flash/preexit/remount_hwcap.13710
+ /usr/bin/chmod 0500 /etc/flash/preexit/remount_hwcap.13710
+ exit 0
Precreation scripts done.
Creating the archive...


	During the flash archive creation, the umount does happen properly:

df
/                  (/dev/dsk/c1t0d0s0 ): 4465590 blocks   668665 files
/devices           (/devices          ):       0 blocks        0 files
/system/contract   (ctfs              ):       0 blocks 2147483612 files
/proc              (proc              ):       0 blocks    29949 files
/etc/mnttab        (mnttab            ):       0 blocks        0 files
/etc/svc/volatile  (swap              ): 3683728 blocks   294992 files
/system/object     (objfs             ):       0 blocks 2147483469 files
/dev/fd            (fd                ):       0 blocks        0 files
/tmp               (swap              ): 3683728 blocks   294992 files
/var/run           (swap              ): 3683728 blocks   294992 files
/export            (/dev/dsk/c1t1d0s7 ):141047134 blocks  8497211 files
/export/home       (/dev/dsk/c1t0d0s7 ):124909188 blocks  7524604 files
/net/ins3525-svr/export/rw(ins3525-svr:/export/rw):89116732 blocks 99129733 files
/home/ding         (jurassic.sfbay:/export/ogromny/ding):86550710 blocks 26370069 files
/usr/dist          (mi-umpk17-02.sfbay,mi-umpk17-01.sfbay,mf-umpk10-02.sfbay,mi-umpk18-02.sfbay,mi-umpk18-01.sfbay,mi-umpk15-01.sfbay,mi-umpk14-02.sfbay,mf-umpk10-01.sfbay,mi-umpk14-01.sfbay,mi-umpk15-02.sfbay,mi-umpk12-01.sfbay,mi-umpk12-02.sfbay,mf-umpk16-02.sfbay,mf-umpk16-01.sfbay:/usr/dist):24497686 blocks  3849382 files
#
# pwd
/etc/flash/preexit
# more re*
#!/bin/sh
if [ \"$FLASH_PID\" != \"13710\" ]; then
        /bin/rm -f /etc/flash/preexit/remount_hwcap.13710
        exit 0
fi
/usr/sbin/mount -O -F lofs /platform/sun4u-us3/lib/libc_psr/libc_psr_hwcap1.so.1 /platform/sun4u-us
3/lib/libc_psr.so.1
/usr/sbin/mount -O -F lofs /platform/sun4u-us3/lib/sparcv9/libc_psr/libc_psr_hwcap1.so.1 /platform/
sun4u-us3/lib/sparcv9/libc_psr.so.1
/bin/rm -f /etc/flash/preexit/remount_hwcap.13710
exit 0
#
Work Around
Manually edit the /etc/flash/precreation/caplib and edit:

!/bin/sh  

to

#!/bin/sh
Comments
N/A