Subject: Re: problems attempting remote NFS root
To: Neil Ludban <nludban@columbus.rr.com>
From: Christian Limpach <chris@pin.lu>
List: port-xen
Date: 04/10/2004 22:24:47
Hi!

> [4] boot device: xennet0
> [4] root on xennet0
> [4] mountroot: trying nfs...
> [4] nfs_boot: trying static
> [4] nfs_boot: client_addr=192.168.1.31
> [4] nfs_boot: gateway=192.168.1.42
> [4] nfs_boot: netmask=255.255.255.0
> [4] nfs_boot: server=192.168.1.17
> [4] nfs_boot: root=192.168.1.17:/export/xen31
>
>
> At this point it hangs, I see only one packet arrive at the NFS server:
>
> 13:03:22.271279 0:10:5a:15:e4:10 ff:ff:ff:ff:ff:ff 0806 60: arp who-has
> 192.168.1.31 tell 192.168.1.31

This looks right, there should be a 3 second pause and then an arp request
with the NFS server's IP address.  This is the first place where the kernel
goes to sleep.  Could you add printf's around the sleep to see if it ever
returns from sleep?  The sleep's in line 287 in file nfs/nfs_boot.c.
Something like:
        /* give the link some time to get up */
        printf("before nfs_boot_setaddress sleep\n");
        tsleep(nfs_boot_setaddress, PZERO, "nfsbtd", 3 * hz);
        printf("after nfs_boot_setaddress sleep\n");
out:
        soclose(so);
        return (error);

This will show if timer interrupts and context switches work.

     christian