File tree Expand file tree Collapse file tree 1 file changed +7
-16
lines changed Expand file tree Collapse file tree 1 file changed +7
-16
lines changed Original file line number Diff line number Diff line change @@ -597,34 +597,25 @@ svc_destroy(struct kref *ref)
597
597
}
598
598
EXPORT_SYMBOL_GPL (svc_destroy );
599
599
600
- /*
601
- * Allocate an RPC server's buffer space.
602
- * We allocate pages and place them in rq_pages.
603
- */
604
- static int
600
+ static bool
605
601
svc_init_buffer (struct svc_rqst * rqstp , unsigned int size , int node )
606
602
{
607
- unsigned int pages , arghi ;
603
+ unsigned long pages , ret ;
608
604
609
605
/* bc_xprt uses fore channel allocated buffers */
610
606
if (svc_is_backchannel (rqstp ))
611
- return 1 ;
607
+ return true ;
612
608
613
609
pages = size / PAGE_SIZE + 1 ; /* extra page as we hold both request and reply.
614
610
* We assume one is at most one page
615
611
*/
616
- arghi = 0 ;
617
612
WARN_ON_ONCE (pages > RPCSVC_MAXPAGES );
618
613
if (pages > RPCSVC_MAXPAGES )
619
614
pages = RPCSVC_MAXPAGES ;
620
- while (pages ) {
621
- struct page * p = alloc_pages_node (node , GFP_KERNEL , 0 );
622
- if (!p )
623
- break ;
624
- rqstp -> rq_pages [arghi ++ ] = p ;
625
- pages -- ;
626
- }
627
- return pages == 0 ;
615
+
616
+ ret = alloc_pages_bulk_array_node (GFP_KERNEL , node , pages ,
617
+ rqstp -> rq_pages );
618
+ return ret == pages ;
628
619
}
629
620
630
621
/*
You can’t perform that action at this time.
0 commit comments