linux/net/sunrpc/backchannel_rqst.c
<<
n va6.3/spa 6.3/form 6.3a n va6. href="../linux+v32.69/net/sunrpc/backchannel_rqst.c">n va6.3img src="../.static/gfx/right.png" alt=">>">n 3/spa n 3spa class="lxr_search">n va ="+search" method="post" onsubmit="return do_search(this);">n va6.3input typn> hidden" namn> navtarget" ption> ">n va6.3input typn> text" namn> search" id> search">n va6.3butt submit">Searchn va6.Prefs 6.3/a>n 3/spa va6. .3/div va6. .3form ac > ="ajax+*" method="post" onsubmit="return false;">n 3input typn> hidden" namn> ajax_lookup" id> ajax_lookup" ption> ">nva6. .3/form nva6. .3div class="headingbott
search_results" class="search_results" 6 va6. .3/div 3div id> content"> 3div id> file_contents"
1f/ec/26ef36659793f1858096e8d7e9a76d0d8d1b_3/0" 
L1" class="line" namn>
L1">. .13/a>3spa
 class="comment">/******************************************************************************3/spa
  
L2" class="line" namn>
L2">. .23/a>n
L3" class="line" namn>
L3">. .33/a>3spa
 class="comment">(c) 2007 Network Appliance, Inc.  All Rights Reserved.3/spa
  
L4" class="line" namn>
L4">. .43/a>3spa
 class="comment">(c) 2009 NetApp.  All Rights Reserved.3/spa
  
L5" class="line" namn>
L5">. .53/a>n
L6" class="line" namn>
L6">. .63/a>3spa
 class="comment">NetApp provides this source code under the GPL="v License.3/spa
  
L7" class="line" namn>
L7">. .73/a>3spa
 class="comment">The GPL="v license is available at3/spa
  
L8" class="line" namn>
L8">. .83/a>3spa
 class="comment">http:/"
	ensource.org/licenses/gpl-license.php.3/spa
  
L9" class="line" namn>
L9">. .93/a>n
L10" class="line" namn>
L10">. 3.8.a>3spa
 class="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS3/spa
  
L11" class="line" namn>
L11">. 113/a>3spa
 class="comment">"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT3/spa
  
L12" class="line" namn>
L12">. 123/a>3spa
 class="comment">LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR3/spa
  
L13" class="line" namn>
L13">. 133/a>3spa
 class="comment">A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR3/spa
  
L14" class="line" namn>
L14">. 143/a>3spa
 class="comment">CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,3/spa
  
L15" class="line" namn>
L15">. 153/a>3spa
 class="comment">EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,3/spa
  
L16" class="line" namn>
L16">. 163/a>3spa
 class="comment">PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR3/spa
  
L17" class="line" namn>
L17">. 173/a>3spa
 class="comment">PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF3/spa
  
L18" class="line" namn>
L18">. 183/a>3spa
 class="comment">LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING3/spa
  
L19" class="line" namn>
L19">. 193/a>3spa
 class="comment">NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS3/spa
  
L20" class="line" namn>
L20">. 2.8.a>3spa
 class="comment">SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.3/spa
  
L21" class="line" namn>
L21">. 213/a>n
L22" class="line" namn>
L22">. 223/a>3spa
 class="comment">******************************************************************************/3/spa
  
L23" class="line" namn>
L23">. 233/a>n
L24" class="line" namn>
L24">. 243/a>#include <linux/tcp.h3/a>>n
L25" class="line" namn>
L25">. 253/a>#include <linux/slab.h3/a>>n
L26" class="line" namn>
L26">. 263/a>#include <linux/sunrpc/xprt.h3/a>>n
L27" class="line" namn>
L27">. 273/a>#include <linux/export.h3/a>>n
L28" class="line" namn>
L28">. 283/a>#include <linux/sunrpc/bc_xprt.h3/a>>n
L29" class="line" namn>
L29">. 293/a>n
L30" class="line" namn>
L30">. 303/a>#ifdef.3a href="+code=RPC_DEBUG" class="sref">RPC_DEBUG3/a>n
L31" class="line" namn>
L31">. 313/a>#define.3a href="+code=RPCDBG_FACILITY" class="sref">RPCDBG_FACILITY3/a>.3a href="+code=RPCDBG_TRANS" class="sref">RPCDBG_TRANS3/a>n
L32" class="line" namn>
L32">. 323/a>#endifn
L33" class="line" namn>
L33">. 333/a>n
L34" class="line" namn>
L34">. 343/a>3spa
 class="comment">/*3/spa
  
L35" class="line" namn>
L35">. 353/a>3spa
 class="comment"> * Helper routines that track the number of prealloca12
L36" class="line" namn>
L36">. 363/a>3spa
 class="comment"> * 
L37" class="line" namn>
L37">. 373/a>3spa
 class="comment"> */3/spa
  
