-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi

> Please tell me your environment precisely.
> Are you using aufs on nfs-server side?

Nope.

Some more background. I want to use the latest Debian FAI (fully automated
installation 3.2) with NFSv4 on Debian Etch.

> In other words,

- - my nfs server is,
  + Debian Etch with supplied Etch kernel
    - linux-image-2.6.18-5-686 (2.6.18.dfsg.1-13etch2)
  + kernel NFS server
  + simple NFS export of a directory (/srv/fai/nfsroot) via NFSv4
    - mount on an other client works; executing programs from the
      mounted share works too

- - my nfs client is,
  + tftp boot (pxelinux)
    - config dynamically created and delivered on TFTP request
  + nfsroot via NFSv4
  + FAI 3.2 does its magic and installs Debian from generated config

- - I'm using
  + Patched initramfs-tools with nfsv4 support
    - nfsv4 did work like a charm for 1 1/2 years with Debian Sarge
      and a backported 2.6.17 kernel and nfs-tools from Debian Sid.
    - Old: sereral tmpfs instead of a union fs - much more complicated
    - New: union fs (would clean up a lot of stuff and is required
      FAI 3.2).
  + A lot of other stuff to get this running - everything works with
    NFSv3 + unionfs, but I must use NFSv4!

> And when you execute something on nfs-client, the client crashes.
> Am I right?

I'm using NFSv4 + union fs on the client side (NFSroot).

The crash happens when switching from initramfs to NFSroot, but actually
it crashes when any program is run in the NFSroot. I running /root/bin/ls
results in the same crash.

run-init /root /sbin/init "ldap" </root/dev/console >/root/dev/console

my aufs mount is

mount -t aufs -o dirs=/cow=rw:/root=ro aufs /root

I have attached my unionfs mount script.

BTW: The BUGs address is always 00000028.
This led me to the conclusion that something is wrong with my conversation
of vm_ops "populate + nopage" -> fault handling, because the return falue
changed to and int.

Kernel commit git hash: d0217ac04ca6591841e5665f518e38064f4e65bd

> Change ->fault prototype. We now return an int, which contains
> VM_FAULT_xxx code in the low byte, and FAULT_RET_xxx code in the next
> byte. FAULT_RET_ code tells the VM whether a page was found, whether it
> has been locked, and potentially other things.

> I will try linux-2.6.23-rc5 later.

I'll patch my kernel with the new -rc6 changes. Form a first glance at the
incr rc5-rc6 patch, there wasn't any change in the mm area, but quite some
changes to fs/nfs. Maybe it helps :-)

Jan-Marek
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFG5lFcj6MK58wZA3cRAqyeAJ0TKtlTAX3YwzhwDVAuJB8OBQYnkgCeJFdp
5lRZi+i27cOgeEGv5tSqQzk=
=wksx
-----END PGP SIGNATURE-----
#!/bin/sh

PREREQ=""

case $1 in
# get pre-requisites
prereqs)
        echo "$PREREQ"
        exit 0
        ;;
esac

# Common initramfs functions
. /scripts/functions

log_begin_msg "union fs setup"

# Default unionfs list
UNION_FS_LIST="aufs unionfs"

# Decode $NFSUNION value
case "x$NFSUNION" in
xunion) ;;
xyes)   ;;
x)
        # Empty or undefined
        log_info_msg "not required"
        log_end_msg "union fs setup"
        exit 0
        ;;
*)
        # List of union fs to try
        # Replace ',' with ' '
        UNION_IFS="${IFS}"
        IFS=","
        UNION_FS_LIST=""
        for opt in ${NFSUNION}
        do
                UNION_FS_LIST="${UNION_FS_LIST} ${opt}"
        done
        IFS="${UNION_IFS}"
        ;;
esac

# Try loading union fs modules
for UNION_FS in ${UNION_FS_LIST}; do
        modprobe -n $UNION_FS
        if [ $? -eq 0 ]; then
                modprobe $UNION_FS
                break
        else
                UNION_FS=""
        fi
done

[ "x" = "x$UNION_FS" ] && panic "Could't mount any union fs"

log_info_msg "Setup union fs using $UNION_FS"

# Go aroung a bug in nfs-unionfs locking for unionfs <= 1.4
minor_kernel_version=`uname -r|cut -c 5-|sed 's/[^0-9].*//'`
#if [ "${minor_kernel_version}" -lt 22 -a "$UNION_FS" = "unionfs" ]; then
#       roopt="nfsro"
#else
        roopt="ro"
#fi

# Create COW tmpfs
mkdir -p /cow
mount tmpfs -t tmpfs -o rw /cow || panic "Can not mount tmpfs on /cow"

# Create unionfs from /cow and $rootmnt
mount -t ${UNION_FS} -o dirs=/cow=rw:"$rootmnt"=$roopt ${UNION_FS} "$rootmnt" 
|| panic "${UNION_FS} mount failed"

# Move COW into NFS root
mkdir "${rootmnt}/cow" || panic "couldn't create COW dir '${rootmnt}/cow'"
mount --move /cow "${rootmnt}/cow"

# Remove NFS resolv.conf
rm -f "${rootmnt}/etc/resolv.conf"

# Create xconsole for FAI
mknod -m 644 /dev/xconsole p

# Prepare aufs
echo "FLUSH=ALL" > ${DESTDIR}/etc/default/auplink
cp "${rootmnt}"/usr/local/bin "${rootmnt}"/sbin

log_end_msg "union fs setup"

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

Reply via email to