diff options
Diffstat (limited to 'fs/nfs/mount_clnt.c')
-rw-r--r-- | fs/nfs/mount_clnt.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/fs/nfs/mount_clnt.c b/fs/nfs/mount_clnt.c index 0b9a78353d6e..445abb4d4214 100644 --- a/fs/nfs/mount_clnt.c +++ b/fs/nfs/mount_clnt.c | |||
@@ -49,9 +49,12 @@ nfsroot_mount(struct sockaddr_in *addr, char *path, struct nfs_fh *fh, | |||
49 | struct mnt_fhstatus result = { | 49 | struct mnt_fhstatus result = { |
50 | .fh = fh | 50 | .fh = fh |
51 | }; | 51 | }; |
52 | struct rpc_message msg = { | ||
53 | .rpc_argp = path, | ||
54 | .rpc_resp = &result, | ||
55 | }; | ||
52 | char hostname[32]; | 56 | char hostname[32]; |
53 | int status; | 57 | int status; |
54 | int call; | ||
55 | 58 | ||
56 | dprintk("NFS: nfs_mount(%08x:%s)\n", | 59 | dprintk("NFS: nfs_mount(%08x:%s)\n", |
57 | (unsigned)ntohl(addr->sin_addr.s_addr), path); | 60 | (unsigned)ntohl(addr->sin_addr.s_addr), path); |
@@ -61,8 +64,12 @@ nfsroot_mount(struct sockaddr_in *addr, char *path, struct nfs_fh *fh, | |||
61 | if (IS_ERR(mnt_clnt)) | 64 | if (IS_ERR(mnt_clnt)) |
62 | return PTR_ERR(mnt_clnt); | 65 | return PTR_ERR(mnt_clnt); |
63 | 66 | ||
64 | call = (version == NFS_MNT3_VERSION) ? MOUNTPROC3_MNT : MNTPROC_MNT; | 67 | if (version == NFS_MNT3_VERSION) |
65 | status = rpc_call(mnt_clnt, call, path, &result, 0); | 68 | msg.rpc_proc = &mnt_clnt->cl_procinfo[MOUNTPROC3_MNT]; |
69 | else | ||
70 | msg.rpc_proc = &mnt_clnt->cl_procinfo[MNTPROC_MNT]; | ||
71 | |||
72 | status = rpc_call_sync(mnt_clnt, &msg, 0); | ||
66 | return status < 0? status : (result.status? -EACCES : 0); | 73 | return status < 0? status : (result.status? -EACCES : 0); |
67 | } | 74 | } |
68 | 75 | ||
@@ -137,6 +144,8 @@ static struct rpc_procinfo mnt_procedures[] = { | |||
137 | .p_encode = (kxdrproc_t) xdr_encode_dirpath, | 144 | .p_encode = (kxdrproc_t) xdr_encode_dirpath, |
138 | .p_decode = (kxdrproc_t) xdr_decode_fhstatus, | 145 | .p_decode = (kxdrproc_t) xdr_decode_fhstatus, |
139 | .p_bufsiz = MNT_dirpath_sz << 2, | 146 | .p_bufsiz = MNT_dirpath_sz << 2, |
147 | .p_statidx = MNTPROC_MNT, | ||
148 | .p_name = "MOUNT", | ||
140 | }, | 149 | }, |
141 | }; | 150 | }; |
142 | 151 | ||
@@ -146,6 +155,8 @@ static struct rpc_procinfo mnt3_procedures[] = { | |||
146 | .p_encode = (kxdrproc_t) xdr_encode_dirpath, | 155 | .p_encode = (kxdrproc_t) xdr_encode_dirpath, |
147 | .p_decode = (kxdrproc_t) xdr_decode_fhstatus3, | 156 | .p_decode = (kxdrproc_t) xdr_decode_fhstatus3, |
148 | .p_bufsiz = MNT_dirpath_sz << 2, | 157 | .p_bufsiz = MNT_dirpath_sz << 2, |
158 | .p_statidx = MOUNTPROC3_MNT, | ||
159 | .p_name = "MOUNT", | ||
149 | }, | 160 | }, |
150 | }; | 161 | }; |
151 | 162 | ||