L38" class="line" namn>
L38">. 383/a>static.3a href="+code=inline" class="sref">inline3/a>.int.3a href="+code=xprt_need_to_requeue" class="sref">xprt_need_to_requeue3/a>(struct.3a href="+code=rpc_xprt" class="sref">rpc_xprt3/a>.*3a href="+code=xprt" class="sref">xprt3/a>) 
L39" class="line" namn>
L39">. 393/a>{ 
L40" class="line" namn>
L40">. 403/a>        return 3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_alloc_count" class="sref">bc_alloc_count3/a> > 0;n
L41" class="line" namn>
L41">. 413/a>}n
L42" class="line" namn>
L42">. 423/a>n
L43" class="line" namn>
L43">. 433/a>static.3a href="+code=inline" class="sref">inline3/a>.void.3a href="+code=xprt_inc_alloc_count" class="sref">xprt_inc_alloc_count3/a>(struct.3a href="+code=rpc_xprt" class="sref">rpc_xprt3/a>.*3a href="+code=xprt" class="sref">xprt3/a>, unsigned.int.3a href="+code=n" class="sref">n3/a>) 
L44" class="line" namn>
L44">. 443/a>{ 
L45" class="line" namn>
L45">. 453/a>        3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_alloc_count" class="sref">bc_alloc_count3/a> +=.3a href="+code=n" class="sref">n3/a>;n
L46" class="line" namn>
L46">. 463/a>}n
L47" class="line" namn>
L47">. 473/a>n
L48" class="line" namn>
L48">. 483/a>static.3a href="+code=inline" class="sref">inline3/a>.int.3a href="+code=xprt_dec_alloc_count" class="sref">xprt_dec_alloc_count3/a>(struct.3a href="+code=rpc_xprt" class="sref">rpc_xprt3/a>.*3a href="+code=xprt" class="sref">xprt3/a>, unsigned.int.3a href="+code=n" class="sref">n3/a>) 
L49" class="line" namn>
L49">. 493/a>{ 
L50" class="line" namn>
L50">. 503/a>        return 3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_alloc_count" class="sref">bc_alloc_count3/a> -=.3a href="+code=n" class="sref">n3/a>;n
L51" class="line" namn>
L51">. 513/a>}n
L52" class="line" namn>
L52">. 523/a>n
L53" class="line" namn>
L53">. 533/a>3spa
 class="comment">/*3/spa
  
L54" class="line" namn>
L54">. 543/a>3spa
 class="comment"> * Freeothe prealloca1ed.rpc_rqst structure andothe memory3/spa
  
L55" class="line" namn>
L55">. 553/a>3spa
 class="comment"> * buffers hanging off of it.3/spa
  
L56" class="line" namn>
L56">. 563/a>3spa
 class="comment"> */3/spa
  
L57" class="line" namn>
L57">. 573/a>static.void.3a href="+code=xprt_free_alloca12xprt_free_alloca12(struct.3a href="+code=rpc_rqst" class="sref">rpc_rqst3/a>.*3a href="+code=req" class="sref">req3/a>) 
L58" class="line" namn>
L58">. 583/a>{ 
L59" class="line" namn>
L59">. 593/a>        struct.3a href="+code=xdr_buf" class="sref">xdr_buf3/a>.*3a href="+code=xbufp" class="sref">xbufp3/a>;n
L60" class="line" namn>
L60">. 603/a>n
L61" class="line" namn>
L61">. 613/a>        3a href="+code=dprintk" class="sref">dprintk3/a>(3spa
 class="string">"RPC:        free alloca12req3/a>);n
L62" class="line" namn>
L62">. 623/a>        3a href="+code=BUG_ON" class="sref">BUG_ON3/a>(3a href="+code=test_bit" class="sref">test_bit3/a>(3a href="+code=RPC_BC_PA_IN_USE" class="sref">RPC_BC_PA_IN_USE3/a>, &3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_bc_pa_state" class="sref">rq_bc_pa_state3/a>));n
L63" class="line" namn>
L63">. 633/a>        3a href="+code=xbufp" class="sref">xbufp3/a> = &3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_private_buf" class="sref">rq_private_buf3/a>;n
L64" class="line" namn>
L64">. 643/a>        3a href="+code=free_page" class="sref">free_page3/a>((unsigned.long)3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=head" class="sref">head3/a>[0].3a href="+code=iov_base" class="sref">iov_base3/a>);n
L65" class="line" namn>
L65">. 653/a>        3a href="+code=xbufp" class="sref">xbufp3/a> = &3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_snd_buf" class="sref">rq_snd_buf3/a>;n
L66" class="line" namn>
L66">. 663/a>        3a href="+code=free_page" class="sref">free_page3/a>((unsigned.long)3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=head" class="sref">head3/a>[0].3a href="+code=iov_base" class="sref">iov_base3/a>);n
L67" class="line" namn>
L67">. 673/a>        3a href="+code=list_del" class="sref">list_del3/a>(&3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_bc_pa_list" class="sref">rq_bc_pa_list3/a>);n
L68" class="line" namn>
L68">. 683/a>        3a href="+code=kfree" class="sref">kfree3/a>(3a href="+code=req" class="sref">req3/a>);n
L69" class="line" namn>
L69">. 693/a>}n
L70" class="line" namn>
L70">. 703/a>n
L71" class="line" namn>
L71">. 713/a>3spa
 class="comment">/*3/spa
  
L72" class="line" namn>
L72">. 723/a>3spa
 class="comment"> * Prealloca1e up to min_reqs structures andorela1ed.buffers for use3/spa
  
L73" class="line" namn>
L73">. 733/a>3spa
 class="comment"> * byothe backchannel.  This func  >
 ca
 be called.multipleotimes3/spa
  
L74" class="line" namn>
L74">. 743/a>3spa
 class="comment"> * whe
 creating new sess2
L75" class="line" namn>
L75">. 753/a>3spa
 class="comment"> * prealloca1ed.buffers are added.to the pool of resources used.by3/spa
  
L76" class="line" namn>
L76">. 763/a>3spa
 class="comment"> * the rpc_xprt.  Anyone of theseoresources may be used.used.by an3/spa
  
L77" class="line" namn>
L77">. 773/a>3spa
 class="comment"> * incoming callback request.  It's up to the higher levels in the3/spa
  
L78" class="line" namn>
L78">. 783/a>3spa
 class="comment"> * stack to enforce that the maximum number of sess2
L79" class="line" namn>
L79">. 793/a>3spa
 class="comment"> * being exceeded.3/spa
  
L80" class="line" namn>
L80">. 8.8.a>3spa
 class="comment"> *3/spa
  
L81" class="line" namn>
L81">. 813/a>3spa
 class="comment"> * Some callback arguments ca
 be large.  For example, a pNFS server3/spa
  
L82" class="line" namn>
L82">. 823/a>3spa
 class="comment"> * using multipleodeviceids.  The list ca
 be unbound,.but the client3/spa
  
L83" class="line" namn>
L83">. 833/a>3spa
 class="comment"> * has the ability to tellothe server the maximum size of the callback3/spa
  
L84" class="line" namn>
L84">. 843/a>3spa
 class="comment"> * requests.  EachodeviceID is 16.bytes, so alloca1e one page3/spa
  
L85" class="line" namn>
L85">. 853/a>3spa
 class="comment"> * for the arguments to have enough room to receive a number of these3/spa
  
L86" class="line" namn>
L86">. 863/a>3spa
 class="comment"> * deviceIDs.  The NFS client indica1es.to the pNFS server that its3/spa
  
L87" class="line" namn>
L87">. 873/a>3spa
 class="comment"> * callback requests ca
 be up to 4096.bytes in size.3/spa
  
L88" class="line" namn>
L88">. 883/a>3spa
 class="comment"> */3/spa
  
