diff options
| -rw-r--r-- | fs/nfs/nfs4proc.c | 5 | ||||
| -rw-r--r-- | fs/nfs/nfs4xdr.c | 6 | ||||
| -rw-r--r-- | include/linux/nfs_xdr.h | 5 |
3 files changed, 13 insertions, 3 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 62bbe25d9423..e08edc99faac 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
| @@ -3722,10 +3722,13 @@ int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name, | |||
| 3722 | .page = page, | 3722 | .page = page, |
| 3723 | .bitmask = bitmask, | 3723 | .bitmask = bitmask, |
| 3724 | }; | 3724 | }; |
| 3725 | struct nfs4_fs_locations_res res = { | ||
| 3726 | .fs_locations = fs_locations, | ||
| 3727 | }; | ||
| 3725 | struct rpc_message msg = { | 3728 | struct rpc_message msg = { |
| 3726 | .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_FS_LOCATIONS], | 3729 | .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_FS_LOCATIONS], |
| 3727 | .rpc_argp = &args, | 3730 | .rpc_argp = &args, |
| 3728 | .rpc_resp = fs_locations, | 3731 | .rpc_resp = &res, |
| 3729 | }; | 3732 | }; |
| 3730 | int status; | 3733 | int status; |
| 3731 | 3734 | ||
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index aa350d5bf207..e448e33b4d05 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c | |||
| @@ -4504,7 +4504,8 @@ out: | |||
| 4504 | /* | 4504 | /* |
| 4505 | * FS_LOCATIONS request | 4505 | * FS_LOCATIONS request |
| 4506 | */ | 4506 | */ |
| 4507 | static int nfs4_xdr_dec_fs_locations(struct rpc_rqst *req, __be32 *p, struct nfs4_fs_locations *res) | 4507 | static int nfs4_xdr_dec_fs_locations(struct rpc_rqst *req, __be32 *p, |
| 4508 | struct nfs4_fs_locations_res *res) | ||
| 4508 | { | 4509 | { |
| 4509 | struct xdr_stream xdr; | 4510 | struct xdr_stream xdr; |
| 4510 | struct compound_hdr hdr; | 4511 | struct compound_hdr hdr; |
| @@ -4519,7 +4520,8 @@ static int nfs4_xdr_dec_fs_locations(struct rpc_rqst *req, __be32 *p, struct nfs | |||
| 4519 | if ((status = decode_lookup(&xdr)) != 0) | 4520 | if ((status = decode_lookup(&xdr)) != 0) |
| 4520 | goto out; | 4521 | goto out; |
| 4521 | xdr_enter_page(&xdr, PAGE_SIZE); | 4522 | xdr_enter_page(&xdr, PAGE_SIZE); |
| 4522 | status = decode_getfattr(&xdr, &res->fattr, res->server); | 4523 | status = decode_getfattr(&xdr, &res->fs_locations->fattr, |
| 4524 | res->fs_locations->server); | ||
| 4523 | out: | 4525 | out: |
| 4524 | return status; | 4526 | return status; |
| 4525 | } | 4527 | } |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 0f2dc8f4cc36..d837f10c49ef 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
| @@ -867,6 +867,11 @@ struct nfs4_fs_locations_arg { | |||
| 867 | struct nfs4_sequence_args seq_args; | 867 | struct nfs4_sequence_args seq_args; |
| 868 | }; | 868 | }; |
| 869 | 869 | ||
| 870 | struct nfs4_fs_locations_res { | ||
| 871 | struct nfs4_fs_locations *fs_locations; | ||
| 872 | struct nfs4_sequence_res seq_res; | ||
| 873 | }; | ||
| 874 | |||
| 870 | #endif /* CONFIG_NFS_V4 */ | 875 | #endif /* CONFIG_NFS_V4 */ |
| 871 | 876 | ||
| 872 | struct nfs_page; | 877 | struct nfs_page; |
