Two nfsd fixes, one for an RDMA crash, one for a pnfs/block protocol
bug. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJWHUj5AAoJECebzXlCjuG+KIoP/RW5zigAEKqUiD7ycKR91BxD 9Nt0fqTTrbkGJhKM1/DN4YEjogAHeFW5OnGiLQRUNI/qdy+I1Gyr1kgwGmCCVDt9 d8AhnxcnXR5SmsQHk7eeUd/rnODetf0bW5YJ8PfFbnC6cmM013nR9ujEccUuCl9M hHTp+690Doab00PtWtsjmZv5d+eT1bktY/R2PuQhyQM2CKWh1u4FeNTd1lWE551D b1wSvhAGMYVEsQv8+HICDrIQ8loGfH2gpBILERLM2yJlhN1IPU3RmNSAcQpZSaql veJYVmHdpMACCLp0Dd3hwWKDYvcQ2lCqKk+Cpd0vLpvZ8J5OjCLC+a2dh0PRIYuf pwFCvbWz6dn27/9eXEKbyT2JIeBIl4qwrFjfiRKlNX0c4HGKXaE2gJrY7bxnDxe1 BatAbEFZ+rxHyPmycaj3JdyOxafmw94XzbT8q2g7tmUCj+pvAI+Pbv6PlwN6W2r7 aGBZzgd8Y9pT6ZbCB0e413d/t5ulxwkt6vVz9Jze4gfcUrWcqHaqt7AadMl7obUx AYPLAVGeHybdKlLvqv42IF2QM8ZhizM0+EnxkjfWLrsa7WbstWX5KLPpm3K80dM7 98p1ToNQDFcNU8WBZw8AkBpFz4j32RVOkvzWFWbhCo+T3is4BmP16uEEjH90aCCY skQKMrq8J1ox33gz5gT7 =Pkuy -----END PGP SIGNATURE----- Merge tag 'nfsd-4.3-2' of git://linux-nfs.org/~bfields/linux Pull nfsd fixes from Bruce Fields: "Two nfsd fixes, one for an RDMA crash, one for a pnfs/block protocol bug" * tag 'nfsd-4.3-2' of git://linux-nfs.org/~bfields/linux: svcrdma: Fix NFS server crash triggered by 1MB NFS WRITE nfsd/blocklayout: accept any minlength
This commit is contained in:
commit
5b5f145527
|
@ -56,14 +56,6 @@ nfsd4_block_proc_layoutget(struct inode *inode, const struct svc_fh *fhp,
|
||||||
u32 device_generation = 0;
|
u32 device_generation = 0;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
/*
|
|
||||||
* We do not attempt to support I/O smaller than the fs block size,
|
|
||||||
* or not aligned to it.
|
|
||||||
*/
|
|
||||||
if (args->lg_minlength < block_size) {
|
|
||||||
dprintk("pnfsd: I/O too small\n");
|
|
||||||
goto out_layoutunavailable;
|
|
||||||
}
|
|
||||||
if (seg->offset & (block_size - 1)) {
|
if (seg->offset & (block_size - 1)) {
|
||||||
dprintk("pnfsd: I/O misaligned\n");
|
dprintk("pnfsd: I/O misaligned\n");
|
||||||
goto out_layoutunavailable;
|
goto out_layoutunavailable;
|
||||||
|
|
|
@ -533,7 +533,7 @@ static int rdma_read_complete(struct svc_rqst *rqstp,
|
||||||
rqstp->rq_arg.page_base = head->arg.page_base;
|
rqstp->rq_arg.page_base = head->arg.page_base;
|
||||||
|
|
||||||
/* rq_respages starts after the last arg page */
|
/* rq_respages starts after the last arg page */
|
||||||
rqstp->rq_respages = &rqstp->rq_arg.pages[page_no];
|
rqstp->rq_respages = &rqstp->rq_pages[page_no];
|
||||||
rqstp->rq_next_page = rqstp->rq_respages + 1;
|
rqstp->rq_next_page = rqstp->rq_respages + 1;
|
||||||
|
|
||||||
/* Rebuild rq_arg head and tail. */
|
/* Rebuild rq_arg head and tail. */
|
||||||
|
|
Loading…
Reference in New Issue