Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Oct 2009 16:30:48 -0400 (EDT)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Daniel Braniss <danny@cs.huji.ac.il>
Cc:        freebsd-current@freebsd.org
Subject:   Re: 8.0RC1 and BOOTP_NFSV3 regression?
Message-ID:  <Pine.GSO.4.63.0910141616260.18335@muncher.cs.uoguelph.ca>
In-Reply-To: <E1MuRbN-000ERC-EZ@kabab.cs.huji.ac.il>
References:  <E1MuRbN-000ERC-EZ@kabab.cs.huji.ac.il>

next in thread | previous in thread | raw e-mail | index | archive | help


On Sun, 4 Oct 2009, Daniel Braniss wrote:

> I'm not sure when this happened, but a kernel compiled with
> BOOTP_NFSV3 fails when the server is not FreeBSD (ie NetAPP).
>
> before, with the option set, only when kernel_options="nfsv3" was set
> it would fail/panic, this way, I could control which diskless, shearing the
> same kernel, would boot with nfsv3 and which not, dependig on the server.
>
> there is hope! before it would panic when receiving a v3 file handle, now
> it fails, but panics later when no init is found :-)
>
> is anyone with enough nfs v2/v3 knowledge willing to fix this?
>
Just fyi, the change of using NFSv3 by default resulted in this. The
poster has confirmed that using "nfsv2" as an explicit option, allows
the boot to work against a non-FreeBSD server.

The problem is that nfs_setup_diskless() in sys/nfsclient/nfs_diskless.c
assumed an NFSv2 type file handle, and then sys/nfsclient/nfs_vfsops.c
sets the file handle size to NFSX_V3FH (which is the size of a FreeBSD
server's NFSv3 file handle).

At a glance, changing nfs_setup_diskless() to set the file handle size
based on the length of boot.nfsroot.nfshandle is easy, but then it
gets interesting...

- In lib/libstand/nfs.c, there is NFSv2 code that fills in
   boot.nfsroot.nfshandle and adding/converting this to use NFSv3
   wouldn't be too hard (more work than the above, but..).
   --> But I can't see how it can be told to use NFSv2 vs NFSv3?
       (Does anyone know of a way or would trying NFSv3 and then
        falling back to NFSv2 make sense?)

I don't have a diskless NFS setup, so I'm going to have to depend
upon others to do testing. (The poster is willing to do some testing
in about 2 weeks.)

I don't think this can be done for 8.0. If the change is considered
a regression that needs to be fixed for 8.0, taking NFSMNT_NFSV3 out
of the default flags in nfs_setup_diskless() would but it back the
way FreeBSD7 behaves. I'll let others decide if this should be done.

rick




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.63.0910141616260.18335>