L89" class="line" namn>
L89">. 893/a>int.3a href="+code=xprt_setup_backchannel" class="sref">xprt_setup_backchannel3/a>(struct.3a href="+code=rpc_xprt" class="sref">rpc_xprt3/a>.*3a href="+code=xprt" class="sref">xprt3/a>, unsigned.int.3a href="+code=min_reqs" class="sref">min_reqs3/a>) 
L90" class="line" namn>
L90">. 903/a>{ 
L91" class="line" namn>
L91">. 913/a>        struct.3a href="+code=page" class="sref">page3/a>.*3a href="+code=page_rcv" class="sref">page_rcv3/a> = 3a href="+code=NULL" class="sref">NULL3/a>, *3a href="+code=page_snd" class="sref">page_snd3/a> = 3a href="+code=NULL" class="sref">NULL3/a>;n
L92" class="line" namn>
L92">. 923/a>        struct.3a href="+code=xdr_buf" class="sref">xdr_buf3/a>.*3a href="+code=xbufp" class="sref">xbufp3/a> = 3a href="+code=NULL" class="sref">NULL3/a>;n
L93" class="line" namn>
L93">. 933/a>        struct.3a href="+code=rpc_rqst" class="sref">rpc_rqst3/a>.*3a href="+code=req" class="sref">req3/a>, *3a href="+code=tmp" class="sref">tmp3/a>;n
L94" class="line" namn>
L94">. 943/a>        struct.3a href="+code=list_head" class="sref">list_head3/a> 3a href="+code=tmp_list" class="sref">tmp_list3/a>;n
L95" class="line" namn>
L95">. 953/a>        int.3a href="+code=i" class="sref">i3/a>;n
L96" class="line" namn>
L96">. 963/a>n
L97" class="line" namn>
L97">. 973/a>        3a href="+code=dprintk" class="sref">dprintk3/a>(3spa
 class="string">"RPC:       setup backchannel transport\n"3/spa
 );n
L98" class="line" namn>
L98">. 983/a>n
L99" class="line" namn>
L99">. 993/a>        3spa
 class="comment">/*3/spa
  
L100" class="line" namn>
L100">.1003/a>3spa
 class="comment">         * We use a temporary list to keep track of the prealloca1ed3/spa
  
L101" class="line" namn>
L101">.1013/a>3spa
 class="comment">         * buffers.  Once we'reodone building the list we splice it3/spa
  
L102" class="line" namn>
L102">.1023/a>3spa
 class="comment">         * intoothe backchannel prealloca12
L103" class="line" namn>
L103">.1033/a>3spa
 class="comment">         * struct.  This helps minimize the amount of time the list3/spa
  
L104" class="line" namn>
L104">.1043/a>3spa
 class="comment">         * lock is held 
L105" class="line" namn>
L105">.1053/a>3spa
 class="comment">         * easier i
 case of memory alloca12
L106" class="line" namn>
L106">.1063/a>3spa
 class="comment">         */3/spa
  
L107" class="line" namn>
L107">.1073/a>        3a href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEAD3/a>(&3a href="+code=tmp_list" class="sref">tmp_list3/a>);n
L108" class="line" namn>
L108">.1083/a>        for (3a href="+code=i" class="sref">i3/a> = 0;.3a href="+code=i" class="sref">i3/a> <.3a href="+code=min_reqs" class="sref">min_reqs3/a>;.3a href="+code=i" class="sref">i3/a>++) { 
L109" class="line" namn>
L109">.1093/a>                3spa
 class="comment">/* Pre-alloca1e one backchannel rpc_rqst */3/spa
  
L110" class="line" namn>
L110">.1103/a>                3a href="+code=req" class="sref">req3/a> = 3a href="+code=kzalloc" class="sref">kzalloc3/a>(sizeof(struct.3a href="+code=rpc_rqst" class="sref">rpc_rqst3/a>),.3a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL3/a>);n
L111" class="line" namn>
L111">.1113/a>                if (3a href="+code=req" class="sref">req3/a> == 3a href="+code=NULL" class="sref">NULL3/a>) { 
L112" class="line" namn>
L112">.1123/a>                        3a href="+code=printk" class="sref">printk3/a>(3a href="+code=KERN_ERR" class="sref">KERN_ERR3/a> 3spa
 class="string">"Failed.to create bc rpc_rqst\n"3/spa
 );n
L113" class="line" namn>
L113">.1133/a>                        goto 3a href="+code=out_free" class="sref">out_free3/a>;n
L114" class="line" namn>
L114">.1143/a>                }n
L115" class="line" namn>
L115">.1153/a>n
L116" class="line" namn>
L116">.1163/a>                3spa
 class="comment">/* Addothe alloca1ed.buffer.to the tmpolist */3/spa
  
L117" class="line" namn>
L117">.1173/a>                3a href="+code=dprintk" class="sref">dprintk3/a>(3spa
 class="string">"RPC:       adding req= %p\n"3/spa
 ,.3a href="+code=req" class="sref">req3/a>);n
