diff options
| author | J. Bruce Fields <bfields@redhat.com> | 2012-11-16 14:16:46 -0500 |
|---|---|---|
| committer | J. Bruce Fields <bfields@redhat.com> | 2012-11-26 09:08:14 -0500 |
| commit | 70cc7f75b1ee4161dfdea1012223db25712ab1a5 (patch) | |
| tree | 4e9756cce119094f08a7bbeb52b5487c31790b8a | |
| parent | 5a80a54d21c96590d013378d8c5f65f879451ab4 (diff) | |
nfsd4: move more write parameters into xdr argument
In preparation for moving some of this elsewhere.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
| -rw-r--r-- | fs/nfsd/nfs4xdr.c | 20 | ||||
| -rw-r--r-- | fs/nfsd/xdr4.h | 2 |
2 files changed, 11 insertions, 11 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 579dc707bad9..cb9f9017af8f 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c | |||
| @@ -1139,16 +1139,17 @@ nfsd4_decode_verify(struct nfsd4_compoundargs *argp, struct nfsd4_verify *verify | |||
| 1139 | DECODE_TAIL; | 1139 | DECODE_TAIL; |
| 1140 | } | 1140 | } |
| 1141 | 1141 | ||
| 1142 | static int fill_in_write_vector(struct kvec *vec, struct kvec *head, struct page **pagelist, int buflen) | 1142 | static int fill_in_write_vector(struct kvec *vec, struct nfsd4_write *write) |
| 1143 | { | 1143 | { |
| 1144 | int i = 1; | 1144 | int i = 1; |
| 1145 | int buflen = write->wr_buflen; | ||
| 1145 | 1146 | ||
| 1146 | vec[0].iov_base = head->iov_base; | 1147 | vec[0].iov_base = write->wr_head.iov_base; |
| 1147 | vec[0].iov_len = min_t(int, buflen, head->iov_len); | 1148 | vec[0].iov_len = min_t(int, buflen, write->wr_head.iov_len); |
| 1148 | buflen -= vec[0].iov_len; | 1149 | buflen -= vec[0].iov_len; |
| 1149 | 1150 | ||
| 1150 | while (buflen) { | 1151 | while (buflen) { |
| 1151 | vec[i].iov_base = page_address(pagelist[i - 1]); | 1152 | vec[i].iov_base = page_address(write->wr_pagelist[i - 1]); |
| 1152 | vec[i].iov_len = min_t(int, PAGE_SIZE, buflen); | 1153 | vec[i].iov_len = min_t(int, PAGE_SIZE, buflen); |
| 1153 | buflen -= vec[i].iov_len; | 1154 | buflen -= vec[i].iov_len; |
| 1154 | i++; | 1155 | i++; |
| @@ -1161,8 +1162,6 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write) | |||
| 1161 | { | 1162 | { |
| 1162 | int avail; | 1163 | int avail; |
| 1163 | int len; | 1164 | int len; |
| 1164 | struct page **pagelist; | ||
| 1165 | struct kvec head; | ||
| 1166 | DECODE_HEAD; | 1165 | DECODE_HEAD; |
| 1167 | 1166 | ||
| 1168 | status = nfsd4_decode_stateid(argp, &write->wr_stateid); | 1167 | status = nfsd4_decode_stateid(argp, &write->wr_stateid); |
| @@ -1185,10 +1184,10 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write) | |||
| 1185 | __FILE__, __LINE__); | 1184 | __FILE__, __LINE__); |
| 1186 | goto xdr_error; | 1185 | goto xdr_error; |
| 1187 | } | 1186 | } |
| 1188 | head.iov_base = p; | 1187 | write->wr_head.iov_base = p; |
| 1189 | head.iov_len = avail; | 1188 | write->wr_head.iov_len = avail; |
| 1190 | WARN_ON(avail != (XDR_QUADLEN(avail) << 2)); | 1189 | WARN_ON(avail != (XDR_QUADLEN(avail) << 2)); |
| 1191 | pagelist = argp->pagelist; | 1190 | write->wr_pagelist = argp->pagelist; |
| 1192 | 1191 | ||
| 1193 | len = XDR_QUADLEN(write->wr_buflen) << 2; | 1192 | len = XDR_QUADLEN(write->wr_buflen) << 2; |
| 1194 | if (len >= avail) { | 1193 | if (len >= avail) { |
| @@ -1205,8 +1204,7 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write) | |||
| 1205 | argp->end = argp->p + XDR_QUADLEN(PAGE_SIZE); | 1204 | argp->end = argp->p + XDR_QUADLEN(PAGE_SIZE); |
| 1206 | } | 1205 | } |
| 1207 | argp->p += XDR_QUADLEN(len); | 1206 | argp->p += XDR_QUADLEN(len); |
| 1208 | write->wr_vlen = fill_in_write_vector(argp->rqstp->rq_vec, | 1207 | write->wr_vlen = fill_in_write_vector(argp->rqstp->rq_vec, write); |
| 1209 | &head, pagelist, write->wr_buflen); | ||
| 1210 | WARN_ON_ONCE(write->wr_vlen > ARRAY_SIZE(argp->rqstp->rq_vec)); | 1208 | WARN_ON_ONCE(write->wr_vlen > ARRAY_SIZE(argp->rqstp->rq_vec)); |
| 1211 | 1209 | ||
| 1212 | DECODE_TAIL; | 1210 | DECODE_TAIL; |
diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index 3c414c1be295..152867b8125d 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h | |||
| @@ -386,6 +386,8 @@ struct nfsd4_write { | |||
| 386 | u32 wr_stable_how; /* request */ | 386 | u32 wr_stable_how; /* request */ |
| 387 | u32 wr_buflen; /* request */ | 387 | u32 wr_buflen; /* request */ |
| 388 | int wr_vlen; | 388 | int wr_vlen; |
| 389 | struct kvec wr_head; | ||
| 390 | struct page ** wr_pagelist; /* request */ | ||
| 389 | 391 | ||
| 390 | u32 wr_bytes_written; /* response */ | 392 | u32 wr_bytes_written; /* response */ |
| 391 | u32 wr_how_written; /* response */ | 393 | u32 wr_how_written; /* response */ |
