# FIXME This needs error checking

retry_nr=0

# parse nfs bootargs + launch ipconfig and nfsmount
do_nfsmount()
{
	local f

	ConfigIP

	# get nfs root from DHCP
	if [ "x$NFSROOT" = "xauto" ]; then
		NFSROOT="$ROOTPATH"
		[ "${NFSROOT#*:}" = "$NFSROOT" ] && NFSROOT="$ROOTSERVER:$ROOTPATH"
	# nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
	elif [ -n "${NFSROOT}" ]; then
		# nfs options are an optional arg
		[ "${NFSROOT#*,}" = "$NFSROOT" ] || NFSOPTS="-o ${NFSROOT#*,}"
		NFSROOT=${NFSROOT%%,*}
		[ "${NFSROOT#*:}" = "$NFSROOT" ] && NFSROOT="$ROOTSERVER:$NFSROOT"
	fi

	[ -n "$NFSOPTS" ] || NFSOPTS="-o retrans=10"

	run_scripts /scripts/nfs-premount

	[ "x$readonly" = xy ] && f=o || f=w

	nfsmount -o nolock -o r$f $NFSOPTS $NFSROOT $rootmnt
}

# NFS root mounting
mountroot()
{
	run_scripts /scripts/nfs-top

	modprobe -q nfs
	# For DHCP
	modprobe -q af_packet

	# Default delay is around 180s
	# FIXME: add usplash_write info
	delay=${ROOTDELAY:-180}

	# loop until nfsmount succeds
	while [ $retry_nr -lt $delay ] && [ ! -e "$rootmnt$init" ]; do
		[ $retry_nr -gt 0 -a "x$quiet" != xy ] && log_begin_msg "Retrying nfs mount"
		do_nfsmount
		retry_nr=$(($retry_nr + 1))
		[ -e "$rootmnt$init" ] || /bin/sleep 1
		[ $retry_nr -gt 0 -a "x$quiet" != xy ] && log_end_msg
	done

	run_scripts /scripts/nfs-bottom
}