L118" class="line" namn>
L118">.1183/a>                3a href="+code=list_add" class="sref">list_add3/a>(&3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_bc_pa_list" class="sref">rq_bc_pa_list3/a>, &3a href="+code=tmp_list" class="sref">tmp_list3/a>);n
L119" class="line" namn>
L119">.1193/a>n
L120" class="line" namn>
L120">.1203/a>                3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_xprt" class="sref">rq_xprt3/a>.= 3a href="+code=xprt" class="sref">xprt3/a>;n
L121" class="line" namn>
L121">.1213/a>                3a href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEAD3/a>(&3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_list" class="sref">rq_list3/a>);n
L122" class="line" namn>
L122">.1223/a>                3a href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEAD3/a>(&3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_bc_list" class="sref">rq_bc_list3/a>);n
L123" class="line" namn>
L123">.1233/a>n
L124" class="line" namn>
L124">.1243/a>                3spa
 class="comment">/* Prealloca1e one XDR receive buffer.*/3/spa
  
L125" class="line" namn>
L125">.1253/a>                3a href="+code=page_rcv" class="sref">page_rcv3/a> = 3a href="+code=alloc_page" class="sref">alloc_page3/a>(3a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL3/a>);n
L126" class="line" namn>
L126">.1263/a>                if (3a href="+code=page_rcv" class="sref">page_rcv3/a> == 3a href="+code=NULL" class="sref">NULL3/a>) { 
L127" class="line" namn>
L127">.1273/a>                        3a href="+code=printk" class="sref">printk3/a>(3a href="+code=KERN_ERR" class="sref">KERN_ERR3/a> 3spa
 class="string">"Failed.to create bc receive xbuf\n"3/spa
 );n
L128" class="line" namn>
L128">.1283/a>                        goto 3a href="+code=out_free" class="sref">out_free3/a>;n
L129" class="line" namn>
L129">.1293/a>                }n
L130" class="line" namn>
L130">.1303/a>                3a href="+code=xbufp" class="sref">xbufp3/a> = &3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_rcv_buf" class="sref">rq_rcv_buf3/a>;n
L131" class="line" namn>
L131">.1313/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=head" class="sref">head3/a>[0].3a href="+code=iov_base" class="sref">iov_base3/a> = 3a href="+code=page_address" class="sref">page_address3/a>(3a href="+code=page_rcv" class="sref">page_rcv3/a>);n
L132" class="line" namn>
L132">.1323/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=head" class="sref">head3/a>[0].3a href="+code=iov_le/" class="sref">iov_le/3/a> = 3a href="+code=PAGE_SIZE" class="sref">PAGE_SIZE3/a>;n
L133" class="line" namn>
L133">.1333/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=tail" class="sref">tail3/a>[0].3a href="+code=iov_base" class="sref">iov_base3/a> = 3a href="+code=NULL" class="sref">NULL3/a>;n
L134" class="line" namn>
L134">.1343/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=tail" class="sref">tail3/a>[0].3a href="+code=iov_le/" class="sref">iov_le/3/a> = 0;n
L135" class="line" namn>
L135">.1353/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=page_le/" class="sref">page_le/3/a> = 0;n
L136" class="line" namn>
L136">.1363/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=le/" class="sref">le/3/a> = 3a href="+code=PAGE_SIZE" class="sref">PAGE_SIZE3/a>;n
L137" class="line" namn>
L137">.1373/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=bufle/" class="sref">bufle/3/a> = 3a href="+code=PAGE_SIZE" class="sref">PAGE_SIZE3/a>;n
L138" class="line" namn>
L138">.1383/a>n
L139" class="line" namn>
L139">.1393/a>                3spa
 class="comment">/* Prealloca1e one XDR send buffer.*/3/spa
  
L140" class="line" namn>
L140">.1403/a>                3a href="+code=page_snd" class="sref">page_snd3/a> = 3a href="+code=alloc_page" class="sref">alloc_page3/a>(3a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL3/a>);n
L141" class="line" namn>
L141">.1413/a>                if (3a href="+code=page_snd" class="sref">page_snd3/a> == 3a href="+code=NULL" class="sref">NULL3/a>) { 
L142" class="line" namn>
L142">.1423/a>                        3a href="+code=printk" class="sref">printk3/a>(3a href="+code=KERN_ERR" class="sref">KERN_ERR3/a> 3spa
 class="string">"Failed.to create bc snd xbuf\n"3/spa
 );n
L143" class="line" namn>
L143">.1433/a>                        goto 3a href="+code=out_free" class="sref">out_free3/a>;n
L144" class="line" namn>
L144">.1443/a>                }n
L145" class="line" namn>
L145">.1453/a>n
L146" class="line" namn>
L146">.1463/a>                3a href="+code=xbufp" class="sref">xbufp3/a> = &3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_snd_buf" class="sref">rq_snd_buf3/a>;n
L147" class="line" namn>
L147">.1473/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=head" class="sref">head3/a>[0].3a href="+code=iov_base" class="sref">iov_base3/a> = 3a href="+code=page_address" class="sref">page_address3/a>(3a href="+code=page_snd" class="sref">page_snd3/a>);n
L148" class="line" namn>
L148">.1483/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=head" class="sref">head3/a>[0].3a href="+code=iov_le/" class="sref">iov_le/3/a> = 0;n
L149" class="line" namn>
L149">.1493/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=tail" class="sref">tail3/a>[0].3a href="+code=iov_base" class="sref">iov_base3/a> = 3a href="+code=NULL" class="sref">NULL3/a>;n
L150" class="line" namn>
L150">.1503/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=tail" class="sref">tail3/a>[0].3a href="+code=iov_le/" class="sref">iov_le/3/a> = 0;n
L151" class="line" namn>
L151">.1513/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=page_le/" class="sref">page_le/3/a> = 0;n
L152" class="line" namn>
L152">.1523/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=le/" class="sref">le/3/a> = 0;n
L153" class="line" namn>
L153">.1533/a>                3a href="+code=xbufp" class="sref">xbufp3/a>->3a href="+code=bufle/" class="sref">bufle/3/a> = 3a href="+code=PAGE_SIZE" class="sref">PAGE_SIZE3/a>;n
L154" class="line" namn>
L154">.1543/a>        }n
L155" class="line" namn>
L155">.1553/a>n
L156" class="line" namn>
L156">.1563/a>        3spa
 class="comment">/*3/spa
  
L157" class="line" namn>
L157">.1573/a>3spa
 class="comment">         * Addothe temporary list to the backchannel prealloca12
L158" class="line" namn>
L158">.1583/a>3spa
 class="comment">         */3/spa
  
