diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-12-30 16:51:43 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-12-30 16:51:43 -0500 |
commit | 08cc36cbd1ee7d86422713bb21551eed1326b894 (patch) | |
tree | 52cc683387f903b34a7f6f798dcdbae385b58db8 /fs/nfs/nfsroot.c | |
parent | 3c92ec8ae91ecf59d88c798301833d7cf83f2179 (diff) | |
parent | 46f72f57d279688c4524df78edb5738db730eeef (diff) |
Merge branch 'devel' into next
Diffstat (limited to 'fs/nfs/nfsroot.c')
-rw-r--r-- | fs/nfs/nfsroot.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c index d74d16ce0d49..d9ef602fbc5a 100644 --- a/fs/nfs/nfsroot.c +++ b/fs/nfs/nfsroot.c | |||
@@ -86,6 +86,8 @@ | |||
86 | #include <net/ipconfig.h> | 86 | #include <net/ipconfig.h> |
87 | #include <linux/parser.h> | 87 | #include <linux/parser.h> |
88 | 88 | ||
89 | #include "internal.h" | ||
90 | |||
89 | /* Define this to allow debugging output */ | 91 | /* Define this to allow debugging output */ |
90 | #undef NFSROOT_DEBUG | 92 | #undef NFSROOT_DEBUG |
91 | #define NFSDBG_FACILITY NFSDBG_ROOT | 93 | #define NFSDBG_FACILITY NFSDBG_ROOT |
@@ -100,7 +102,7 @@ static char nfs_root_name[256] __initdata = ""; | |||
100 | static __be32 servaddr __initdata = 0; | 102 | static __be32 servaddr __initdata = 0; |
101 | 103 | ||
102 | /* Name of directory to mount */ | 104 | /* Name of directory to mount */ |
103 | static char nfs_path[NFS_MAXPATHLEN] __initdata = { 0, }; | 105 | static char nfs_export_path[NFS_MAXPATHLEN] __initdata = { 0, }; |
104 | 106 | ||
105 | /* NFS-related data */ | 107 | /* NFS-related data */ |
106 | static struct nfs_mount_data nfs_data __initdata = { 0, };/* NFS mount info */ | 108 | static struct nfs_mount_data nfs_data __initdata = { 0, };/* NFS mount info */ |
@@ -312,7 +314,7 @@ static int __init root_nfs_name(char *name) | |||
312 | printk(KERN_ERR "Root-NFS: Pathname for remote directory too long.\n"); | 314 | printk(KERN_ERR "Root-NFS: Pathname for remote directory too long.\n"); |
313 | return -1; | 315 | return -1; |
314 | } | 316 | } |
315 | sprintf(nfs_path, buf, cp); | 317 | sprintf(nfs_export_path, buf, cp); |
316 | 318 | ||
317 | return 1; | 319 | return 1; |
318 | } | 320 | } |
@@ -340,7 +342,7 @@ static int __init root_nfs_addr(void) | |||
340 | static void __init root_nfs_print(void) | 342 | static void __init root_nfs_print(void) |
341 | { | 343 | { |
342 | printk(KERN_NOTICE "Root-NFS: Mounting %s on server %s as root\n", | 344 | printk(KERN_NOTICE "Root-NFS: Mounting %s on server %s as root\n", |
343 | nfs_path, nfs_data.hostname); | 345 | nfs_export_path, nfs_data.hostname); |
344 | printk(KERN_NOTICE "Root-NFS: rsize = %d, wsize = %d, timeo = %d, retrans = %d\n", | 346 | printk(KERN_NOTICE "Root-NFS: rsize = %d, wsize = %d, timeo = %d, retrans = %d\n", |
345 | nfs_data.rsize, nfs_data.wsize, nfs_data.timeo, nfs_data.retrans); | 347 | nfs_data.rsize, nfs_data.wsize, nfs_data.timeo, nfs_data.retrans); |
346 | printk(KERN_NOTICE "Root-NFS: acreg (min,max) = (%d,%d), acdir (min,max) = (%d,%d)\n", | 348 | printk(KERN_NOTICE "Root-NFS: acreg (min,max) = (%d,%d), acdir (min,max) = (%d,%d)\n", |
@@ -485,18 +487,23 @@ static int __init root_nfs_get_handle(void) | |||
485 | { | 487 | { |
486 | struct nfs_fh fh; | 488 | struct nfs_fh fh; |
487 | struct sockaddr_in sin; | 489 | struct sockaddr_in sin; |
490 | struct nfs_mount_request request = { | ||
491 | .sap = (struct sockaddr *)&sin, | ||
492 | .salen = sizeof(sin), | ||
493 | .dirpath = nfs_export_path, | ||
494 | .version = (nfs_data.flags & NFS_MOUNT_VER3) ? | ||
495 | NFS_MNT3_VERSION : NFS_MNT_VERSION, | ||
496 | .protocol = (nfs_data.flags & NFS_MOUNT_TCP) ? | ||
497 | XPRT_TRANSPORT_TCP : XPRT_TRANSPORT_UDP, | ||
498 | .fh = &fh, | ||
499 | }; | ||
488 | int status; | 500 | int status; |
489 | int protocol = (nfs_data.flags & NFS_MOUNT_TCP) ? | ||
490 | XPRT_TRANSPORT_TCP : XPRT_TRANSPORT_UDP; | ||
491 | int version = (nfs_data.flags & NFS_MOUNT_VER3) ? | ||
492 | NFS_MNT3_VERSION : NFS_MNT_VERSION; | ||
493 | 501 | ||
494 | set_sockaddr(&sin, servaddr, htons(mount_port)); | 502 | set_sockaddr(&sin, servaddr, htons(mount_port)); |
495 | status = nfs_mount((struct sockaddr *) &sin, sizeof(sin), NULL, | 503 | status = nfs_mount(&request); |
496 | nfs_path, version, protocol, &fh); | ||
497 | if (status < 0) | 504 | if (status < 0) |
498 | printk(KERN_ERR "Root-NFS: Server returned error %d " | 505 | printk(KERN_ERR "Root-NFS: Server returned error %d " |
499 | "while mounting %s\n", status, nfs_path); | 506 | "while mounting %s\n", status, nfs_export_path); |
500 | else { | 507 | else { |
501 | nfs_data.root.size = fh.size; | 508 | nfs_data.root.size = fh.size; |
502 | memcpy(nfs_data.root.data, fh.data, fh.size); | 509 | memcpy(nfs_data.root.data, fh.data, fh.size); |