Merge branch 'devel' into next
[sfrench/cifs-2.6.git] / fs / nfs / nfsroot.c
index 8478fc25daee196383f3e40a34999795be41585e..d9ef602fbc5a893f60d087fe00a2744b7fdcd9e4 100644 (file)
@@ -86,6 +86,8 @@
 #include <net/ipconfig.h>
 #include <linux/parser.h>
 
+#include "internal.h"
+
 /* Define this to allow debugging output */
 #undef NFSROOT_DEBUG
 #define NFSDBG_FACILITY NFSDBG_ROOT
@@ -100,7 +102,7 @@ static char nfs_root_name[256] __initdata = "";
 static __be32 servaddr __initdata = 0;
 
 /* Name of directory to mount */
-static char nfs_path[NFS_MAXPATHLEN] __initdata = { 0, };
+static char nfs_export_path[NFS_MAXPATHLEN] __initdata = { 0, };
 
 /* NFS-related data */
 static struct nfs_mount_data nfs_data __initdata = { 0, };/* NFS mount info */
@@ -312,7 +314,7 @@ static int __init root_nfs_name(char *name)
                printk(KERN_ERR "Root-NFS: Pathname for remote directory too long.\n");
                return -1;
        }
-       sprintf(nfs_path, buf, cp);
+       sprintf(nfs_export_path, buf, cp);
 
        return 1;
 }
@@ -329,7 +331,7 @@ static int __init root_nfs_addr(void)
        }
 
        snprintf(nfs_data.hostname, sizeof(nfs_data.hostname),
-                "%u.%u.%u.%u", NIPQUAD(servaddr));
+                "%pI4", &servaddr);
        return 0;
 }
 
@@ -340,7 +342,7 @@ static int __init root_nfs_addr(void)
 static void __init root_nfs_print(void)
 {
        printk(KERN_NOTICE "Root-NFS: Mounting %s on server %s as root\n",
-               nfs_path, nfs_data.hostname);
+               nfs_export_path, nfs_data.hostname);
        printk(KERN_NOTICE "Root-NFS:     rsize = %d, wsize = %d, timeo = %d, retrans = %d\n",
                nfs_data.rsize, nfs_data.wsize, nfs_data.timeo, nfs_data.retrans);
        printk(KERN_NOTICE "Root-NFS:     acreg (min,max) = (%d,%d), acdir (min,max) = (%d,%d)\n",
@@ -421,8 +423,8 @@ static int __init root_nfs_getport(int program, int version, int proto)
 {
        struct sockaddr_in sin;
 
-       printk(KERN_NOTICE "Looking up port of RPC %d/%d on %u.%u.%u.%u\n",
-               program, version, NIPQUAD(servaddr));
+       printk(KERN_NOTICE "Looking up port of RPC %d/%d on %pI4\n",
+               program, version, &servaddr);
        set_sockaddr(&sin, servaddr, 0);
        return rpcb_getport_sync(&sin, program, version, proto);
 }
@@ -485,18 +487,23 @@ static int __init root_nfs_get_handle(void)
 {
        struct nfs_fh fh;
        struct sockaddr_in sin;
+       struct nfs_mount_request request = {
+               .sap            = (struct sockaddr *)&sin,
+               .salen          = sizeof(sin),
+               .dirpath        = nfs_export_path,
+               .version        = (nfs_data.flags & NFS_MOUNT_VER3) ?
+                                       NFS_MNT3_VERSION : NFS_MNT_VERSION,
+               .protocol       = (nfs_data.flags & NFS_MOUNT_TCP) ?
+                                       XPRT_TRANSPORT_TCP : XPRT_TRANSPORT_UDP,
+               .fh             = &fh,
+       };
        int status;
-       int protocol = (nfs_data.flags & NFS_MOUNT_TCP) ?
-                                       XPRT_TRANSPORT_TCP : XPRT_TRANSPORT_UDP;
-       int version = (nfs_data.flags & NFS_MOUNT_VER3) ?
-                                       NFS_MNT3_VERSION : NFS_MNT_VERSION;
 
        set_sockaddr(&sin, servaddr, htons(mount_port));
-       status = nfs_mount((struct sockaddr *) &sin, sizeof(sin), NULL,
-                          nfs_path, version, protocol, &fh);
+       status = nfs_mount(&request);
        if (status < 0)
                printk(KERN_ERR "Root-NFS: Server returned error %d "
-                               "while mounting %s\n", status, nfs_path);
+                               "while mounting %s\n", status, nfs_export_path);
        else {
                nfs_data.root.size = fh.size;
                memcpy(nfs_data.root.data, fh.data, fh.size);