L159" class="line" namn>
L159">.1593/a>        3a href="+code=spin_lock_bh" class="sref">spin_lock_bh3/a>(&3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_lock" class="sref">bc_pa_lock3/a>);n
L160" class="line" namn>
L160">.1603/a>        3a href="+code=list_splice" class="sref">list_splice3/a>(&3a href="+code=tmp_list" class="sref">tmp_list3/a>, &3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_list" class="sref">bc_pa_list3/a>);n
L161" class="line" namn>
L161">.1613/a>        3a href="+code=xprt_inc_alloc_count" class="sref">xprt_inc_alloc_count3/a>(3a href="+code=xprt" class="sref">xprt3/a>,.3a href="+code=min_reqs" class="sref">min_reqs3/a>);n
L162" class="line" namn>
L162">.1623/a>        3a href="+code=spin_unlock_bh" class="sref">spin_unlock_bh3/a>(&3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_lock" class="sref">bc_pa_lock3/a>);n
L163" class="line" namn>
L163">.1633/a>n
L164" class="line" namn>
L164">.1643/a>        3a href="+code=dprintk" class="sref">dprintk3/a>(3spa
 class="string">"RPC:       setup backchannel transportodone\n"3/spa
 );n
L165" class="line" namn>
L165">.1653/a>        return 0;n
L166" class="line" namn>
L166">.1663/a>n
L167" class="line" namn>
L167">.1673/a>3a href="+code=out_free" class="sref">out_free3/a>:n
L168" class="line" namn>
L168">.1683/a>        3spa
 class="comment">/*3/spa
  
L169" class="line" namn>
L169">.1693/a>3spa
 class="comment">         * Memory alloca12
L170" class="line" namn>
L170">.1703/a>3spa
 class="comment">         */3/spa
  
L171" class="line" namn>
L171">.1713/a>        3a href="+code=list_for_each_entry_safe" class="sref">list_for_each_entry_safe3/a>(3a href="+code=req" class="sref">req3/a>, 3a href="+code=tmp" class="sref">tmp3/a>, &3a href="+code=tmp_list" class="sref">tmp_list3/a>, 3a href="+code=rq_bc_pa_list" class="sref">rq_bc_pa_list3/a>) 
L172" class="line" namn>
L172">.1723/a>                3a href="+code=xprt_free_alloca12xprt_free_alloca12(3a href="+code=req" class="sref">req3/a>);n
L173" class="line" namn>
L173">.1733/a>n
L174" class="line" namn>
L174">.1743/a>        3a href="+code=dprintk" class="sref">dprintk3/a>(3spa
 class="string">"RPC:       setup backchannel transportofailed\n"3/spa
 );n
L175" class="line" namn>
L175">.1753/a>        return -1;n
L176" class="line" namn>
L176">.1763/a>}n
L177" class="line" namn>
L177">.1773/a>3a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL3/a>(3a href="+code=xprt_setup_backchannel" class="sref">xprt_setup_backchannel3/a>);n
L178" class="line" namn>
L178">.1783/a>n
L179" class="line" namn>
L179">.1793/a>3spa
 class="comment">/**3/spa
  
L180" class="line" namn>
L180">.18.8.a>3spa
 class="comment"> * xprt_destroy_backchannel - Destroys the backchannel prealloca1ed structures.3/spa
  
L181" class="line" namn>
L181">.1813/a>3spa
 class="comment"> * @xprt:       the transport holding the prealloca1ed strucures3/spa
  
L182" class="line" namn>
L182">.1823/a>3spa
 class="comment"> * @max_reqs    the maximum number of prealloca1ed structures to destroy3/spa
  
L183" class="line" namn>
L183">.1833/a>3spa
 class="comment"> *3/spa
  
L184" class="line" namn>
L184">.1843/a>3spa
 class="comment"> * Since theseostructures may have been alloca1ed.by multipleocalls3/spa
  
L185" class="line" namn>
L185">.1853/a>3spa
 class="comment"> * to xprt_setup_backchannel, we only destroy up to the maximum number3/spa
  
L186" class="line" namn>
L186">.1863/a>3spa
 class="comment"> * of reqs specified.by the caller.3/spa
  
L187" class="line" namn>
L187">.1873/a>3spa
 class="comment"> */3/spa
  
L188" class="line" namn>
L188">.1883/a>void.3a href="+code=xprt_destroy_backchannel" class="sref">xprt_destroy_backchannel3/a>(struct.3a href="+code=rpc_xprt" class="sref">rpc_xprt3/a>.*3a href="+code=xprt" class="sref">xprt3/a>, unsigned.int.3a href="+code=max_reqs" class="sref">max_reqs3/a>) 
L189" class="line" namn>
L189">.1893/a>{ 
L190" class="line" namn>
L190">.1903/a>        struct.3a href="+code=rpc_rqst" class="sref">rpc_rqst3/a>.*3a href="+code=req" class="sref">req3/a> = 3a href="+code=NULL" class="sref">NULL3/a>, *3a href="+code=tmp" class="sref">tmp3/a> = 3a href="+code=NULL" class="sref">NULL3/a>;n
L191" class="line" namn>
L191">.1913/a>n
L192" class="line" namn>
L192">.1923/a>        3a href="+code=dprintk" class="sref">dprintk3/a>(3spa
 class="string">"RPC:        destroy backchannel transport\n"3/spa
 );n
