|
@@ -391,7 +391,7 @@ int
|
|
nfs3svc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p)
|
|
nfs3svc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p)
|
|
{
|
|
{
|
|
struct nfsd3_writeargs *args = rqstp->rq_argp;
|
|
struct nfsd3_writeargs *args = rqstp->rq_argp;
|
|
- unsigned int len, v, hdr, dlen;
|
|
|
|
|
|
+ unsigned int len, hdr, dlen;
|
|
u32 max_blocksize = svc_max_payload(rqstp);
|
|
u32 max_blocksize = svc_max_payload(rqstp);
|
|
struct kvec *head = rqstp->rq_arg.head;
|
|
struct kvec *head = rqstp->rq_arg.head;
|
|
struct kvec *tail = rqstp->rq_arg.tail;
|
|
struct kvec *tail = rqstp->rq_arg.tail;
|
|
@@ -433,17 +433,9 @@ nfs3svc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p)
|
|
args->count = max_blocksize;
|
|
args->count = max_blocksize;
|
|
len = args->len = max_blocksize;
|
|
len = args->len = max_blocksize;
|
|
}
|
|
}
|
|
- rqstp->rq_vec[0].iov_base = (void*)p;
|
|
|
|
- rqstp->rq_vec[0].iov_len = head->iov_len - hdr;
|
|
|
|
- v = 0;
|
|
|
|
- while (len > rqstp->rq_vec[v].iov_len) {
|
|
|
|
- len -= rqstp->rq_vec[v].iov_len;
|
|
|
|
- v++;
|
|
|
|
- rqstp->rq_vec[v].iov_base = page_address(rqstp->rq_pages[v]);
|
|
|
|
- rqstp->rq_vec[v].iov_len = PAGE_SIZE;
|
|
|
|
- }
|
|
|
|
- rqstp->rq_vec[v].iov_len = len;
|
|
|
|
- args->vlen = v + 1;
|
|
|
|
|
|
+
|
|
|
|
+ args->first.iov_base = (void *)p;
|
|
|
|
+ args->first.iov_len = head->iov_len - hdr;
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|