nfsxdr.c (ebcd8e8b28535b643a4c06685bd363b3b73a96af) | nfsxdr.c (8c293ef993c8df0b1bea9ecb0de6eb96dec3ac9d) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * XDR support for nfsd 4 * 5 * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de> 6 */ 7 8#include "vfs.h" --- 232 unchanged lines hidden (view full) --- 241 return 0; 242 243 return xdr_argsize_check(rqstp, p); 244} 245 246int 247nfssvc_decode_readargs(struct svc_rqst *rqstp, __be32 *p) 248{ | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * XDR support for nfsd 4 * 5 * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de> 6 */ 7 8#include "vfs.h" --- 232 unchanged lines hidden (view full) --- 241 return 0; 242 243 return xdr_argsize_check(rqstp, p); 244} 245 246int 247nfssvc_decode_readargs(struct svc_rqst *rqstp, __be32 *p) 248{ |
249 struct xdr_stream *xdr = &rqstp->rq_arg_stream; |
|
249 struct nfsd_readargs *args = rqstp->rq_argp; | 250 struct nfsd_readargs *args = rqstp->rq_argp; |
250 unsigned int len; 251 int v; 252 p = decode_fh(p, &args->fh); 253 if (!p) | 251 u32 totalcount; 252 253 if (!svcxdr_decode_fhandle(xdr, &args->fh)) |
254 return 0; | 254 return 0; |
255 if (xdr_stream_decode_u32(xdr, &args->offset) < 0) 256 return 0; 257 if (xdr_stream_decode_u32(xdr, &args->count) < 0) 258 return 0; 259 /* totalcount is ignored */ 260 if (xdr_stream_decode_u32(xdr, &totalcount) < 0) 261 return 0; |
|
255 | 262 |
256 args->offset = ntohl(*p++); 257 len = args->count = ntohl(*p++); 258 p++; /* totalcount - unused */ 259 260 len = min_t(unsigned int, len, NFSSVC_MAXBLKSIZE_V2); 261 262 /* set up somewhere to store response. 263 * We take pages, put them on reslist and include in iovec 264 */ 265 v=0; 266 while (len > 0) { 267 struct page *p = *(rqstp->rq_next_page++); 268 269 rqstp->rq_vec[v].iov_base = page_address(p); 270 rqstp->rq_vec[v].iov_len = min_t(unsigned int, len, PAGE_SIZE); 271 len -= rqstp->rq_vec[v].iov_len; 272 v++; 273 } 274 args->vlen = v; 275 return xdr_argsize_check(rqstp, p); | 263 return 1; |
276} 277 278int 279nfssvc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p) 280{ 281 struct nfsd_writeargs *args = rqstp->rq_argp; 282 unsigned int len, hdr, dlen; 283 struct kvec *head = rqstp->rq_arg.head; --- 343 unchanged lines hidden --- | 264} 265 266int 267nfssvc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p) 268{ 269 struct nfsd_writeargs *args = rqstp->rq_argp; 270 unsigned int len, hdr, dlen; 271 struct kvec *head = rqstp->rq_arg.head; --- 343 unchanged lines hidden --- |