L193" class="line" namn>
L193">.1933/a>n
L194" class="line" namn>
L194">.1943/a>        3a href="+code=BUG_ON" class="sref">BUG_ON3/a>(3a href="+code=max_reqs" class="sref">max_reqs3/a> == 0);n
L195" class="line" namn>
L195">.1953/a>        3a href="+code=spin_lock_bh" class="sref">spin_lock_bh3/a>(&3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_lock" class="sref">bc_pa_lock3/a>);n
L196" class="line" namn>
L196">.1963/a>        3a href="+code=xprt_dec_alloc_count" class="sref">xprt_dec_alloc_count3/a>(3a href="+code=xprt" class="sref">xprt3/a>,.3a href="+code=max_reqs" class="sref">max_reqs3/a>);n
L197" class="line" namn>
L197">.1973/a>        3a href="+code=list_for_each_entry_safe" class="sref">list_for_each_entry_safe3/a>(3a href="+code=req" class="sref">req3/a>, 3a href="+code=tmp" class="sref">tmp3/a>, &3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_list" class="sref">bc_pa_list3/a>, 3a href="+code=rq_bc_pa_list" class="sref">rq_bc_pa_list3/a>) { 
L198" class="line" namn>
L198">.1983/a>                3a href="+code=dprintk" class="sref">dprintk3/a>(3spa
 class="string">"RPC:        req=%p\n"3/spa
 ,.3a href="+code=req" class="sref">req3/a>);n
L199" class="line" namn>
L199">.1993/a>                3a href="+code=xprt_free_alloca12xprt_free_alloca12(3a href="+code=req" class="sref">req3/a>);n
L200" class="line" namn>
L200">.2003/a>                if (--3a href="+code=max_reqs" class="sref">max_reqs3/a> == 0)n
L201" class="line" namn>
L201">.2013/a>                        break;n
L202" class="line" namn>
L202">.2023/a>        }n
L203" class="line" namn>
L203">.2033/a>        3a href="+code=spin_unlock_bh" class="sref">spin_unlock_bh3/a>(&3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_lock" class="sref">bc_pa_lock3/a>);n
L204" class="line" namn>
L204">.2043/a>n
L205" class="line" namn>
L205">.2053/a>        3a href="+code=dprintk" class="sref">dprintk3/a>(3spa
 class="string">"RPC:        backchannel list empty= %s\n"3/spa
 ,n
L206" class="line" namn>
L206">.2063/a>                3a href="+code=list_empty" class="sref">list_empty3/a>(&3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_list" class="sref">bc_pa_list3/a>) ? 3spa
 class="string">"true"3/spa
  : 3spa
 class="string">"false"3/spa
 );n
L207" class="line" namn>
L207">.2073/a>}n
L208" class="line" namn>
L208">.2083/a>3a href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPL3/a>(3a href="+code=xprt_destroy_backchannel" class="sref">xprt_destroy_backchannel3/a>);n
L209" class="line" namn>
L209">.2093/a>n
L210" class="line" namn>
L210">.21.8.a>3spa
 class="comment">/*3/spa
  
L211" class="line" namn>
L211">.2113/a>3spa
 class="comment"> * One or more.rpc_rqst structure have been prealloca1ed during the3/spa
  
L212" class="line" namn>
L212">.2123/a>3spa
 class="comment"> * backchannel setup.  Buffer.space for the send andoprivate XDR buffers3/spa
  
L213" class="line" namn>
L213">.2133/a>3spa
 class="comment"> * has been prealloca1ed as well.  Use xprt_alloc_bc_request to alloca1e3/spa
  
L214" class="line" namn>
L214">.2143/a>3spa
 class="comment"> * to this request.  Use xprt_free_bc_request to return it.3/spa
  
L215" class="line" namn>
L215">.2153/a>3spa
 class="comment"> *3/spa
  
L216" class="line" namn>
L216">.2163/a>3spa
 class="comment"> * We know that we'reocalled.in soht int1" id>3/a>3spa"line" namn>
L122?Ht, grabe XDR ;3a href/sunrpc/backchannel_rqst.c#L216" id>
L216" class="line" namn>
L117">.1173/a>       2     21mment"> * callback requests cass may hat1"f="ne nexbuf\ngrabe XDRbottomed lfR ;3a hreft/sunrpc/backchannel_rqst.c#L215" id>
L215" class="line" namn>
L118">.1183/a>       2     21mment"> */3/spa
  
L215" class="line" namn>
L119">.1193/a>n * being exceeded.3/spaRhref="* bavailabl have been, o hatwiestet/se=manonol of vailabl t/sunrpc/backchannel_rqst.c#L215" id>
L215" class="line" na2n>
L120">.1203/a>       2     22mment"> * xprt_destroy_backcht/sunrpc/backchannel_rqst.c#L188" id>
L188" class2"line" na2n>
L121">.1213/a>       2     2  3a he=rpc_rqst" class="sref">rpc_rqst3/a>.*3a href="+code=req" class="sref">ret to alloca1e3/spa
  destroy_backchannel3alloca1e3/spa
  "+code=rpc_xprt" class="sref">rpc_xprt3/a>.*3a href="+code=xprt" class="sref">xprt3/a>, unsigned.int.3a hrc/backchannel_rqst.c#L201" id>
L201" class="line" na2n>
L122">.1223/a>       2     2  3a hc/backchannel_rqst.c#L198" id>
L198" class2"line" na2n>
L123">.1233/a>nrpc_rqst3/a>.*3a href="+code=req" class="sref">req3/a>, *3a href="+code=tmc/backchannel_rqst.c#L209" id>
L209" class="line" na2n>
L124">.1243/a>       2     22unrpc/backchannel_rqst.c#L205" id>
L205" class="line" na2n>
L125">.1253/a>       2     22="+code=dprintk" class="sref">dprintk3/a>(3spa
 class="string">"RPC:        backchannel list emd buffer.at */3/spa
  
