NFSROOT broken in 2.1.32

bofh@snoopy.virtual.net.au
Mon, 07 Apr 97 02:18:58 +1100


NFS root is badly broken in 2.1.32 (basically the core NFS code has been massively changed without any changes being made to nfsroot.c). Here is a patch I've developed which fixes the easy problems in nfsroot.c for anyone who wants to investigate it further:

*** nfsroot.c.orig Mon Apr 7 01:51:16 1997
--- nfsroot.c Mon Apr 7 02:13:51 1997
***************
*** 59,64 ****
--- 59,65 ----
#undef NFSROOT_DEBUG
#undef NFSROOT_BOOTP_DEBUG

+ #include <linux/sunrpc/clnt.h>

#include <linux/config.h>
#include <linux/types.h>
***************
*** 1576,1583 ****
int *p;

/* Prepare header for portmap request */
! server.sin_port = htons(NFS_PMAP_PORT);
! p = root_nfs_header(NFS_PMAP_PROC, NFS_PMAP_PROGRAM, NFS_PMAP_VERSION);
if (!p)
return -1;

--- 1577,1584 ----
int *p;

/* Prepare header for portmap request */
! server.sin_port = htons(RPC_PMAP_PORT);
! p = root_nfs_header(NFSPROC_ROOT, NFS_PROGRAM, NFS_VERSION);
if (!p)
return -1;

***************
*** 1603,1611 ****
int port;

if (nfs_port < 0) {
! if ((port = root_nfs_get_port(NFS_NFS_PROGRAM, NFS_NFS_VERSION)) < 0) {
printk(KERN_ERR "Root-NFS: Unable to get nfsd port number from server, using default\n");
! port = NFS_NFS_PORT;
}
nfs_port = port;
#ifdef NFSROOT_DEBUG
--- 1604,1612 ----
int port;

if (nfs_port < 0) {
! if ((port = root_nfs_get_port(NFS_PROGRAM, NFS_VERSION)) < 0) {
printk(KERN_ERR "Root-NFS: Unable to get nfsd port number from server, using default\n");
! port = NFS_PORT;
}
nfs_port = port;
#ifdef NFSROOT_DEBUG