defect 3135: changed the mount process for the statelite directory (for persistent entries) that make a directory after the node name and remount to the nodename directory instead of nfs root dir for persistent
This commit is contained in:
		| @@ -718,7 +718,8 @@ sub mknetboot | ||||
|                 } | ||||
|                 # END service node | ||||
|             } | ||||
| 	    } | ||||
|             $kcmdline .= "NODE=$node "; | ||||
|         } | ||||
|         else { | ||||
|             $kcmdline = | ||||
|               "imgurl=$httpmethod://$imgsrv:$httpport/$rootimgdir/rootimg.$suffix "; | ||||
|   | ||||
| @@ -21,20 +21,7 @@ ELIST=[]    # entry list, each entry will contain the type and the path | ||||
| declare -a CLIST  | ||||
| declare -a PLIST  | ||||
|  | ||||
| ME=`hostname -s` | ||||
| MAX=30 | ||||
| TRIES=1 | ||||
| while [ x$ME = x ];do | ||||
|     TRIES=$[ $TRIES+1 ] | ||||
|     if [ $TRIES -eq $MAX ]; then | ||||
|         echo "Can NOT get the hostname of the node. System will fail to enable the persistent files.">/dev/console | ||||
|         break | ||||
|     fi | ||||
|     sleep 1 | ||||
|     ME=`hostname -s` | ||||
| done | ||||
|  | ||||
| PERSISTENT="${MNTDIR}/$SL/persistent/$ME" | ||||
| PERSISTENT="${MNTDIR}/$SL/persistent" | ||||
|  | ||||
| if [ ! -d $MNTDIR ]; then | ||||
| 	echo "statelite is only to be run in initrdfs" | ||||
|   | ||||
| @@ -21,20 +21,7 @@ ELIST=[]    # entry list, each entry will contain the type and the path | ||||
| declare -a CLIST  | ||||
| declare -a PLIST  | ||||
|  | ||||
| ME=`hostname` | ||||
| MAX=30 | ||||
| TRIES=1 | ||||
| while [ x$ME = x ];do | ||||
|     TRIES=$[ $TRIES+1 ] | ||||
|     if [ $TRIES -eq $MAX ]; then | ||||
|         echo "Can NOT get the hostname of the node. System will fail to enable the persistent files.">/dev/console | ||||
|         break | ||||
|     fi | ||||
|     sleep 1 | ||||
|     ME=`hostname -s` | ||||
| done | ||||
|  | ||||
| PERSISTENT="${MNTDIR}/$SL/persistent/$ME" | ||||
| PERSISTENT="${MNTDIR}/$SL/persistent" | ||||
|  | ||||
| if [ ! -d $MNTDIR ]; then | ||||
| 	echo "statelite is only to be run in initrdfs" | ||||
|   | ||||
| @@ -40,6 +40,9 @@ fi | ||||
| mount -t tmpfs rw $NEWROOT/$RWDIR | ||||
| mkdir -p $NEWROOT/$RWDIR/tmpfs | ||||
| ME=`hostname` | ||||
| if [ ! -z $NODE ]; then | ||||
|     ME=$NODE | ||||
| fi | ||||
|  | ||||
| # mount the SNAPSHOT directory here for persistent use. | ||||
| if [ ! -z $SNAPSHOTSERVER ]; then | ||||
| @@ -65,6 +68,38 @@ if [ ! -z $SNAPSHOTSERVER ]; then | ||||
|         echo "Trying again in $RS seconds..." | ||||
|         sleep $RS | ||||
|     done | ||||
|  | ||||
|     # create directory which is named after my node name | ||||
|     mkdir -p $NEWROOT/$RWDIR/persistent/$ME | ||||
|     ITER=0 | ||||
|     # umount current persistent mount | ||||
|     while ! umount -l $NEWROOT/$RWDIR/persistent; do | ||||
|         ITER=$(( ITER + 1 )) | ||||
|         if [ "$ITER" == "$MAXTRIES" ]; then | ||||
|             echo "Your are dead, rpower $ME boot to play again." | ||||
|             echo "Cannot umount $NEWROOT/$RWDIR/persistent." | ||||
|             /bin/sh | ||||
|             exit | ||||
|         fi | ||||
|         RS= $(( $RANDOM % 20 )) | ||||
|         echo "Trying again in $RS seconds..." | ||||
|         sleep $RS | ||||
|     done | ||||
|  | ||||
|     # mount persistent to server:/rootpath/nodename | ||||
|     ITER=0 | ||||
|     while ! mount $SNAPSHOTSERVER:/$SNAPSHOTROOT/$ME  $NEWROOT/$RWDIR/persistent -o $MNT_OPTIONS; do | ||||
|         ITER=$(( ITER + 1 )) | ||||
|         if [ "$ITER" == "$MAXTRIES" ]; then | ||||
|             echo "Your are dead, rpower $ME boot to play again." | ||||
|             echo "Possible problems: cannot mount to $SNAPSHOTSERVER:/$SNAPSHOTROOT/$ME." | ||||
|             /bin/sh | ||||
|             exit | ||||
|         fi | ||||
|         RS= $(( $RANDOM % 20 )) | ||||
|         echo "Trying again in $RS seconds..." | ||||
|         sleep $RS | ||||
|     done | ||||
| fi | ||||
|  | ||||
| # TODO: handle the dhclient/resolv.conf/ntp, etc | ||||
|   | ||||
| @@ -113,6 +113,10 @@ elif [ -r /rootimg-statelite.gz ]; then | ||||
|   mount -t tmpfs rw $NEWROOT/$RWDIR | ||||
|   mkdir -p $NEWROOT/$RWDIR/tmpfs | ||||
|   ME=`hostname` | ||||
|   if [ ! -z $NODE ]; then | ||||
|       ME=$NODE | ||||
|   fi | ||||
|  | ||||
|  | ||||
|   # mount the SNAPSHOT directory here for persistent use. | ||||
|   if [ ! -z $STATEMNT ]; then | ||||
| @@ -147,6 +151,38 @@ elif [ -r /rootimg-statelite.gz ]; then | ||||
|         echo "Trying again in $RS seconds ..." | ||||
|         sleep $RS | ||||
|     done | ||||
|  | ||||
|     # create directory which is named after my node name | ||||
|     mkdir -p $NEWROOT/$RWDIR/persistent/$ME | ||||
|     ITER=0 | ||||
|     # umount current persistent mount | ||||
|     while ! umount -l $NEWROOT/$RWDIR/persistent; do | ||||
|         ITER=$(( ITER + 1 )) | ||||
|         if [ "$ITER" == "$MAXTRIES" ]; then | ||||
|             echo "Your are dead, rpower $ME boot to play again." | ||||
|             echo "Cannot umount $NEWROOT/$RWDIR/persistent." | ||||
|             /bin/sh | ||||
|             exit | ||||
|         fi | ||||
|         RS= $(( $RANDOM % 20 )) | ||||
|         echo "Trying again in $RS seconds..." | ||||
|         sleep $RS | ||||
|     done | ||||
|  | ||||
|     # mount persistent to server:/rootpath/nodename | ||||
|     ITER=0 | ||||
|     while ! mount $SNAPSHOTSERVER:/$SNAPSHOTROOT/$ME  $NEWROOT/$RWDIR/persistent -o $MNT_OPTIONS; do | ||||
|         ITER=$(( ITER + 1 )) | ||||
|         if [ "$ITER" == "$MAXTRIES" ]; then | ||||
|             echo "Your are dead, rpower $ME boot to play again." | ||||
|             echo "Possible problems: cannot mount to $SNAPSHOTSERVER:/$SNAPSHOTROOT/$ME." | ||||
|             /bin/sh | ||||
|             exit | ||||
|         fi | ||||
|         RS= $(( $RANDOM % 20 )) | ||||
|         echo "Trying again in $RS seconds..." | ||||
|         sleep $RS | ||||
|     done | ||||
|   fi | ||||
|  | ||||
|   $NEWROOT/etc/init.d/localdisk | ||||
|   | ||||
| @@ -1224,17 +1224,19 @@ for i in `cat /proc/cmdline`; do | ||||
|    elif [ "\$KEY" == 'STATEMNT' ]; then | ||||
| 	STATELITE=1 | ||||
| 	VALUE=`echo \$i |awk -F= '{print \$2}'` | ||||
|     # the VALUE may be null | ||||
|     if [ ! -z \$VALUE ]; then | ||||
| 	    SNAPSHOTSERVER=`echo \$VALUE|awk -F: '{print \$1}'` | ||||
| 	    SNAPSHOTROOT=`echo \$VALUE|awk -F/ '{for(i=2;i<=NF;i++) printf "/%s",\$i}'` | ||||
| 	    # may be that there is not server and just a directory. | ||||
| 	    if [ -z \$SNAPSHOTROOT ] | ||||
| 	    then | ||||
| 		    SNAPSHOTROOT=\$SNAPSHOTSERVER | ||||
| 		    SNAPSHOTSERVER= | ||||
| 	    fi | ||||
|     fi | ||||
|         # the VALUE may be null | ||||
|         if [ ! -z \$VALUE ]; then | ||||
|             SNAPSHOTSERVER=`echo \$VALUE|awk -F: '{print \$1}'` | ||||
|             SNAPSHOTROOT=`echo \$VALUE|awk -F/ '{for(i=2;i<=NF;i++) printf "/%s",\$i}'` | ||||
|             # may be that there is not server and just a directory. | ||||
|             if [ -z \$SNAPSHOTROOT ] | ||||
|             then | ||||
|                 SNAPSHOTROOT=\$SNAPSHOTSERVER | ||||
|                 SNAPSHOTSERVER= | ||||
|             fi | ||||
|        fi | ||||
|    elif [ "\$KEY" == 'NODE' ]; then | ||||
|         NODENAME=`echo \$i |awk -F= '{print \$2}'` | ||||
|    fi | ||||
| done | ||||
|  | ||||
| @@ -1257,6 +1259,9 @@ if [ "\$STATELITE" = "1" ]; then | ||||
|     MAXTRIES=5 | ||||
|     ITER=0 | ||||
|     ME=`hostname` | ||||
|     if [ ! -z "\$NODENAME" ]; then | ||||
|         ME=\$NODENAME | ||||
|     fi | ||||
|     if [ "\$NFSROOT" = "1" ]; then | ||||
|         while ! mount.nfs \${SERVER}:\${ROOTDIR}/rootimg \$NEWROOT -r -n -o nolock,rsize=32768,tcp,nfsvers=3,timeo=14; do | ||||
|             ITER=\$(expr \$ITER + 1) | ||||
| @@ -1345,6 +1350,38 @@ EOMS | ||||
|             echo -e "Trying again in \$RS seconds" | ||||
|             sleep \$RS | ||||
|         done | ||||
|  | ||||
|         # create directory which is named after my node name | ||||
|         mkdir -p \$NEWROOT/\$RWDIR/persistent/\$ME | ||||
|         ITER=0 | ||||
|         # umount current persistent mount | ||||
|         while ! umount -l \$NEWROOT/\$RWDIR/persistent; do | ||||
|             ITER=\$(( ITER + 1 )) | ||||
|             if [ "\$ITER" == "\$MAXTRIES" ]; then | ||||
|                 echo "Your are dead, rpower \$ME boot to play again." | ||||
|                 echo "Cannot umount \$NEWROOT/\$RWDIR/persistent." | ||||
|                 /bin/sh | ||||
|                 exit | ||||
|             fi | ||||
|             RS= \$(( \$RANDOM % 20 )) | ||||
|             echo "Trying again in \$RS seconds..." | ||||
|             sleep \$RS | ||||
|         done | ||||
|  | ||||
|         # mount persistent to server:/rootpath/nodename | ||||
|         ITER=0 | ||||
|         while ! mount \$SNAPSHOTSERVER:/\$SNAPSHOTROOT/\$ME  \$NEWROOT/\$RWDIR/persistent -o nolock,rsize=32768; do | ||||
|             ITER=\$(( ITER + 1 )) | ||||
|             if [ "\$ITER" == "\$MAXTRIES" ]; then | ||||
|                 echo "Your are dead, rpower \$ME boot to play again." | ||||
|                 echo "Possible problems: cannot mount to \$SNAPSHOTSERVER:/\$SNAPSHOTROOT/\$ME." | ||||
|                 /bin/sh | ||||
|                 exit | ||||
|             fi | ||||
|             RS= \$(( \$RANDOM % 20 )) | ||||
|             echo "Trying again in \$RS seconds..." | ||||
|             sleep \$RS | ||||
|         done | ||||
|     fi | ||||
|  | ||||
|     # have to preserve the initial DHCP request. | ||||
|   | ||||
| @@ -1172,6 +1172,8 @@ for i in `cat /proc/cmdline`; do | ||||
|                 SNAPSHOTSERVER= | ||||
|             fi | ||||
|         fi | ||||
|     elif [ "\$KEY" == 'NODE' ]; then | ||||
|         NODENAME=`echo \$i |awk -F= '{print \$2}'` | ||||
|     fi | ||||
| done | ||||
|  | ||||
| @@ -1186,6 +1188,9 @@ if [ "\$STATELITE" = "1" ]; then | ||||
|     MAXTRIES=15 | ||||
|     ITER=0 | ||||
|     ME=`hostname` | ||||
|     if [ ! -z "$NODENAME" ]; then | ||||
|         ME=$NODENAME | ||||
|     fi | ||||
|     if [ "\$NFSROOT" = "1" ]; then | ||||
|         while ! mount.nfs \${SERVER}:\${ROOTDIR}/rootimg \$NEWROOT -r -n -o nolock,rsize=32768,tcp,nfsvers=3,timeo=14; do | ||||
|             ITER=\$(expr \$ITER + 1) | ||||
| @@ -1281,6 +1286,38 @@ fi | ||||
|             echo -e "Trying again in \$RS seconds" | ||||
|             sleep \$RS  | ||||
|         done | ||||
|  | ||||
|         # create directory which is named after my node name | ||||
|         mkdir -p \$NEWROOT/\$RWDIR/persistent/\$ME | ||||
|         ITER=0 | ||||
|         # umount current persistent mount | ||||
|         while ! umount -l \$NEWROOT/\$RWDIR/persistent; do | ||||
|             ITER=\$(( ITER + 1 )) | ||||
|             if [ "\$ITER" == "\$MAXTRIES" ]; then | ||||
|                 echo "Your are dead, rpower \$ME boot to play again." | ||||
|                 echo "Cannot umount \$NEWROOT/\$RWDIR/persistent." | ||||
|                 /bin/sh | ||||
|                 exit | ||||
|             fi | ||||
|             RS= \$(( \$RANDOM % 20 )) | ||||
|             echo "Trying again in \$RS seconds..." | ||||
|             sleep \$RS | ||||
|         done | ||||
|      | ||||
|         # mount persistent to server:/rootpath/nodename | ||||
|         ITER=0 | ||||
|         while ! mount \$SNAPSHOTSERVER:/\$SNAPSHOTROOT/\$ME  \$NEWROOT/\$RWDIR/persistent -o nolock,\$XCATMNTOPTS; do | ||||
|             ITER=\$(( ITER + 1 )) | ||||
|             if [ "\$ITER" == "\$MAXTRIES" ]; then | ||||
|                 echo "Your are dead, rpower \$ME boot to play again." | ||||
|                 echo "Possible problems: cannot mount to \$SNAPSHOTSERVER:/\$SNAPSHOTROOT/\$ME." | ||||
|                 /bin/sh | ||||
|                 exit | ||||
|             fi | ||||
|             RS= \$(( \$RANDOM % 20 )) | ||||
|             echo "Trying again in \$RS seconds..." | ||||
|             sleep \$RS | ||||
|         done | ||||
|     fi | ||||
|  | ||||
|     grep '\\(shell\\)' /proc/cmdline >/dev/null && shell | ||||
|   | ||||
		Reference in New Issue
	
	Block a user