L193" class2"line" na2n>
L126">.1263/a>       2     22="+code=xprt_dec_alloc_count ;3a hreflock_bh3/a>(&3a hrefcode=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_lock" class="sref">bc_pa_lock3/a>);n
L204" class="line" na2n>
L127">.1273/a>       2     2          3a h=max!empty" class="sref">list_empty3/a>(&3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_list" class="sref">bc_pa_list3/a>) ? 3spa
 class="strirpc/backchannel_rqst.c#L198" id>
L198" class2"line" na2n>
L128">.1283/a>       2     2          goto 3a hrefclass="sref">req3/a> = 3a href="+code=NULL" class="sref">Nsafe3/ir href="+for_each_entry_safe3/ir href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_list" class="sref">bc_pa_list3/a>) ? 3spa
 class="str,de=rpc_rqst" class="sref">rpc_rqst3/a>.*3a href="+code=reqc/backchannel_rqst.c#L206" id>
L206" class="line" na2n>
L129">.1293/a>       2     2  }nreq"sref">rq_bc_pa_list3/a>);n
L68" class="2"line" na2n>
L130">.1303/a>       2     2  3a href="+code=xbufp" class="sref">f">list_del3/a>(&3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_bc_pa_list" class="sref">rq_bc_pa_list3/a>);n
L68" class="2"line" na2n>
L131">.1313/a>       2     2  3a href="+co} elestc/backchannel_rqst.c#L198" id>
L198" class2"line" na2n>
L132">.1323/a>       2     2  3a href="+code=xbufp" class="sref">q3/a> = 3a href="+code=NULL" class="sref">NULL3/a>, *3a href="+code=tmc/backchannel_rqst.c#L68" id>
L68" class="2"line" na2n>
L133">.1333/a>       2     2  3a href="+coc/backchannel_rqst.c#L208" id>
L208" class="line" na2n>
L134">.1343/a>       2     23="+code=BUG_ON" class="sref"amp;3a hrefunlock_bh3/a>(&3a hrefcode=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_lock" class="sref">bc_pa_lock3/a>);n
L204" class="line" na2n>
L135">.1353/a>       2     23unrpc/backchannel_rqst.c#L156" id>
L156" class2"line" na2n>
L136">.1363/a>       2     2  3a href="+coeq" class="sref">req3/a> == 3a href="+code=NU!L" class="sref">NULL3/a>) { 
L142" class2"line" na2n>
L137">.1373/a>       2     2  3a href="+code=xbufp" class="sref">set_bi3/a>->3a hrefset_bi3xprt_destroy_backchanel_BC_PA_IN_US_SIZE3/a>;nxq3/a>->3a href="+code=rq_bc_pa_list" class="sref">rstfer_pa_list3/a>);n
L204" class="line" na2n>
L138">.1383/a>nreq3/a> = 3a href="+code=NUrq_rcv_buf" class="sref"eply_  [0].3a href=ref"eply_  
L166" class2"line" na2n>
L139">.1393/a>       2     2  3spa
 class="comment"class="sref">xq3/a>->3a href="+code=rq_bc_pa_list" class="sr 
L166" class2"line" na2n>
L140">.1403/a>       2     2  3a href="+code=page_snd" class="srememcp+for_each_entry_memcp+code=req" class="sref">req3/a>->3a href="+code=rq_bc_pa_list" class="s/spa
  q_snd_buf3/a>;nxq3/a>->3a href="+code=rq_bc_pa_list" class="s">rq_rcv_buf3/a>;n
L206" class="line" na2n>
L141">.1413/a>       2     2  if (3a href="+code=pppppppppf="+codclass="sref">req3/a>->3a href="+code=rq_bc_pa_list" class="s/spa
  q_snd_buf3/a>;n
L204" class="line" na2n>
L142">.1423/a>       2     24ef="net/sunrpc/backchannel_rqst.c#L203" id>
L203" class="line" na2n>
L143">.1433/a>       2     24="+code=spin_unlock_bh" clas">dprintk3/a>(3spa
 class="string">"RPC:        backchannel list em */3/spa
  req3/a>);n
L199" class2"line" na2n>
L144">.1443/a>       2     2  }nreq3/a>, *3a href="+code=tmc/backchannel_rqst.c#L209" id>
L209" class="line" na2n>
L145">.1453/a>n
L203" class="line" na2n>
L146">.1463/a>       2     24unrpc/backchannel_rqst.c#L167" id>
L167" class2"line" na2n>
L147">.1473/a>       2     24mment"> * callback requestset/sunrpc/backchannel_rqst.c#L211" id>
L211" class="line" na2n>
L148">.1483/a>       2     24mment"> */3/spa
  
L213" class="line" na2n>
L149">.1493/a>       2     24mment"> * being exceeded.3/spang oci  
L215" class="line" na2n>
L150">.1503/a>       2     25mment"> * xprt_destroy_backcht/sunrpc/backchannel_rqst.c#L188" id>
L188" class2"line" na2n>
L151">.1513/a>       2     2  3a hxprt_destroy_backchannel"eturn it.3/spa
free_alloca12(3a hr1e3/spa
  "+code=rpc_xprt" class="sref">rpc_rqst3/a>.*3a href="+code=req" class="sref">req3/a>, *3a href="+code=tmc/backchannel_rqst.c#L201" id>
L201" class="line" na2n>
L152">.1523/a>       2     25 3a hc/backchannel_rqst.c#L198" id>
L198" class2"line" na2n>
L153">.1533/a>       2     253a href="+code=rpc_rqst" class="sref">rpc_xprt3/a>.*3a href="+code=xprt" class="sref">xprt3/a>, unsigned.int.3a hrLL" class="sref">Nq3/a>->3a href="+code=rq_xprt" class="sref">rq_xprt3/a>.= 3a href="+code=xpc/backchannel_rqst.c#L209" id>
L209" class="line" na2n>
L154">.1543/a>       2}n
L205" class="line" na2n>
L155">.1553/a>ndprintk3/a>(3spa
 class="string">"RPC:        backchannel list emist3/ */3/spa
  req3/a>);n
L199" class2"line" na2n>
L156">.1563/a>       23spa
25unrpc/backchannel_rqst.c#L167" id>
L167" class2"line" na2n>
L157">.1573/a>3spa
 c2ass="25="+code=list_for_each_entry_smp_mb__before_ef="r_bi3/a>->3a hrefsmp_mb__before_ef="r_bi3ring"pc/backchannel_rqst.c#L199" id>
L199" class2"line" na2n>
L158">.1583/a>3spa
 c2ass="258"+code=list_for_each_entry_>BUG_ON3/a>(3a href="+code=max_r!empty" class="s->3a href;nxq3/a>->3a href="+code=rq_bc_pa_list" class="sref">rstfer_pa_list3/a>);n
L199" class2"line" na2n>
L159">.1593/a>       23a hr2f="+code=spin_lock_bh" class=ef="r_bi3/a>->3a hrefef="r_bi3ring"destroy_backchanel_BC_PA_IN_US_SIZE3/a>;nxq3/a>->3a href="+code=rq_bc_pa_list" class="sref">rstfer_pa_list3/a>);n
L199" class2"line" na2n>
L160">.1603/a>       23a hr2f="+code=list_splice" class="smp_mb__after_ef="r_bi3/a>->3a hrefsmp_mb__after_ef="r_bi3ring"pc/backchannel_rqst.c#L199" id>
L199" class2"line" na2n>
L161">.1613/a>       23a hr26unrpc/backchannel_rqst.c#L192" id>
L192" class2"line" na2n>
L162">.1623/a>       23a hr2f="+code=spin_=max!empty" class="s3/a>(nexb_to3/spa
ur_pa_list3/a>);n3/a>(nexb_to3/spa
urxprt_destroy_backchannel/a>, unsigned.int.3a hrcrpc/backchannel_rqst.c#L142" id>
L142" class2"line" na2n>
L163">.1633/a>n * callback requestset/sunrpc/backchannel_rqst.c#L211" id>
L211" class="line" na2n>
L164">.1643/a>       23a hr26mment">         * lock is held 
L211" class="line" na2n>
L165">.1653/a>       2retur26mment">         * easier i
 case of hhhhhhhh* ef="+mwas int to.  Fst3/spa
ef="+mers3donht int at  
L170" class2"line" na2n>
L166">.1663/a>n         */3/spa
  
L170" class2"line" na2n>
L167">.1673/a>3a href2"+cod26mment">         * Addothe temporary hhhhhhhh* ed duanyure hes3/spa
  
L181" class2"line" na2n>
L168">.1683/a>       23spa
26mment">         */3/spa
  
L188" class2"line" na2n>
L169">.1693/a>3spa
 c2ass="26 3spa
 class="comment"class="sref">x">dprintk3/a>(3spa
 class="string">"RPC:        backchannel list emLaen sess temremovreq3/a>);n
L199" class2"line" na2n>
L170">.1703/a>3spa
 c2ass="27 3a href="+code=xbufp" class="sref">x class="sref">xprt_free_alloca12(3a href="+code=req" class="sref">req3/a>);n
L200" class="line" na2n>
L171">.1713/a>       23a hr27 if (3a href="+code=p href=c/backchannel_rqst.c#L200" id>
L200" class="line" na2n>
L172">.1723/a>       2     27ef="net/sunrpc/backchannel_rqst.c#L203" id>
L203" class="line" na2n>
L173">.1733/a>n
L174" class2"line" na2n>
L174">.1743/a>       23a hr2f="+code=dprint> * callback requestset/sunrpc/backchannel_rqst.c#L211" id>
L211" class="line" na2n>
L175">.1753/a>       2retur27mment">         * easier i
 case of eaRhref="iter3/spa
"ctures to desde=s soed.in it/sunrpc/backchannel_rqst.c#L170" id>
L170" class2"line" na2n>
L176">.1763/a>}n         */3/spa
   */3eree_bc_r/sunrpc/backchannel_rqst.c#L170" id>
L170" class2"line" na2n>
L177">.1773/a>3a href2"+cod27mment">         * Addothe temporary lt/sunrpc/backchannel_rqst.c#L188" id>
L188" class2"line" na2n>
L178">.1783/a>nspin_lock_bh3/a>(&3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_lock" class="sref">bc_pa_lock3/a>);n
L196" class2"line" na2n>
L179">.1793/a>3spa
 c2ass="27="+code=spin_lock_bh" class=f">list_add3/a>(&3a href="+code=req" class="sref">req3/a>->3a href="+code=rq_bc_pa_list" class="sref">rq_bc_pa_list3/a>, &3a href="+code=tmp_list" class="sreprt3/a>->3a href="+code=bc_pa_list" class="sref">bc_pa_list3/a>);n
L161" class2"line" na2n>
L180">.18.8.a>3spa
 c2ass="28="+code=list_splice" class="s="sref">spin_unlock_bh3/a>(&3a href="+code=xprt" class="sref">xprt3/a>->3a href="+code=bc_pa_lock" class="sref">bc_pa_lock3/a>);n
L204" class="line" na2n>
L181">.1813/a>3spa
 c2ass="2ommentc/backchannel_rqst.c#L203" id>
L203" class="line" na2n>
L182">.1823/a>3spa
 c2ass="2omment/backchannel_rqst.c#L203" id>
L203" class="line" na2n>
L183">.1833/a>3spa
 c2ass="2omment"/rest"/div>


"/div>

.1footer">
Tef=original LXRspa"lwl of  LXRsAddouni"+code,xprt_fexperiotheal vers tem  
.1subfooter">
 xr.833ux.no kindly hoss3/spa
backchannhttp://www.redpill-833pro.no3aRedpill L33pro AScode,xprovidtructuL33ux
L12s