Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 217030
b: refs/heads/master
c: 60ac036
h: refs/heads/master
v: v3
  • Loading branch information
Chuck Lever authored and Trond Myklebust committed Sep 17, 2010
1 parent 01e9c71 commit 53f53e5
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ed58b2917be24fc8603128e32d50a1378afe66e1
refs/heads/master: 60ac03685bf513f9d9b6e8e098018b35309ed326
32 changes: 23 additions & 9 deletions trunk/fs/nfs/nfsroot.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
#define NFS_ROOT "/tftpboot/%s"

/* Parameters passed from the kernel command line */
static char nfs_root_name[256] __initdata = "";
static char nfs_root_parms[256] __initdata = "";

/* Address of NFS server */
static __be32 servaddr __initdata = 0;
Expand Down Expand Up @@ -369,7 +369,7 @@ static int __init root_nfs_init(void)
* be able to use the client IP address for the remote root
* directory (necessary for pure RARP booting).
*/
if (root_nfs_name(nfs_root_name) < 0 ||
if (root_nfs_name(nfs_root_parms) < 0 ||
root_nfs_addr() < 0)
return -1;

Expand All @@ -380,23 +380,37 @@ static int __init root_nfs_init(void)
return 0;
}


/*
* Parse NFS server and directory information passed on the kernel
* command line.
*
* nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
*
* If there is a "%s" token in the <root-dir> string, it is replaced
* by the ASCII-representation of the client's IP address.
*/
static int __init nfs_root_setup(char *line)
{
ROOT_DEV = Root_NFS;

if (line[0] == '/' || line[0] == ',' || (line[0] >= '0' && line[0] <= '9')) {
strlcpy(nfs_root_name, line, sizeof(nfs_root_name));
strlcpy(nfs_root_parms, line, sizeof(nfs_root_parms));
} else {
int n = strlen(line) + sizeof(NFS_ROOT) - 1;
if (n >= sizeof(nfs_root_name))
line[sizeof(nfs_root_name) - sizeof(NFS_ROOT) - 2] = '\0';
sprintf(nfs_root_name, NFS_ROOT, line);
size_t n = strlen(line) + sizeof(NFS_ROOT) - 1;
if (n >= sizeof(nfs_root_parms))
line[sizeof(nfs_root_parms) - sizeof(NFS_ROOT) - 2] = '\0';
sprintf(nfs_root_parms, NFS_ROOT, line);
}
root_server_addr = root_nfs_parse_addr(nfs_root_name);

/*
* Extract the IP address of the NFS server containing our
* root file system, if one was specified.
*
* Note: root_nfs_parse_addr() removes the server-ip from
* nfs_root_parms, if it exists.
*/
root_server_addr = root_nfs_parse_addr(nfs_root_parms);

return 1;
}

Expand Down

0 comments on commit 53f53e5

Please sign in to comment.