#!/bin/sh
#
#  This script is responsible for setting up /etc/fstab upon the
# new instance.
#
#  This should be a simple job, but it is complicated by some of the
# differences between filesystems - some root filesystems will require
# the installation of new packages, and we have to handle that here.
#
# Steve
# --
# http://www.steve.org.uk/

prefix=$1

#
#  Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
    . /usr/lib/xen-tools/common.sh
else
    . ./hooks/common.sh
fi


#
# Log our start
#
logMessage Script $0 starting


#
# Make sure we use ide style device names if required
#
device=sda
if [ "${ide}" ]; then
    device=hda
fi

#
#  Now we have the options we can create the fstab.
#
has_xfs=0
has_reiserfs=0
cat <<E_O_FSTAB > ${prefix}/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
E_O_FSTAB
for part in `seq 1 ${NUMPARTITIONS}`; do
    eval "PARTITION=\"\${PARTITION${part}}\""
    OLDIFS="${IFS}"
    IFS=:
    x=0
    for partdata in ${PARTITION}; do
        eval "partdata${x}=\"${partdata}\""
        x=$(( $x+1 ))
    done
    IFS="${OLDIFS}"
    
    case "${partdata2}" in
        xfs)
            has_xfs=1
            ;;
        reiserfs)
            has_reiserfs=1
            ;;
    esac
    
    # This assumes a particular partition table for our ParaVM's (SIPB)
    if [ "${partdata2}" = "swap" ]; then
        echo "/dev/${device}2 none swap sw 0 0" >> ${prefix}/etc/fstab
    else
        echo "/dev/${device}1 ${partdata3} ${partdata2} ${partdata4} 0 1" >> ${prefix}/etc/fstab
    fi
done


#
#  Finally we can install any required packages for the given root
# filesystem
#
if [ $has_xfs -eq 1 ]; then
    installDebianPackage ${prefix} xfsprogs
fi
if [ $has_reiserfs -eq 1 ]; then
    installDebianPackage ${prefix} reiserfsprogs
fi


#
#  Log our finish
#
logMessage Script $0 finished
