linux/block/blk-merge.c
<<
ue=".14/spa> .14/form .14a ue=".1 href="../linux+v.10".3/block/blk-merge.c">ue=".14img src="../.static/gfx/right.png" alt=">>">ue4/spa> ue4spa> class="lxr_search">ue="="+search" method="post" onsubmit="return do_search(this);">ue=".14input typ> hidden" nam> navtarget" tion> ">ue=".14input typ> text" nam> search" id search">ue=".14butt/optyp> submit">Search ue4spa> class="lxr_prefs" .14a href="+prefs?return=block/blk-merge.c"ue=".1 onclick="return ajax_prefs();">ue=".1Prefs .14/a>ue4/spa> =".1 14/div =".1 14form ac >="ajax+*" method="post" onsubmit="return false;">ue4input typ> hidden" nam> ajax_lookup" id ajax_lookup" tion> ">u=".1 14/form u=".1 14div class="headingbott/m">
4div id file_contents"
 L1">1 114/a>4spa> class="comment">/*4/spa>
 
 L2">1 124/a>4spa> class="comment"> * Func	  >s related to segment and merge handling4/spa>
 
 L3">1 134/a>4spa> class="comment"> */4/spa>
 
 L4">1 144/a>#include <linux/kernel.h4/a>> 
 L5">1 154/a>#include <linux/module.h4/a>> 
 L6">1 164/a>#include <linux/bio.h4/a>> 
 L7">1 174/a>#include <linux/blkdev.h4/a>> 
 L8">1 184/a>#include <linux/scatterlist.h4/a>> 
 L9">1 194/a>u
 L10">1 	  >a>#include "blk.h4/a>"u
 L11">1 114/a>u
 L12">1 124/a>static unsigned int 4a href="+code=__blk_recalc_rq_segments" class="sref">__blk_recalc_rq_segments4/a>(struct 4a href="+code=request_queue" class="sref">request_queue4/a> *4a href="+code=q" class="sref">q4/a>,u
 L13">1 134/a>                                             struct 4a href="+code=bio" class="sref">bio4/a> *4a href="+code=bio" class="sref">bio4/a>)u
 L14">1 144/a>{u
 L15">1 154/a>        struct 4a href="+code=bio_vec" class="sref">bio_vec4/a> *4a href="+code=bv" class="sref">bv4/a>, *4a href="+code=bvprv" class="sref">bvprv4/a> = 4a href="+code=NULL" class="sref">NULL4/a>;u
 L16">1 164/a>        int 4a href="+code=cluster" class="sref">cluster4/a>, 4a href="+code=i" class="sref">i4/a>, 4a href="+code=high" class="sref">high4/a>, 4a href="+code=highprv" class="sref">highprv4/a> = 1;u
 L17">1 174/a>        unsigned int 4a href="+code=seg_size" class="sref">seg_size4/a>, 4a href="+code=nr_phys_segs" class="sref">nr_phys_segs4/a>;u
 L18">1 184/a>        struct 4a href="+code=bio" class="sref">bio4/a> *4a href="+code=fbio" class="sref">fbio4/a>, *4a href="+code=bbio" class="sref">bbio4/a>;u
 L19">1 194/a>u
 L20">1 204/a>        if (!4a href="+code=bio" class="sref">bio4/a>)u
 L21">1 214/a>                return 0;u
 L22">1 224/a>u
 L23">1 234/a>        4a href="+code=fbio" class="sref">fbio4/a> = 4a href="+code=bio" class="sref">bio4/a>;u
 L24">1 244/a>        4a href="+code=cluster" class="sref">cluster4/a> = 4a href="+code=blk_queue_cluster" class="sref">blk_queue_cluster4/a>(4a href="+code=q" class="sref">q4/a>);u
 L25">1 254/a>        4a href="+code=seg_size" class="sref">seg_size4/a> = 0;u
 L26">1 264/a>        4a href="+code=nr_phys_segs" class="sref">nr_phys_segs4/a> = 0;u
 L27">1 274/a>        4a href="+code=for_each_bio" class="sref">for_each_bio4/a>(4a href="+code=bio" class="sref">bio4/a>) {u
 L28">1 284/a>                4a href="+code=bio_for_each_segment" class="sref">bio_for_each_segment4/a>(4a href="+code=bv" class="sref">bv4/a>, 4a href="+code=bio" class="sref">bio4/a>, 4a href="+code=i" class="sref">i4/a>) {u
 L29">1 294/a>                        4spa> class="comment">/*4/spa>
 
 L30">1 304/a>4spa> class="comment">                         * the trick here is making sure that a high page is4/spa>
 
 L31">1 314/a>4spa> class="comment">                         * never considered part of another segment, since that4/spa>
 
 L32">1 324/a>4spa> class="comment">                         * might change with the bounce page.4/spa>
 
 L33">1 334/a>4spa> class="comment">                         */4/spa>
 
 L34">1 344/a>                        4a href="+code=high" class="sref">high4/a> = 4a href="+code=page_to_pfn" class="sref">page_to_pfn4/a>(4a href="+code=bv" class="sref">bv4/a>->4a href="+code=bv_page" class="sref">bv_page4/a>) > 4a href="+code=queue_bounce_pfn" class="sref">queue_bounce_pfn4/a>(4a href="+code=q" class="sref">q4/a>);u
 L35">1 354/a>                        if (4a href="+code=high" class="sref">high4/a> || 4a href="+code=highprv" class="sref">highprv4/a>)u
 L36">1 364/a>                                goto 4a href="+code=new_segment" class="sref">new_segment4/a>;u
 L37">1 374/a>                        if (4a href="+code=cluster" class="sref">cluster4/a>) {u
 L38">1 384/a>                                if (4a href="+code=seg_size" class="sref">seg_size4/a> + 4a href="+code=bv" class="sref">bv4/a>->4a href="+code=bv_len" class="sref">bv_len4/a>u
 L39">1 394/a>                                    > 4a href="+code=queue_max_segment_size" class="sref">queue_max_segment_size4/a>(4a href="+code=q" class="sref">q4/a>))u
 L40">1 404/a>                                        goto 4a href="+code=new_segment" class="sref">new_segment4/a>;u
 L41">1 414/a>                                if (!4a href="+code=BIOVEC_PHYS_MERGEABLE" class="sref">BIOVEC_PHYS_MERGEABLE4/a>(4a href="+code=bvprv" class="sref">bvprv4/a>, 4a href="+code=bv" class="sref">bv4/a>))u
 L42">1 424/a>                                        goto 4a href="+code=new_segment" class="sref">new_segment4/a>;u
 L43">1 434/a>                                if (!4a href="+code=BIOVEC_SEG_BOUNDARY" class="sref">BIOVEC_SEG_BOUNDARY4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=bvprv" class="sref">bvprv4/a>, 4a href="+code=bv" class="sref">bv4/a>))u
 L44">1 444/a>                                        goto 4a href="+code=new_segment" class="sref">new_segment4/a>;u
 L45">1 454/a>u
 L46">1 464/a>                                4a href="+code=seg_size" class="sref">seg_size4/a> += 4a href="+code=bv" class="sref">bv4/a>->4a href="+code=bv_len" class="sref">bv_len4/a>;u
 L47">1 474/a>                                4a href="+code=bvprv" class="sref">bvprv4/a> = 4a href="+code=bv" class="sref">bv4/a>;u
 L48">1 484/a>                                continue;u
 L49">1 494/a>                        } 
 L50">1 504/a>4a href="+code=new_segment" class="sref">new_segment4/a>: 
 L51">1 514/a>                        if (4a href="+code=nr_phys_segs" class="sref">nr_phys_segs4/a> == 1 && 4a href="+code=seg_size" class="sref">seg_size4/a> > 
 L52">1 524/a>                            4a href="+code=fbio" class="sref">fbio4/a>->4a href="+code=bi_seg_front_size" class="sref">bi_seg_front_size4/a>)u
 L53">1 534/a>                                4a href="+code=fbio" class="sref">fbio4/a>->4a href="+code=bi_seg_front_size" class="sref">bi_seg_front_size4/a> = 4a href="+code=seg_size" class="sref">seg_size4/a>; 
 L54">1 544/a>u
 L55">1 554/a>                        4a href="+code=nr_phys_segs" class="sref">nr_phys_segs4/a>++; 
 L56">1 564/a>                        4a href="+code=bvprv" class="sref">bvprv4/a> = 4a href="+code=bv" class="sref">bv4/a>;u
 L57">1 574/a>                        4a href="+code=seg_size" class="sref">seg_size4/a> = 4a href="+code=bv" class="sref">bv4/a>->4a href="+code=bv_len" class="sref">bv_len4/a>;u
 L58">1 584/a>                        4a href="+code=highprv" class="sref">highprv4/a> = 4a href="+code=high" class="sref">high4/a>;u
 L59">1 594/a>                } 
 L60">1 604/a>                4a href="+code=bbio" class="sref">bbio4/a> = 4a href="+code=bio" class="sref">bio4/a>;u
 L61">1 614/a>        } 
 L62">1 624/a>u
 L63">1 634/a>        if (4a href="+code=nr_phys_segs" class="sref">nr_phys_segs4/a> == 1 && 4a href="+code=seg_size" class="sref">seg_size4/a> > 4a href="+code=fbio" class="sref">fbio4/a>->4a href="+code=bi_seg_front_size" class="sref">bi_seg_front_size4/a>)u
 L64">1 644/a>                4a href="+code=fbio" class="sref">fbio4/a>->4a href="+code=bi_seg_front_size" class="sref">bi_seg_front_size4/a> = 4a href="+code=seg_size" class="sref">seg_size4/a>; 
 L65">1 654/a>        if (4a href="+code=seg_size" class="sref">seg_size4/a> > 4a href="+code=bbio" class="sref">bbio4/a>->4a href="+code=bi_seg_back_size" class="sref">bi_seg_back_size4/a>)u
 L66">1 664/a>                4a href="+code=bbio" class="sref">bbio4/a>->4a href="+code=bi_seg_back_size" class="sref">bi_seg_back_size4/a> = 4a href="+code=seg_size" class="sref">seg_size4/a>; 
 L67">1 674/a>u
 L68">1 684/a>        return 4a href="+code=nr_phys_segs" class="sref">nr_phys_segs4/a>; 
 L69">1 694/a>} 
 L70">1 704/a>u
 L71">1 714/a>void 4a href="+code=blk_recalc_rq_segments" class="sref">blk_recalc_rq_segments4/a>(struct 4a href="+code=request" class="sref">request4/a> *4a href="+code=rq" class="sref">rq4/a>)u
 L72">1 724/a>{u
 L73">1 734/a>        4a href="+code=rq" class="sref">rq4/a>->4a href="+code=nr_phys_segments" class="sref">nr_phys_segments4/a> = 4a href="+code=__blk_recalc_rq_segments" class="sref">__blk_recalc_rq_segments4/a>(4a href="+code=rq" class="sref">rq4/a>->4a href="+code=q" class="sref">q4/a>, 4a href="+code=rq" class="sref">rq4/a>->4a href="+code=bio" class="sref">bio4/a>); 
 L74">1 744/a>} 
 L75">1 754/a>u
 L76">1 764/a>void 4a href="+code=blk_recount_segments" class="sref">blk_recount_segments4/a>(struct 4a href="+code=request_queue" class="sref">request_queue4/a> *4a href="+code=q" class="sref">q4/a>, struct 4a href="+code=bio" class="sref">bio4/a> *4a href="+code=bio" class="sref">bio4/a>)u
 L77">1 774/a>{u
 L78">1 784/a>        struct 4a href="+code=bio" class="sref">bio4/a> *4a href="+code=nxt" class="sref">nxt4/a> = 4a href="+code=bio" class="sref">bio4/a>->4a href="+code=bi_next" class="sref">bi_next4/a>; 
 L79">1 794/a>u
 L80">1 804/a>        4a href="+code=bio" class="sref">bio4/a>->4a href="+code=bi_next" class="sref">bi_next4/a> = 4a href="+code=NULL" class="sref">NULL4/a>;u
 L81">1 814/a>        4a href="+code=bio" class="sref">bio4/a>->4a href="+code=bi_phys_segments" class="sref">bi_phys_segments4/a> = 4a href="+code=__blk_recalc_rq_segments" class="sref">__blk_recalc_rq_segments4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=bio" class="sref">bio4/a>); 
 L82">1 824/a>        4a href="+code=bio" class="sref">bio4/a>->4a href="+code=bi_next" class="sref">bi_next4/a> = 4a href="+code=nxt" class="sref">nxt4/a>; 
 L83">1 834/a>        4a href="+code=bio" class="sref">bio4/a>->4a href="+code=bi_flags" class="sref">bi_flags4/a> |= (1 << 4a href="+code=BIO_SEG_VALID" class="sref">BIO_SEG_VALID4/a>); 
 L84">1 844/a>} 
 L85">1 854/a>4a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL4/a>(4a href="+code=blk_recount_segments" class="sref">blk_recount_segments4/a>); 
 L86">1 864/a>u
 L87">1 874/a>static int 4a href="+code=blk_phys_contig_segment" class="sref">blk_phys_contig_segment4/a>(struct 4a href="+code=request_queue" class="sref">request_queue4/a> *4a href="+code=q" class="sref">q4/a>, struct 4a href="+code=bio" class="sref">bio4/a> *4a href="+code=bio" class="sref">bio4/a>,u
 L88">1 884/a>                                   struct 4a href="+code=bio" class="sref">bio4/a> *4a href="+code=nxt" class="sref">nxt4/a>)u
 L89">1 894/a>{u
 L90">1 904/a>        if (!4a href="+code=blk_queue_cluster" class="sref">blk_queue_cluster4/a>(4a href="+code=q" class="sref">q4/a>))u
 L91">1 914/a>                return 0;u
 L92">1 924/a>u
 L93">1 934/a>        if (4a href="+code=bio" class="sref">bio4/a>->4a href="+code=bi_seg_back_size" class="sref">bi_seg_back_size4/a> + 4a href="+code=nxt" class="sref">nxt4/a>->4a href="+code=bi_seg_front_size" class="sref">bi_seg_front_size4/a> > 
 L94">1 944/a>            4a href="+code=queue_max_segment_size" class="sref">queue_max_segment_size4/a>(4a href="+code=q" class="sref">q4/a>))u
 L95">1 954/a>                return 0;u
 L96">1 964/a>u
 L97">1 974/a>        if (!4a href="+code=bio_has_data" class="sref">bio_has_data4/a>(4a href="+code=bio" class="sref">bio4/a>))u
 L98">1 984/a>                return 1;u
 L99">1 994/a>u
 L100">11004/a>        if (!4a href="+code=BIOVEC_PHYS_MERGEABLE" class="sref">BIOVEC_PHYS_MERGEABLE4/a>(4a href="+code=__BVEC_END" class="sref">__BVEC_END4/a>(4a href="+code=bio" class="sref">bio4/a>), 4a href="+code=__BVEC_START" class="sref">__BVEC_START4/a>(4a href="+code=nxt" class="sref">nxt4/a>)))u
 L101">11014/a>                return 0;u
 L102">11024/a>u
 L103">11034/a>        4spa> class="comment">/*4/spa>
 
 L104">11044/a>4spa> class="comment">         * bio and nxt are contiguous in memory; check if the queue allows4/spa>
 
 L105">11054/a>4spa> class="comment">         * these two to be merged into one4/spa>
 
 L106">11064/a>4spa> class="comment">         */4/spa>
 
 L107">11074/a>        if (4a href="+code=BIO_SEG_BOUNDARY" class="sref">BIO_SEG_BOUNDARY4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=bio" class="sref">bio4/a>, 4a href="+code=nxt" class="sref">nxt4/a>)) 
 L108">11084/a>                return 1;u
 L109">11094/a>u
 L110">11104/a>        return 0;u
 L111">11114/a>} 
 L112">11124/a>u
 L113">11134/a>static voidu
 L114">11144/a>4a href="+code=__blk_segment_map_sg" class="sref">__blk_segment_map_sg4/a>(struct 4a href="+code=request_queue" class="sref">request_queue4/a> *4a href="+code=q" class="sref">q4/a>, struct 4a href="+code=bio_vec" class="sref">bio_vec4/a> *4a href="+code=bvec" class="sref">bvec4/a>,u
 L115">11154/a>                     struct 4a href="+code=scatterlist" class="sref">scatterlist4/a> *4a href="+code=sglist" class="sref">sglist4/a>, struct 4a href="+code=bio_vec" class="sref">bio_vec4/a> **4a href="+code=bvprv" class="sref">bvprv4/a>,u
 L116">11164/a>                     struct 4a href="+code=scatterlist" class="sref">scatterlist4/a> **4a href="+code=sg" class="sref">sg4/a>, int *4a href="+code=nsegs" class="sref">nsegs4/a>, int *4a href="+code=cluster" class="sref">cluster4/a>)u
 L117">11174/a>{u
 L118">11184/a>u
 L119">11194/a>        int 4a href="+code=nbytes" class="sref">nbytes4/a> = 4a href="+code=bvec" class="sref">bvec4/a>->4a href="+code=bv_len" class="sref">bv_len4/a>;u
 L120">11204/a>u
 L121">11214/a>        if (*4a href="+code=bvprv" class="sref">bvprv4/a> && *4a href="+code=cluster" class="sref">cluster4/a>) {u
 L122">11224/a>                if ((*4a href="+code=sg" class="sref">sg4/a>)->4a href="+code=length" class="sref">length4/a> + 4a href="+code=nbytes" class="sref">nbytes4/a> > 4a href="+code=queue_max_segment_size" class="sref">queue_max_segment_size4/a>(4a href="+code=q" class="sref">q4/a>))u
 L123">11234/a>                        goto 4a href="+code=new_segment" class="sref">new_segment4/a>;u
 L124">11244/a>u
 L125">11254/a>                if (!4a href="+code=BIOVEC_PHYS_MERGEABLE" class="sref">BIOVEC_PHYS_MERGEABLE4/a>(*4a href="+code=bvprv" class="sref">bvprv4/a>, 4a href="+code=bvec" class="sref">bvec4/a>))u
 L126">11264/a>                        goto 4a href="+code=new_segment" class="sref">new_segment4/a>;u
 L127">11274/a>                if (!4a href="+code=BIOVEC_SEG_BOUNDARY" class="sref">BIOVEC_SEG_BOUNDARY4/a>(4a href="+code=q" class="sref">q4/a>, *4a href="+code=bvprv" class="sref">bvprv4/a>, 4a href="+code=bvec" class="sref">bvec4/a>))u
 L128">11284/a>                        goto 4a href="+code=new_segment" class="sref">new_segment4/a>;u
 L129">11294/a>u
 L130">11304/a>                (*4a href="+code=sg" class="sref">sg4/a>)->4a href="+code=length" class="sref">length4/a> += 4a href="+code=nbytes" class="sref">nbytes4/a>;u
 L131">11314/a>        } else {u
 L132">11324/a>4a href="+code=new_segment" class="sref">new_segment4/a>: 
 L133">11334/a>                if (!*4a href="+code=sg" class="sref">sg4/a>) 
 L134">11344/a>                        *4a href="+code=sg" class="sref">sg4/a> = 4a href="+code=sglist" class="sref">sglist4/a>;u
 L135">11354/a>                else {u
 L136">11364/a>                        4spa> class="comment">/*4/spa>
 
 L137">11374/a>4spa> class="comment">                         * If the driver previously mapped a shorter4/spa>
 
 L138">11384/a>4spa> class="comment">                         * list, we could see a termina0
 
 L139">11394/a>4spa> class="comment">                         * prematurely unless it fully inits the sg4/spa>
 
 L140">11404/a>4spa> class="comment">                         * table /opeach mapping. We KNOW that there4/spa>
 
 L141">11414/a>4spa> class="comment">                         * must be more entries here or the driver4/spa>
 
 L142">11424/a>4spa> class="comment">                         * would be buggy, so force clear the4/spa>
 
 L143">11434/a>4spa> class="comment">                         * termina0
 
 L144">11444/a>4spa> class="comment">                         * sg_init_table() in drivers forpeach command.4/spa>
 
 L145">11454/a>4spa> class="comment">                         */4/spa>
 
 L146">11464/a>                        4a href="+code=sg_unmark_end" class="sref">sg_unmark_end4/a>(*4a href="+code=sg" class="sref">sg4/a>);u
 L147">11474/a>                        *4a href="+code=sg" class="sref">sg4/a> = 4a href="+code=sg_next" class="sref">sg_next4/a>(*4a href="+code=sg" class="sref">sg4/a>);u
 L148">11484/a>                } 
 L149">11494/a>u
 L150">11504/a>                4a href="+code=sg_set_page" class="sref">sg_set_page4/a>(*4a href="+code=sg" class="sref">sg4/a>, 4a href="+code=bvec" class="sref">bvec4/a>->4a href="+code=bv_page" class="sref">bv_page4/a>, 4a href="+code=nbytes" class="sref">nbytes4/a>, 4a href="+code=bvec" class="sref">bvec4/a>->4a href="+code=bv_offset" class="sref">bv_offset4/a>);u
 L151">11514/a>                (*4a href="+code=nsegs" class="sref">nsegs4/a>)++; 
 L152">11524/a>        } 
 L153">11534/a>        *4a href="+code=bvprv" class="sref">bvprv4/a> = 4a href="+code=bvec" class="sref">bvec4/a>; 
 L154">11544/a>} 
 L155">11554/a>u
 L156">11564/a>4spa> class="comment">/*4/spa>
 
 L157">11574/a>4spa> class="comment"> * map a request to scatterlist, return number of sg entries setup. Caller4/spa>
 
 L158">11584/a>4spa> class="comment"> * must make sure sg ca> hold rq->nr_phys_segments entries4/spa>
 
 L159">11594/a>4spa> class="comment"> */4/spa>
 
 L160">11604/a>int 4a href="+code=blk_rq_map_sg" class="sref">blk_rq_map_sg4/a>(struct 4a href="+code=request_queue" class="sref">request_queue4/a> *4a href="+code=q" class="sref">q4/a>, struct 4a href="+code=request" class="sref">request4/a> *4a href="+code=rq" class="sref">rq4/a>,u
 L161">11614/a>                  struct 4a href="+code=scatterlist" class="sref">scatterlist4/a> *4a href="+code=sglist" class="sref">sglist4/a>) 
 L162">11624/a>{u
 L163">11634/a>        struct 4a href="+code=bio_vec" class="sref">bio_vec4/a> *4a href="+code=bvec" class="sref">bvec4/a>, *4a href="+code=bvprv" class="sref">bvprv4/a>;u
 L164">11644/a>        struct 4a href="+code=req_iterator" class="sref">req_iterator4/a> 4a href="+code=iter" class="sref">iter4/a>;u
 L165">11654/a>        struct 4a href="+code=scatterlist" class="sref">scatterlist4/a> *4a href="+code=sg" class="sref">sg4/a>;u
 L166">11664/a>        int 4a href="+code=nsegs" class="sref">nsegs4/a>, 4a href="+code=cluster" class="sref">cluster4/a>;u
 L167">11674/a>u
 L168">11684/a>        4a href="+code=nsegs" class="sref">nsegs4/a> = 0;u
 L169">11694/a>        4a href="+code=cluster" class="sref">cluster4/a> = 4a href="+code=blk_queue_cluster" class="sref">blk_queue_cluster4/a>(4a href="+code=q" class="sref">q4/a>);u
 L170">11704/a>u
 L171">11714/a>        4spa> class="comment">/*4/spa>
 
 L172">11724/a>4spa> class="comment">         * forpeach bio in rq4/spa>
 
 L173">11734/a>4spa> class="comment">         */4/spa>
 
 L174">11744/a>        4a href="+code=bvprv" class="sref">bvprv4/a> = 4a href="+code=NULL" class="sref">NULL4/a>;u
 L175">11754/a>        4a href="+code=sg" class="sref">sg4/a> = 4a href="+code=NULL" class="sref">NULL4/a>;u
 L176">11764/a>        4a href="+code=rq_for_each_segment" class="sref">rq_for_each_segment4/a>(4a href="+code=bvec" class="sref">bvec4/a>, 4a href="+code=rq" class="sref">rq4/a>, 4a href="+code=iter" class="sref">iter4/a>) {u
 L177">11774/a>                4a href="+code=__blk_segment_map_sg" class="sref">__blk_segment_map_sg4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=bvec" class="sref">bvec4/a>, 4a href="+code=sglist" class="sref">sglist4/a>, &4a href="+code=bvprv" class="sref">bvprv4/a>, &4a href="+code=sg" class="sref">sg4/a>,u
 L178">11784/a>                                     &4a href="+code=nsegs" class="sref">nsegs4/a>, &4a href="+code=cluster" class="sref">cluster4/a>);u
 L179">11794/a>        } 4spa> class="comment">/* segments in rq */4/spa>
 
 L180">11804/a>u
 L181">11814/a>u
 L182">11824/a>        if (4a href="+code=unlikely" class="sref">unlikely4/a>(4a href="+code=rq" class="sref">rq4/a>->4a href="+code=cmd_flags" class="sref">cmd_flags4/a> & 4a href="+code=REQ_COPY_USER" class="sref">REQ_COPY_USER4/a>) &&u
 L183">11834/a>            (4a href="+code=blk_rq_bytes" class="sref">blk_rq_bytes4/a>(4a href="+code=rq" class="sref">rq4/a>) & 4a href="+code=q" class="sref">q4/a>->4a href="+code=dma_pad_mask" class="sref">dma_pad_mask4/a>)) {u
 L184">11844/a>                unsigned int 4a href="+code=pad_len" class="sref">pad_len4/a> =u
 L185">11854/a>                        (4a href="+code=q" class="sref">q4/a>->4a href="+code=dma_pad_mask" class="sref">dma_pad_mask4/a> & ~4a href="+code=blk_rq_bytes" class="sref">blk_rq_bytes4/a>(4a href="+code=rq" class="sref">rq4/a>)) + 1;u
 L186">11864/a>u
 L187">11874/a>                4a href="+code=sg" class="sref">sg4/a>->4a href="+code=length" class="sref">length4/a> += 4a href="+code=pad_len" class="sref">pad_len4/a>;u
 L188">11884/a>                4a href="+code=rq" class="sref">rq4/a>->4a href="+code=extra_len" class="sref">extra_len4/a> += 4a href="+code=pad_len" class="sref">pad_len4/a>;u
 L189">11894/a>        }u
 L190">11904/a>u
 L191">11914/a>        if (4a href="+code=q" class="sref">q4/a>->4a href="+code=dma_drain_size" class="sref">dma_drain_size4/a> && 4a href="+code=q" class="sref">q4/a>->4a href="+code=dma_drain_needed" class="sref">dma_drain_needed4/a>(4a href="+code=rq" class="sref">rq4/a>)) {u
 L192">11924/a>                if (4a href="+code=rq" class="sref">rq4/a>->4a href="+code=cmd_flags" class="sref">cmd_flags4/a> & 4a href="+code=REQ_WRITE" class="sref">REQ_WRITE4/a>) 
 L193">11934/a>                        4a href="+code=memset" class="sref">memset4/a>(4a href="+code=q" class="sref">q4/a>->4a href="+code=dma_drain_buffer" class="sref">dma_drain_buffer4/a>, 0, 4a href="+code=q" class="sref">q4/a>->4a href="+code=dma_drain_size" class="sref">dma_drain_size4/a>);u
 L194">11944/a>u
 L195">11954/a>                4a href="+code=sg" class="sref">sg4/a>->4a href="+code=page_link" class="sref">page_link4/a> &= ~0x02;u
 L196">11964/a>                4a href="+code=sg" class="sref">sg4/a> = 4a href="+code=sg_next" class="sref">sg_next4/a>(4a href="+code=sg" class="sref">sg4/a>);u
 L197">11974/a>                4a href="+code=sg_set_page" class="sref">sg_set_page4/a>(4a href="+code=sg" class="sref">sg4/a>, 4a href="+code=virt_to_page" class="sref">virt_to_page4/a>(4a href="+code=q" class="sref">q4/a>->4a href="+code=dma_drain_buffer" class="sref">dma_drain_buffer4/a>),u
 L198">11984/a>                            4a href="+code=q" class="sref">q4/a>->4a href="+code=dma_drain_size" class="sref">dma_drain_size4/a>,u
 L199">11994/a>                            ((unsigned long)4a href="+code=q" class="sref">q4/a>->4a href="+code=dma_drain_buffer" class="sref">dma_drain_buffer4/a>) &u
 L200">12004/a>                            (4a href="+code=PAGE_SIZE" class="sref">PAGE_SIZE4/a> - 1));u
 L201">12014/a>                4a href="+code=nsegs" class="sref">nsegs4/a>++; 
 L202">12024/a>                4a href="+code=rq" class="sref">rq4/a>->4a href="+code=extra_len" class="sref">extra_len4/a> += 4a href="+code=q" class="sref">q4/a>->4a href="+code=dma_drain_size" class="sref">dma_drain_size4/a>; 
 L203">12034/a>        }u
 L204">12044/a>u
 L205">12054/a>        if (4a href="+code=sg" class="sref">sg4/a>) 
 L206">12064/a>                4a href="+code=sg_mark_end" class="sref">sg_mark_end4/a>(4a href="+code=sg" class="sref">sg4/a>);u
 L207">12074/a>u
 L208">12084/a>        return 4a href="+code=nsegs" class="sref">nsegs4/a>;u
 L209">12094/a>} 
 L210">12104/a>4a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL4/a>(4a href="+code=blk_rq_map_sg" class="sref">blk_rq_map_sg4/a>);u
 L211">12114/a>u
 L212">12124/a>4spa> class="comment">/**4/spa>
 
 L213">12134/a>4spa> class="comment"> * blk_bio_map_sg - map a bio to a scatterlist4/spa>
 
 L214">12144/a>4spa> class="comment"> * @q: request_queue in question4/spa>
 
 L215">12154/a>4spa> class="comment"> * @bio: bio being mapped4/spa>
 
 L216">12164/a>4spa> class="comment"> * @sglist: scatterlist being mapped4/spa>
 
 L217">12174/a>4spa> class="comment"> *4/spa>
 
 L218">12184/a>4spa> class="comment"> * Note:4/spa>
 
 L219">12194/a>4spa> class="comment"> *    Caller must make sure sg ca> hold bio->bi_phys_segments entries4/spa>
 
 L220">12204/a>4spa> class="comment"> *4/spa>
 
 L221">12214/a>4spa> class="comment"> * Will return the number of sg entries setup4/spa>
 
 L222">12224/a>4spa> class="comment"> */4/spa>
 
 L223">12234/a>int 4a href="+code=blk_bio_map_sg" class="sref">blk_bio_map_sg4/a>(struct 4a href="+code=request_queue" class="sref">request_queue4/a> *4a href="+code=q" class="sref">q4/a>, struct 4a href="+code=bio" class="sref">bio4/a> *4a href="+code=bio" class="sref">bio4/a>,u
 L224">12244/a>                   struct 4a href="+code=scatterlist" class="sref">scatterlist4/a> *4a href="+code=sglist" class="sref">sglist4/a>) 
 L225">12254/a>{u
 L226">12264/a>        struct 4a href="+code=bio_vec" class="sref">bio_vec4/a> *4a href="+code=bvec" class="sref">bvec4/a>, *4a href="+code=bvprv" class="sref">bvprv4/a>;u
 L227">12274/a>        struct 4a href="+code=scatterlist" class="sref">scatterlist4/a> *4a href="+code=sg" class="sref">sg4/a>;u
 L228">12284/a>        int 4a href="+code=nsegs" class="sref">nsegs4/a>, 4a href="+code=cluster" class="sref">cluster4/a>;u
 L229">12294/a>        unsigned long 4a href="+code=i" class="sref">i4/a>;u
 L230">12304/a>u
 L231">12314/a>        4a href="+code=nsegs" class="sref">nsegs4/a> = 0;u
 L232">12324/a>        4a href="+code=cluster" class="sref">cluster4/a> = 4a href="+code=blk_queue_cluster" class="sref">blk_queue_cluster4/a>(4a href="+code=q" class="sref">q4/a>);u
 L233">12334/a>u
 L234">12344/a>        4a href="+code=bvprv" class="sref">bvprv4/a> = 4a href="+code=NULL" class="sref">NULL4/a>;u
 L235">12354/a>        4a href="+code=sg" class="sref">sg4/a> = 4a href="+code=NULL" class="sref">NULL4/a>;u
 L236">12364/a>        4a href="+code=bio_for_each_segment" class="sref">bio_for_each_segment4/a>(4a href="+code=bvec" class="sref">bvec4/a>, 4a href="+code=bio" class="sref">bio4/a>, 4a href="+code=i" class="sref">i4/a>) {u
 L237">12374/a>                4a href="+code=__blk_segment_map_sg" class="sref">__blk_segment_map_sg4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=bvec" class="sref">bvec4/a>, 4a href="+code=sglist" class="sref">sglist4/a>, &4a href="+code=bvprv" class="sref">bvprv4/a>, &4a href="+code=sg" class="sref">sg4/a>,u
 L238">12384/a>                                     &4a href="+code=nsegs" class="sref">nsegs4/a>, &4a href="+code=cluster" class="sref">cluster4/a>);u
 L239">12394/a>        } 4spa> class="comment">/* segments in bio */4/spa>
 
 L240">12404/a>u
 L241">12414/a>        if (4a href="+code=sg" class="sref">sg4/a>) 
 L242">12424/a>                4a href="+code=sg_mark_end" class="sref">sg_mark_end4/a>(4a href="+code=sg" class="sref">sg4/a>);u
 L243">12434/a>u
 L244">12444/a>        4a href="+code=BUG_ON" class="sref">BUG_ON4/a>(4a href="+code=bio" class="sref">bio4/a>->4a href="+code=bi_phys_segments" class="sref">bi_phys_segments4/a> && 4a href="+code=nsegs" class="sref">nsegs4/a> > 4a href="+code=bio" class="sref">bio4/a>->4a href="+code=bi_phys_segments" class="sref">bi_phys_segments4/a>);u
 L245">12454/a>        return 4a href="+code=nsegs" class="sref">nsegs4/a>;u
 L246">12464/a>} 
 L247">12474/a>4a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL4/a>(4a href="+code=blk_bio_map_sg" class="sref">blk_bio_map_sg4/a>);u
 L248">12484/a>u
 L249">12494/a>static 4a href="+code=inline" class="sref">inline4/a> int 4a href="+code=ll_new_hw_segment" class="sref">ll_new_hw_segment4/a>(struct 4a href="+code=request_queue" class="sref">request_queue4/a> *4a href="+code=q" class="sref">q4/a>,u
 L250">12504/a>                                    struct 4a href="+code=request" class="sref">request4/a> *4a href="+code=req" class="sref">req4/a>,u
 L251">12514/a>                                    struct 4a href="+code=bio" class="sref">bio4/a> *4a href="+code=bio" class="sref">bio4/a>)u
 L252">12524/a>{u
 L253">12534/a>        int 4a href="+code=nr_phys_segs" class="sref">nr_phys_segs4/a> = 4a href="+code=bio_phys_segments" class="sref">bio_phys_segments4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=bio" class="sref">bio4/a>); 
 L254">12544/a>u
 L255">12554/a>        if (4a href="+code=req" class="sref">req4/a>->4a href="+code=nr_phys_segments" class="sref">nr_phys_segments4/a> + 4a href="+code=nr_phys_segs" class="sref">nr_phys_segs4/a> > 4a href="+code=queue_max_segments" class="sref">queue_max_segments4/a>(4a href="+code=q" class="sref">q4/a>))u
 L256">12564/a>                goto 4a href="+code=no_merge" class="sref">no_merge4/a>;u
 L257">12574/a>u
 L258">12584/a>        if (4a href="+code=bio_integrity" class="sref">bio_integrity4/a>(4a href="+code=bio" class="sref">bio4/a>) && 4a href="+code=blk_integrity_merge_bio" class="sref">blk_integrity_merge_bio4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=req" class="sref">req4/a>, 4a href="+code=bio" class="sref">bio4/a>))u
 L259">12594/a>                goto 4a href="+code=no_merge" class="sref">no_merge4/a>;u
 L260">12604/a>u
 L261">12614/a>        4spa> class="comment">/*4/spa>
 
 L262">12624/a>4spa> class="comment">         * This will form the start of a new hw segment.  Bump both4/spa>
 
 L263">12634/a>4spa> class="comment">         * counters.4/spa>
 
 L264">12644/a>4spa> class="comment">         */4/spa>
 
 L265">12654/a>        4a href="+code=req" class="sref">req4/a>->4a href="+code=nr_phys_segments" class="sref">nr_phys_segments4/a> += 4a href="+code=nr_phys_segs" class="sref">nr_phys_segs4/a>;u
 L266">12664/a>        return 1;u
 L267">12674/a>u
 L268">12684/a>4a href="+code=no_merge" class="sref">no_merge4/a>: 
 L269">12694/a>        4a href="+code=req" class="sref">req4/a>->4a href="+code=cmd_flags" class="sref">cmd_flags4/a> |= 4a href="+code=REQ_NOMERGE" class="sref">REQ_NOMERGE4/a>;u
 L270">12704/a>        if (4a href="+code=req" class="sref">req4/a> == 4a href="+code=q" class="sref">q4/a>->4a href="+code=last_merge" class="sref">last_merge4/a>)u
 L271">12714/a>                4a href="+code=q" class="sref">q4/a>->4a href="+code=last_merge" class="sref">last_merge4/a> = 4a href="+code=NULL" class="sref">NULL4/a>;u
 L272">12724/a>        return 0;u
 L273">12734/a>} 
 L274">12744/a>u
 L275">12754/a>int 4a href="+code=ll_back_merge_fn" class="sref">ll_back_merge_fn4/a>(struct 4a href="+code=request_queue" class="sref">request_queue4/a> *4a href="+code=q" class="sref">q4/a>, struct 4a href="+code=request" class="sref">request4/a> *4a href="+code=req" class="sref">req4/a>,u
 L276">12764/a>                     struct 4a href="+code=bio" class="sref">bio4/a> *4a href="+code=bio" class="sref">bio4/a>)u
 L277">12774/a>{u
 L278">12784/a>        if (4a href="+code=blk_rq_sectors" class="sref">blk_rq_sectors4/a>(4a href="+code=req" class="sref">req4/a>) + 4a href="+code=bio_sectors" class="sref">bio_sectors4/a>(4a href="+code=bio" class="sref">bio4/a>) > 
 L279">12794/a>            4a href="+code=blk_rq_get_max_sectors" class="sref">blk_rq_get_max_sectors4/a>(4a href="+code=req" class="sref">req4/a>)) {u
 L280">12804/a>                4a href="+code=req" class="sref">req4/a>->4a href="+code=cmd_flags" class="sref">cmd_flags4/a> |= 4a href="+code=REQ_NOMERGE" class="sref">REQ_NOMERGE4/a>;u
 L281">12814/a>                if (4a href="+code=req" class="sref">req4/a> == 4a href="+code=q" class="sref">q4/a>->4a href="+code=last_merge" class="sref">last_merge4/a>)u
 L282">12824/a>                        4a href="+code=q" class="sref">q4/a>->4a href="+code=last_merge" class="sref">last_merge4/a> = 4a href="+code=NULL" class="sref">NULL4/a>;u
 L283">12834/a>                return 0;u
 L284">12844/a>        } 
 L285">12854/a>        if (!4a href="+code=bio_flagged" class="sref">bio_flagged4/a>(4a href="+code=req" class="sref">req4/a>->4a href="+code=biotail" class="sref">biotail4/a>, 4a href="+code=BIO_SEG_VALID" class="sref">BIO_SEG_VALID4/a>))u
 L286">12864/a>                4a href="+code=blk_recount_segments" class="sref">blk_recount_segments4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=req" class="sref">req4/a>->4a href="+code=biotail" class="sref">biotail4/a>); 
 L287">12874/a>        if (!4a href="+code=bio_flagged" class="sref">bio_flagged4/a>(4a href="+code=bio" class="sref">bio4/a>, 4a href="+code=BIO_SEG_VALID" class="sref">BIO_SEG_VALID4/a>))u
 L288">12884/a>                4a href="+code=blk_recount_segments" class="sref">blk_recount_segments4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=bio" class="sref">bio4/a>); 
 L289">12894/a>u
 L290">12904/a>        return 4a href="+code=ll_new_hw_segment" class="sref">ll_new_hw_segment4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=req" class="sref">req4/a>, 4a href="+code=bio" class="sref">bio4/a>); 
 L291">12914/a>} 
 L292">12924/a>u
 L293">12934/a>int 4a href="+code=ll_front_merge_fn" class="sref">ll_front_merge_fn4/a>(struct 4a href="+code=request_queue" class="sref">request_queue4/a> *4a href="+code=q" class="sref">q4/a>, struct 4a href="+code=request" class="sref">request4/a> *4a href="+code=req" class="sref">req4/a>,u
 L294">12944/a>                      struct 4a href="+code=bio" class="sref">bio4/a> *4a href="+code=bio" class="sref">bio4/a>)u
 L295">12954/a>{u
 L296">12964/a>        if (4a href="+code=blk_rq_sectors" class="sref">blk_rq_sectors4/a>(4a href="+code=req" class="sref">req4/a>) + 4a href="+code=bio_sectors" class="sref">bio_sectors4/a>(4a href="+code=bio" class="sref">bio4/a>) > 
 L297">12974/a>            4a href="+code=blk_rq_get_max_sectors" class="sref">blk_rq_get_max_sectors4/a>(4a href="+code=req" class="sref">req4/a>)) {u
 L298">12984/a>                4a href="+code=req" class="sref">req4/a>->4a href="+code=cmd_flags" class="sref">cmd_flags4/a> |= 4a href="+code=REQ_NOMERGE" class="sref">REQ_NOMERGE4/a>;u
 L299">12994/a>                if (4a href="+code=req" class="sref">req4/a> == 4a href="+code=q" class="sref">q4/a>->4a href="+code=last_merge" class="sref">last_merge4/a>)u
 L300">13004/a>                        4a href="+code=q" class="sref">q4/a>->4a href="+code=last_merge" class="sref">last_merge4/a> = 4a href="+code=NULL" class="sref">NULL4/a>;u
 L301">13014/a>                return 0;u
 L302">13024/a>        } 
 L303">13034/a>        if (!4a href="+code=bio_flagged" class="sref">bio_flagged4/a>(4a href="+code=bio" class="sref">bio4/a>, 4a href="+code=BIO_SEG_VALID" class="sref">BIO_SEG_VALID4/a>))u
 L304">13044/a>                4a href="+code=blk_recount_segments" class="sref">blk_recount_segments4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=bio" class="sref">bio4/a>); 
 L305">13054/a>        if (!4a href="+code=bio_flagged" class="sref">bio_flagged4/a>(4a href="+code=req" class="sref">req4/a>->4a href="+code=bio" class="sref">bio4/a>, 4a href="+code=BIO_SEG_VALID" class="sref">BIO_SEG_VALID4/a>))u
 L306">13064/a>                4a href="+code=blk_recount_segments" class="sref">blk_recount_segments4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=req" class="sref">req4/a>->4a href="+code=bio" class="sref">bio4/a>); 
 L307">13074/a>u
 L308">13084/a>        return 4a href="+code=ll_new_hw_segment" class="sref">ll_new_hw_segment4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=req" class="sref">req4/a>, 4a href="+code=bio" class="sref">bio4/a>); 
 L309">13094/a>} 
 L310">13104/a>u
 L311">13114/a>static int 4a href="+code=ll_merge_requests_fn" class="sref">ll_merge_requests_fn4/a>(struct 4a href="+code=request_queue" class="sref">request_queue4/a> *4a href="+code=q" class="sref">q4/a>, struct 4a href="+code=request" class="sref">request4/a> *4a href="+code=req" class="sref">req4/a>,u
 L312">13124/a>                                struct 4a href="+code=request" class="sref">request4/a> *4a href="+code=next" class="sref">next4/a>)u
 L313">13134/a>{u
 L314">13144/a>        int 4a href="+code=total_phys_segments" class="sref">total_phys_segments4/a>;u
 L315">13154/a>        unsigned int 4a href="+code=seg_size" class="sref">seg_size4/a> =u
 L316">13164/a>                4a href="+code=req" class="sref">req4/a>->4a href="+code=biotail" class="sref">biotail4/a>->4a href="+code=bi_seg_back_size" class="sref">bi_seg_back_size4/a> + 4a href="+code=next" class="sref">next4/a>->4a href="+code=bio" class="sref">bio4/a>->4a href="+code=bi_seg_front_size" class="sref">bi_seg_front_size4/a>;u
 L317">13174/a>u
 L318">13184/a>        4spa> class="comment">/*4/spa>
 
 L319">13194/a>4spa> class="comment">         * First check if the either of the requests are re-queued4/spa>
 
 L320">13204/a>4spa> class="comment">         * requests.  Can't merge them if they are.4/spa>
 
 L321">13214/a>4spa> class="comment">         */4/spa>
 
 L322">13224/a>        if (4a href="+code=req" class="sref">req4/a>->4a href="+code=special" class="sref">special4/a> || 4a href="+code=next" class="sref">next4/a>->4a href="+code=special" class="sref">special4/a>)u
 L323">13234/a>                return 0;u
 L324">13244/a>u
 L325">13254/a>        4spa> class="comment">/*4/spa>
 
 L326">13264/a>4spa> class="comment">         * Will it become too large?4/spa>
 
 L327">13274/a>4spa> class="comment">         */4/spa>
 
 L328">13284/a>        if ((4a href="+code=blk_rq_sectors" class="sref">blk_rq_sectors4/a>(4a href="+code=req" class="sref">req4/a>) + 4a href="+code=blk_rq_sectors" class="sref">blk_rq_sectors4/a>(4a href="+code=next" class="sref">next4/a>)) > 
 L329">13294/a>            4a href="+code=blk_rq_get_max_sectors" class="sref">blk_rq_get_max_sectors4/a>(4a href="+code=req" class="sref">req4/a>)) 
 L330">13304/a>                return 0;u
 L331">13314/a>u
 L332">13324/a>        4a href="+code=total_phys_segments" class="sref">total_phys_segments4/a> = 4a href="+code=req" class="sref">req4/a>->4a href="+code=nr_phys_segments" class="sref">nr_phys_segments4/a> + 4a href="+code=next" class="sref">next4/a>->4a href="+code=nr_phys_segments" class="sref">nr_phys_segments4/a>;u
 L333">13334/a>        if (4a href="+code=blk_phys_contig_segment" class="sref">blk_phys_contig_segment4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=req" class="sref">req4/a>->4a href="+code=biotail" class="sref">biotail4/a>, 4a href="+code=next" class="sref">next4/a>->4a href="+code=bio" class="sref">bio4/a>)) {u
 L334">13344/a>                if (4a href="+code=req" class="sref">req4/a>->4a href="+code=nr_phys_segments" class="sref">nr_phys_segments4/a> == 1) 
 L335">13354/a>                        4a href="+code=req" class="sref">req4/a>->4a href="+code=bio" class="sref">bio4/a>->4a href="+code=bi_seg_front_size" class="sref">bi_seg_front_size4/a> = 4a href="+code=seg_size" class="sref">seg_size4/a>;u
 L336">13364/a>                if (4a href="+code=next" class="sref">next4/a>->4a href="+code=nr_phys_segments" class="sref">nr_phys_segments4/a> == 1) 
 L337">13374/a>                        4a href="+code=next" class="sref">next4/a>->4a href="+code=biotail" class="sref">biotail4/a>->4a href="+code=bi_seg_back_size" class="sref">bi_seg_back_size4/a> = 4a href="+code=seg_size" class="sref">seg_size4/a>;u
 L338">13384/a>                4a href="+code=total_phys_segments" class="sref">total_phys_segments4/a>--;u
 L339">13394/a>        }u
 L340">13404/a>u
 L341">13414/a>        if (4a href="+code=total_phys_segments" class="sref">total_phys_segments4/a> > 4a href="+code=queue_max_segments" class="sref">queue_max_segments4/a>(4a href="+code=q" class="sref">q4/a>))u
 L342">13424/a>                return 0;u
 L343">13434/a>u
 L344">13444/a>        if (4a href="+code=blk_integrity_rq" class="sref">blk_integrity_rq4/a>(4a href="+code=req" class="sref">req4/a>) && 4a href="+code=blk_integrity_merge_rq" class="sref">blk_integrity_merge_rq4/a>(4a href="+code=q" class="sref">q4/a>, 4a href="+code=req" class="sref">req4/a>, 4a href="+code=next" class="sref">next4/a>))u
 L345">13454/a>                return 0;u
 L346">13464/a>u
 L347">13474/a>        4spa> class="comment">/* Merge is OK... */4/spa>
 
 L348">13484/a>        4a href="+code=req" class="sref">req4/a>->4a href="+code=nr_phys_segments" class="sref">nr_phys_segments4/a> = 4a href="+code=total_phys_segments" class="sref">total_phys_segments4/a>;u
 L349">13494/a>        return 1;u
 L350">13504/a>}u
 L351">13514/a>u
 L352">13524/a>4spa> class="comment">/**4/spa>
 
 L353">13534/a>4spa> class="comment"> * blk_rq_set_mixed_merge - mark a request as mixed merge4/spa>
 
 L354">13544/a>4spa> class="comment"> * @rq: request to mark as mixed merge4/spa>
 
 L355">13554/a>4spa> class="comment"> *4/spa>
 
 L356">13564/a>4spa> class="comment"> * Description:4/spa>
 
 L357">13574/a>4spa> class="comment"> *     @rq is about to be mixed merged.  Make sure the attributes4/spa>
 
 L358">13584/a>4spa> class="comment"> *     which ca> be mixed are set in each bio and mark @rq as mixed4/spa>
 
 L359">13594/a>4spa> class="comment"> *     merged.4/spa>
 
 L360">13604/a>4spa> class="comment"> */4/spa>
 
 L361">13614/a>void 4a href="+code=blk_rq_set_mixed_merge" class="sref">blk_rq_set_mixed_merge4/a>(struct 4a href="+code=request" class="sref">request4/a> *4a href="+code=rq" class="sref">rq4/a>) 
 L362">13624/a>{u
 L363">13634/a>        unsigned int 4a href="+code=ff" class="sref">ff4/a> = 4a href="+code=r="line" nam>
 L192">11924/a>                if (4a href="+code=rq" class="sref">rq4/a>->4a href="+codeFAItref">rq4/k/blk-merge.c#L357" id
 L357" class="line" nam>
 L357">13574/a>4spa> class="comment"> *     @rq is about to be mixMASK57">13574/a>4spout to be mixMASK-merge.c#L350" id
 L350" class="lin5" id
 L235" class="line" nam>
 L235">1236eq4/a>) &L295" id
 L295" class="line" nam>
 L295">12954/a>{unr_phy3_segm3nts4/ae.c#L350" id
 L350" class="lin5L357" id
267">12674/a>u
 L357">13574/a>4spa> class="comment"> *     @rq is about MIXED_           if (4a href="MIXED_     d
 L363" class="line" nam>
 L363">13 the attrref="+code=no_merge" cla3s="sr36il4/a>->4a href="+1" id
ge.c#L350" id
 L350" class="lin5mark @rq 69" id
 L269" class="lin3" nam36"sref">inline4/a> int 4a href="+co3_flags" c3ass="sref">cmd_flags4/a>3|= 4a3href="+code=REQ="comment">         * Will it become too large?4/spa>
 q4/a>->4a href=3+code37321" id
 L321" class="line" nam>
 L321 *  >
 L2noa>u ill it become too large?4/spa>
 last_mer3e4/a>374/a>        if (4a href="+code=req" c iotaaief="" i/a>4It >
 L2jne" track2">ose> class=fnam>
on/4/spa>
 
 3273">12734/a>}  *     whis58">> class=4/spa>
 12644/a>4spa> class="comment">  xed_merge" class="sref">blk_rq_set_mix754/a>int34a href="+code=ll_back_m3rge_f37eq4/a>) &63" ck/blk-merge.c#L304" id
 L304" class="lin"+codeFAItref">rq4/k/blk-merge.c#L357" id
 L357" class="line"k/blk-merge.c#L296" id
 Lgid
 L295" class="line" nam>
 L295">12954/gid
 L295" class="line" nam>
 L295">12954/"+code=bio" class="srize" class="sref">seg_size4/a>;uff4/a> = 4a href="struct 4a3href="+code=request_queu3" cla37amp;= ~0x02;unsegs4/a> > 4a href=rwreturn 0;u *     @rq is about to be mixMASK57">13574/a>4spout to be mixMASK-merref">q4/a>, lass="sref">ff4/a> = 4a href="sL357" id
ode=bio" class="sref">bi34/a>)3nsegs4/a> > 4a href=rwreturn 0;u *     @rq is about to be mixMASK57">13574/a>4spout to be mixMASK-merre!+code=bio" class=ef">rq4/a>->4a href=L310" class="line" nam>
 L310">12784/a>  3     if (4a href="+code=3lk_rq37s="sref">q4/a>, 4a href="+code=bvec"code=nsegs" class="sref">nsegs4/a> > 4a href=rwreturn 0;u
 L299">12994/aef">rq4/a>->4a href=310" class="line" nam>
 L310">12mark @rq f="+code=req" class="sre3">req3/a>) + 4a href52" class="line" nam>
 L352">13get_max_s3ctors4/a>(4a href="+code3req" 37ref="+code=REQ_NOMERGE" classk/blk-merge.c#L357" id
 L357" class="line" nam>
 L357">13574/a>4spa> class="commam>
 L299">12994/a>   MIXED_           if (4a href="MIXED_     d
 L310" class="line" nam>
 L310">1code=cmd_3lags" class="sref">cmd_f3ags4/38d
 L352" class="line" nam>
 L352">13="+code=q3 class="sref">q4/a>->3a hre38href="block/blk-merge.c#L353" id
 Lf="+code=3ast_merge" class="sref">3ast_m3rge4/aeue" clss="sref">request4/a> *4acio" cli  4a href="+code=req" > *4acio" cli  4a hrlk-merge.c#L362" id
 L362" class="line" nam>
 L362">13624/a>{u
 L284">12844/a>   3    }38ys_segments" class="sref">total_phys L285">12354/a>        if (!4a hre3="+co38eq4/a>) && 4a href="+code=bldoli  eue"ef="+code=req" > *4doli  eue"grity_merge_rq4/a>(4a href="+code=q" class="srreclass="sref">ff4/a> = 4a href="a href="+3ode=req" class="sref">re34/a>-38amp;= ~0x02;u{u
 L310">1cL357" id
ments4/a>(4a href="+code3q" cl3ss="sref">q4/a>, 4a hr+code=rq" class="srcpu57">13574/a>4spapud
 L310" class="line" nam>
 L310">1c784/a>  3ode=bio" class="sref">bi34/a>,38a>
 q4/a>, 4a href="+code=bio" cpu57">13574/a>4spapud
 L"+code=bio" class=par# eue"_ck/bref="+code=q" cpar# eue"_ck/bgrityL310" class="line" nam>
 L310">1904/a>   3    return 4a href="+cod3=ll_n38"+code=last_merge" clnext4/a>->4a href="+code=nrpar#ref="+code=q" cpar#d
 L310" class="line" nam>
 L310">1_segment43a>(4a href="+code=q" cla3s="sr39s_segments" class="sref">total_phys2924/a>u<3 href="block/blk-merge.c3L293"39 4a href="+code=NULL" class="sref">Npar# ro" d eue"357">13574/a>4sppar# ro" d eue"3grity_merge_rq4/a>(4cpu57">13574/a>4spapud
 L54/a>            par#ref="+code=q" cpar#d
 LL310" class="line" nam>
 L310">1934/a>int34a href="+code=ll_front_3erge_39u(4par#ref="+code=q" cpar#d
 L45" id
 L345" clasq_data_dipa> class="commesq_data_dipgrity_merge_rq4/a>(4a href="+code=q" class="srr310" class="line" nam>
 L310">19code=r="la href="+code=request_qu3ue" c39rity_rq" class="sref">blk_integrity4a href="3code=bio" class="sref">b3o4/a>3u(4par#ref="+code=q" cpar#d
 Lr310" class="line" nam>
 L310">19 href="+3     if (4a href="+code=3lk_rq39amp;= ~0x02;u
 L310">1/a>(4a hr3f="+code=req" class="sre3">req3/a>) + 4a href52" class="line" nam>
 L352">13get_max_s3ctors4/a>(4a href="+code3req" 3lass="52" class="line" nam>
 L352">13gcount_se3lags" class="sref">cmd_f3ags4/39"sref">inline4/a> int 4a href="+co3="+code=q3 class="sref">q4/a>->3a hre393604/a>4spa> class="comment Will it become too large?4/spa>
 4ast_m40 4a href="+code=blk_rq_set_mi Has58">135cass=d withlass="commen spinck/b acquirged.4/spa>
 
 L302">13024/a>   4    }40222" class="line" nam>
 L222"xed_merge" class="sref">blk_rq_set_mi4 L303">13434/a>        if (!4a hre4="+co40ge4/aeue" cl+code=rq" class="sr228"mp
 L301" class="line" n228"mp
 L301"lk-merge.c#L362" id
 L362" class="ef">request4/a> *4a href="+code=req" class="sref">req4/a>,u
 L312">13124/a>                                struct 4a href="+code=request" class="4a href="+4ode=bio" class="sref">bi44/a>,40lock/blk-merge.c#L325;u
 L313">13134/a>{u
 L314">4ecount_se4ments4/a>(4a href="+code4q" cl4ss="srclass="sref">ff4/a> = 4a href=4a href="+4ode=req" class="sref">re44/a>-4gt;4a href="+code=bio" class="srefsq_ 4a habl a> class="commesq_ 4a habl grity_merge_rq4/a>(4a href="+code=q" class="srk-mebio" class="srefsq_ 4a habl a> class="commesq_ 4a habl grity_merge_rq4/a>(4    return 0;u(4a href="+code4q" cl4ss="sref">q4/a>, 4a hr" id
 L347" class="line" nam>
 L347">14084/a>   4    return 4a href="+cod4=ll_n4w_hw_segment" class="sref">ll_new_h4_segment44a>(4a href="+code=q" cla4s="sr40/a>) + 4a href="+bio" class="sref" *4 L320>, struc
 L357">13574/a>4sp" *4 L320>, struc
 L3grity_merge_rq4/a>(4a href="+code=q" class="s
 L357" class="line" nam>
 L357">13574/a>4spa> class="com.c#L334" id
 L334" class="line" nam>
 L334">13344/a>             nam>
 L357">13574/a>4spa> class="comk/blk-merge.c#L346" id
 L346" c4e9egment44aclass="sref">q4/a>->4L311"40"+code=last_merge" cl" id
 L347" class="line" nam>
 L347">14114/a>sta4ic int 4a href="+code=ll4merge4requests_fn" class="sref">ll_merge_4equests_f44/a>(struct 4a href="+co4e=req41/a>4spa> class="comment">         * This will form the start of a new hw 4ref">requ4st4/a> *4a href="+code=n4xt" c41lk-merge.c#L263" id
 L263" class="linenot iotailuouh ca> be mixed are set in each bio an43144/a>  4     int 4a href="+code=4otal_41264">12644/a>4spa> class="comment">  xed_merge" class="sref">blk_rq_set_mi4_segments4/a>;u(4a href="+code=q" class="srkhref="block/blk-merge.c#L329" id
 L329" class="line" nam>
 L329">13294/a>       a href="+code=q" class="srk!+code=bio" class=e=blsq_po id
 L330" class="line"po grity_merge_rq4/a>(4    return 0;u
 L347">14code=biot4il" class="sref">biotail4/a>-&41ge is OK... */4/spa>
 /*4/41a href="+code=BIO" id
 L345" clasq_data_dipa> class="commesq_data_dipgrity_merge_rq4/a>(4a href="+code=q" class="srk!+code=bio" class=sq_data_dipa> class="commesq_data_dipgrity_merge_rq4/a>(4ock/blk-merge.c#L314" id
 L314" class="line" nam>
 L314">4" id
 L314" class="line" nam>
 L314">13141s="sref">q4/a>, 4-merge.c#L323" id
a href="+code=q" class="s
 L357" class="line"sq_disbref="+code=q" csq_disb="sre!+code=bio" class=" class="line" nam>
 L334">13344/a>            sq_disbref="+code=q" csq_disb="sr14" class="line" nam>
 L314">4"9egment44-queued4/spa>
 
 L323">13234/a>                return 0;u
 
 L332">142" id
 L342" class="line" nam>
 L342">1342href="block/blk-merge.c#L353" id
 4=special"4class="sref">special4/a>4|| 4a4href="+code=next" class="sref">next4/a>->4a href="+code=special" class="sre nam>
 L357">13574/a>4spa> class="comment"> *     @rq is about WRITE_SAM       if (4a href="WRITE_SAM "comment">/a>, lass="sref">ff4/a> = 4a href=4ass="line4 nam>
 L324">13244/a>u_ 4a habl a> class="comme" *4write_s/a>_ 4a habl grity_merge_rq4/a>(4a href="+code=q" class="s
 L357" class="line"306" id
 L306" class="line" nam>
 L306">13" class="line" nam>
 L334">13344/a>                if (4a href="+code=req"lass="sref">ff4/a> = 4a href=4asegments4    4spa> class="comment4>/*4/42
 L332">142=u
 L324">13242ts4/ae.c#L350" id
 L350" class="li4ef="block4blk-merge.c#L327" id
 L347" cl42s="sref">q4/as="comment">         * This will form the start of a new hw 48" id
 L348" class="line" nam>
 L348">13484/a>        if ((4a href="+code=blk_r If we13594allowed="com new,lassn appen="" i li">13s will form the start of a new hw 48 id
 L314ef="+code=req" class="sr4f">re42lk-merge.c#L359" id
 L359" code=blk_r from 
 L3="co*   n="release 
 L3. s="srefa>, struct 4s will form the start of a new hw 489egment44ctors4/a>(4a href="+code4req" 42k-merge.c#L320" id
 L320" class="line">
 L2have updated=lock/bl      s, update nam>
  4s will form the start of a new hw 4ass="line4 nam>
 L331">13314/a>u
 L321     s he*/4/spa>
         if (4a href="+code=req" class="sref">req4/a>->4a href="+cod4ments4/a>4= 4a href="+code=req" cl4ss="s43ref="+code=next" bio" class="srefqueue4/a> *4a href="+code=q" class="sref">q4/a>, struct 4a hss="sref">req4/a>,u(4a href="+co4e=q" 43lock/blk-merge.c#L325" id
 L332" class="line" nam>
 L332">14f="+code=4r_phys_segments" class="4ref">43a>
 bio4/a>-&43/a>4spa> class="comment">         * Will it become too large?4/spa>
 
 L327">13274/a>4spa> claIf failfaen settings disagree 3" any> class=two nam>lreadyill it become too large?4/spa>
 bio434/a>        if ((4a href="+code=blk_r a584/a>4spa> ,ment"> * ct"> *4/spabefo594proceeding. e" naill it become too large?4/spa>
 --;uat a L2involvf="" i/2have merabl *     whichill it become too large?4/spa>
 u4properly4/spa>
 
 L32lass="sref">req4/a>->4a href="+cod4_segments4/a> > 4a href="+code=4ueue_4ax_segments" class class="sref">next4/a>->4a href="+code=special" class="sre nam>
 L357">13574/a>4spa> class="commmerge.c#L323" id
 L323" class="line" nam>
 L323">13234/a>        nam>
 L357">13574/a>4spa> class="comkment"> *     @rq is about MIXED_           if (4a href="MIXED_     d
 Le-mef">req4/a>->4a href="+cod4_ents4/a>4 nam>
 L343">13434/a>unext4/a>->4a href="+code=special" class="sre nam>
 L357">13574/a>4spa> class="comment"> *     @rq is about to be mixMASK57">13574/a>4spout to be mixMASK-merre!+ef">req4/a>->4a href="+cod4_s_contig4    if (4a href="+code=b4k_int44lock/blk-merge.c#1)  nam>
 L357">13574/a>4spa> class="comment"> *     @rq is about to be mixMASK57">13574/a>4spout to be mixMASK-merrreclass="sref">ff4/a> = 4a href=4_rq4/a>(44 href="+code=req" class=4sref"44 *4a href="+code=rq" class="sref">rq4/a>) 
 L332">14ass="line4 nam>
 L346">13464/a>u *4a href="+code=rq" class="sref">rq4/a>) 
 L332">14aef="+cod4    4spa> class="comment4>/* M44a>) + 4a href52" class="line" nam>
 L352">14k/blk-mer4e.c#L348" id
 L348" clas4="lin44_hw_segment" class="sref">ll_new_h4phys_segm4nts" class="sref">nr_phy4_segm44/a>4spa> class="comment">         * First check if the either of the requ4e" nam>
 4350">13504/a>}uu<4 href="block/blk-merge.c4L352"45321" id
 L321" class="line" nam>
 L3213" "linea>
  class="comment">/**4/s4a>
 <454/a>        if (4a href="+code=req" c "ss=spa>
 ="comment"8">135"ss=curr/bl  L313">13ref="block/blk-merge.c#L356" id
 L43ents4/a>4="line" nam>
 L353">13534/a>4s4a> class="comment"> * blk_rqode=req" c 63" acio" cing purposes4/spa>
 req4/a>->4a href="+cod4href="blo4k/blk-merge.c#L355" id
 4355" 45eq4/a>) && 4a href="+codtime_aftepa> class="commetime_aftepgrity_merge_rq4/a>(4a href="+code=q" class="s
 L357" class="line"star# time  return 0;u
 L306">13" class="line" nam>
 L334">13344/a>            star# time  return 0;u
 L356">135644a>4sp45lock/blk-merge.c#L347362" id
 L362" a href="+code=q" class="s
 L357" class="line"star# time  return 0;u
 L334">13344/a>            star# time  return 0;u
 L332">14#L357" id4 L357" class="line" nam>4 L35745ge is OK... */4/spa>
 
 L348">1merge_rq4/a>(4a href="+code=q" class="s
 L357" class="line"306=seg_size" class="sref">seg_size4/a>;u
 L334">13344/a>            k/blk-merge.c#L296" id
 Lge.c#L350" id
 L350" class="li4 mark @rq4as mixed4/spa>
  = 4a href="+code=total_phys_segments" class="sref">total_phys_segm306=seg_size" class="sref">seg_sia href="+code=next" class="line" nam>
 L334">13344/a>            k/b=seg_size" class="sref">seg_sige.c#L350" id
 L350" class="li4 " nam>
 4L360" class="line" nam>
4L360"45_hw_segment" class="sref">ll_new_h4361" clas4="line" nam>
 L361">13614/a>vo460s4/a> = 4a href="+code=total_phys_segments" class="sref">total_phys_segm__data_le"+code=q" class=__data_le"s4/a>++code=bio" class=e=blsq_byte id
 L330" class="line"byte lk-me_merge_rq4/a>(4    return 0;u
 L332">14ed_merge44a>(struct 4a href="+code4reque46href="block/blk-merge.c#L353" id
 43634/a>  4     unsigned int 4a hre4="+co46f">req4/a>->4a href="+codelvref">q4/a>, strreturn 0;uq4/a>, str 4a hss="sref">req4/a>,u
 L332">14ed merge44ine" nam>
 L192">11924/a4     46rity_rq" class="sref">blk_integrit45" id
 L245" class="line" nam>
 L245">1246eq4/a>) &s="comment">         * First check if the either of the requ456" class4nts" class="sref">nr_phy4_segm46 class="comment"> * Descriptde=req" c > claef="> cla namgoing away, so update nue"3 aciordinglyill it become too large?4/spa>
 12674/a>u
 L327">13274/a>4spa> cllass="sref">req4/a>->4a href="+cod43 the att4ref="+code=no_merge" cla4s="sr46 nam>
 L348">1merge_rq4/a>(4> *4acio" cli  4a href="+code=req" > *4acio" cli  4a hrlk-me/a>                return 0;u
 L332">14emark @rq469" id
 L269" class="lin4" nam46"sref">inline4/a> int 4a href="+co4_flags" c4ass="sref">cmd_flags4/a>4|= 4a46ref="+code=REQ_NOMERGE" class_phys_segments" class="sref">total_phys_segmiopr/blk-merge.c#L296iopr/bg_sia href="+code=nextiopr/b_bclass="line" nam>
iopr/b_bclagrity_merge_rq4/a>(4a href="+code=q" class="s
 L357" class="line"iopr/blk-merge.c#L296iopr/bg_sie" nam>
 L306">13" class="line" nam>
 L334">13344/a>            iopr/blk-merge.c#L296iopr/bg_sik32" class="line" nam>
 L332">14q" class=4sref">q4/a>->4a href=4+code470s4/a> = 4a h& 4a href="+code=blsq_cpu_vali 4a href="+code=B=blsq_cpu_vali lk-me/a>                return 0;ulast_mer4e4/a>47 4a href="+code=NULL" class="sref">Nxt4/a>->4a href="+code=special" class="sre pu57">13574/a>4spapud
 L"+code=bio" class=k/blk-merge.c#L337" id
 L337" class="line" nam> pu57">13574/a>4spapud
 L310" class="line" nam>
 L310">4e" nam>
 4273">12734/a>} ll_front_merge_fn4/4ecode=r="4 href="block/blk-merge.c4L275"473q4/a>) &s="comment">         * F owner-ship> cl" i pnt"ed from 
 L3="co*eqcllass="sref">req4/a>->4a href="+cod4754/a>int44a href="+code=ll_back_m4rge_f47eq4/a>) &ref="+code=next" class="line" nam>
 L334">13344/a>            k/blk-merge.c#L296" id
 L14/a>                return 0;u, st+code=q" class=__B=blput4/a>, st 4a hss="sref">req4/a>,u
 L332">14sL357" id4ode=bio" class="sref">bi44/a>)4
 L351">42784/a>  4     if (4a href="+code=4lk_rq47ass="52" class="line" nam>
 L352">142mark @rq4f="+code=req" class="sre4">req47"sref">inline4/a> int 4a href="+co4get_max_s4ctors4/a>(4a href="+code4req" 47ref="+code=rq" class="sr228"mp
 line"L301" class="line" n228"mp
 line"L301" 4a hrge.c#L362" id
 L362" class="ef">request4/a> *4a href="+code=req" class="sref">req4/a>,u
 L312">13124/a>                lk-merge.c#L363" id
 L363" class="line" nam>
 L363">4code=cmd_4lags" class="sref">cmd_f4ags4/48d
 L3class="sref">ff4/a> = 4a href=4="+code=q4 class="sref">q4/a>->4a hre48 4a href="+corge.c#L362" id
 L362" 13" class="line" nam>
 L313">13134/a>{u             elvrl228"r4/a>, st+code=q" class=elvrl228"r4/a>, st 4a hss="sref">req4/a>,u
 L351">4f="+code=4ast_merge" class="sref">4ast_m48" class="sref">ll_front_merge_fn4/4fcode=r="4 nam>
 L284">12844/a>   4    }48ass="sref">q4/a>, 4a href="+codeock/blk-merge.c#L314" id
 L314" class="line" nam>
 L314">4 L285">12454/a>        if (!4a hre4="+co48req4/a>,u
 L332">14a href="+4ode=req" class="sref">re44/a>-48ts4/ae.c#L350" id
 L350" class="li4cL357" id4ments4/a>(4a href="+code4q" cl48a href="block1" id
 332" class="line" nam>
 L332">14c784/a>  4ode=bio" class="sref">bi44/a>,48ass="52" class="line" nam>
 L352">14ecount_se4ments4/a>(4a href="+code4q" cl48"sref">inline4/a> int 4a href="+co4904/a>   4    return 4a href="+cod4=ll_n48ref="+code=rq" class="sr228"mp
 "line"L301" class="line" n228"mp
 "line"L301" 4a hrge.c#L362" id
 L362" class="ef">request4/a> *4a href="+code=req" class="sref">req4/a>,u
 L312">13124/a>                lk-merge.c#L363" id
 L363" class="line" nam>
 L363">4_segment44a>(4a href="+code=q" cla4s="sr49d
 L3class="sref">ff4/a> = 4a href=42924/a>u<4 href="block/blk-merge.c4L293"49 4a href="+corge.c#L362" id
 L362" 13" class="line" nam>
 L313">13134/a>{u
prevd
 L14/a>             elvrform"r4/a>, st+code=q" class=elvrform"r4/a>, st 4a hss="sref">req4/a>,u
 L351">4934/a>int44a href="+code=ll_front_4erge_49" class="sref">ll_front_merge_fn4/49code=r="4a href="+code=request_qu4ue" c49ass="sref">q4/a>, 4a href="+codeprevss="line" nam>
prevd
 L363" class="line" nam>
 L363">4_L285">124code=bio" class="sref">b4o4/a>4ureq4/a>,u
prevd
 Lk-                lk-merge.c#L363" id
 L3351" class="line" nam>
 L351">49 href="+4     if (4a href="+code=4lk_rq49ts4/ae.c#L350" id
 L350" class="li4/a>(4a hr4f="+code=req" class="sre4">req49a href="block1" id
 332" class="line" nam>
 L332">14get_max_s4ctors4/a>(4a href="+code4req" 4lass="52" class="line" nam>
 L352">14gcount_se4lags" class="sref">cmd_f4ags4/49"sref">inline4/a> int 4a href="+co4="+code=q4 class="sref">q4/a>->4a hre49ref="+code=rq" class="sr> *4a28"mp
 /a> 4a href="+code=req" > *4a28"mp
 /a> 4a hr 4a hrge.c#L362" id
 L362" class="ef">request4/a> *4a href="+code=req" class="sref">req4/a>,u
 L312">13124/a>                lk-merge.c#L363" id
 La href="+code=request" class="5f="+code=5ast_merge" class="sref">5ast_m50lock/blk-merge.c#L3322222222222rge.c#L362" id
 L362" 13" class="line" nam>
 L313">13134/a>{u
 L314">5ass="line5 nam>
 L302">13024/a>   5    }50222" class="sref">ff4/a> = 4a href=5 L303">13534/a>        if (!4a hre5="+co502 href="block1" id
 ode=req" class=228"mp
 L301" class="line" n228"mp
 L301"lk-mess="sref">req4/a>,u
 L332">15a href="+5ode=bio" class="sref">bi54/a>,50lock/52" class="line" nam>
 L352">15ecount_se5ments4/a>(4a href="+code5q" cl50a>
 re54/a>-5gt;4a e=rq" class="sr>oog_size" class="sroog href; 4a href="+code=blsq_ef">q4obref="+code=q" ce=blsq_ef">q4ob 4a hrge.c#L362" id
 L362" class="="line" nam>
 L312">13124/a>                lk-merge.c#L363" id
 La;L295" id
 L295" class="line" nam>
 L295">12954/a>{u
 L314">5a6href="+5o="+code=req" class="sre5q" cl5ss="srclass="sref">ff4/a> = 4a href=5 7href="+5otors4/a>(4a href="+code5=ll_n50a href="+code=BIObio" class="srefsq_ 4a habl a> class="commesq_ 4a habl grity_merge_rq4/a>(4alk-merge.c#L363" id
 L3k-mebio" class="srefbi  4a hrabl a> class="comme"i  4a hrabl grity_merge_rq4/a>(4    if (4a href="+code=req"lass="sref">ff4/a> = 4a href=5_segment45a>(4a href="+code=q" cla5s="sr50s="sref">q4/a>, 4a hr1" id
 ode=req" class=fals a> class="commefals lock/blk-merge.c#L302" id
 L302" c5e9egment45aclass="sref">q4/a>->5L311"50_hw_segment" class="sref">ll_new_h5114/a>sta5ic int 4a href="+code=ll5merge510s4/a> = 4a h&bio" class="sref" *4 L320>, struc
 L357">13574/a>4sp" *4 L320>, struc
 L3grity_merge_rq4/a>(4ak/blk-merge.c#L357" id
 L357" class="line" nam>
 L357">13574/a>4spa> class="comk-               code=nsegs" class="sref">nsegs4/a> > 4a href=rwreturn 0;uff4/a> = 4a href=5equests_f54/a>(struct 4a href="+co5e=req51 4a href="+code=NULL"1" id
 ode=req" class=fals a> class="commefals lock/blk-merge.c#L302" id
 L302" c5ref">requ5st4/a> *4a href="+code=n5xt" c51" class="sref">ll_front_merge_fn4/53144/a>  5     int 4a href="+code=5otal_513q4/a>) &s="comment">         * F differ/bl data direc@rq  3" already star#ed,>don> claea>
 req4/a>->4a href="+cod5_segments5/a>;u class="commeei  data_dipgrity_merge_rq4/a>(4    if (4a href="+code=reqk!+code=bio" class=sq_data_dipa> class="commesq_data_dipgrity_merge_rq4/a>(4alk-merge.c#L363" id
 L3"lass="sref">ff4/a> = 4a href=5e href="+5="block/blk-merge.c#L3165 id
 51lock/blk-merge.c#L347" id
 Lode=req" class=fals a> class="commefals lock/blk-merge.c#L302" id
 L302" c5r6href="+5il" class="sref">biotail5/a>-&51ge is OK... */4/spa>
 /*4/51 nam>
 L348">13484/a>        4a href="mne" be s/a> device  n="not a href="b="commen llass="sref">req4/a>->4a href="+cod5_segment45" class="line" nam>
 L315">13151/a>) + 4a href="+_merge_rq4/a>(4ak/blk-merge.c#L357" id
 L357" class="line"sq_disbref="+code=q" csq_disb="sre!+code=bio" class=code=nsegs" class="sref">nsegs4/a> > 4a href=bdevss="line" nam>
ef=bdevef">nsegs4/a> > 4a hred_disbref="+code=q" ced_disb="sre-merge.c#L323" id
ak/blk-merge.c#L357" id
 L357" class="line"         return 0;u
  class="commefals lock/blk-merge.c#L302" id
 L302" c5y are.4/s5a>
 ll_merge_52" id
 L352" class="line" nam>
 L352">1352/a>4spa> class="comment">         * T onlya>
 req4/a>->4a href="+cod5=special"5class="sref">special4/a>5|| 4a5href="+code=next" class="sref">neei  next" claa> class="commeei  next" clagrity_merge_rq4/a>(4    if (4a href="+code=reqk!+code=bio" class=b=blk_integrity_merge_rq" class="sref">blk_integrity_merge_rq4/a>(4alk-merge.c#L363" id
 L3"lass="sref">ff4/a> = 4a href=5ass="line5 nam>
 L324">13244/a>u class="commefals lock/blk-merge.c#L302" id
 L302" c5ysegments5    4spa> class="comment5>/*4/52a>
 
 L325">13252/a>4spa> class="comment">         * W"mne" be using "ss=s/a> buffer llass="sref">req4/a>->4a href="+cod5=6href="+5blk-merge.c#L327" id
 L357" cl52a>) + 4a href="+code=bio_sectors/k/blk-merge.c#L357" id
 L357" class="line" nam>
 L357">13574/a>4spa> class="comment"> *     @rq is about WRITE_SAM       if (4a href="WRITE_SAM "comment">/a>, lass="sref">ff4/a> = 4a href=58" id
 L358" class="line" nam>
 L358">1352s="sref">q4/a>, 4bio" class="sref" *4write_s/a>_ 4a habl a> class="comme" *4write_s/a>_ 4a habl grity_merge_rq4/a>(4ak/blk-merge.c#L357" id
 L357" class="line"k/blk-merge.c#L296" id
 Lk-               code=nsegs" class="sref">3"lass="sref">ff4/a> = 4a href=5asegment45ef="+code=req" class="sr5f">re52s="sref">q4/a>, 4a hr1" id
 ode=req" class=fals a> class="commefals lock/blk-merge.c#L302" id
 L302" c589egment45ctors4/a>(4a href="+code5req" 52_hw_segment" class="sref">ll_new_h5ass="line5 nam>
 L331">13314/a>u = 4a h1" id
 ode=req" class=trrequest4/a> *4a htrrelock/blk-merge.c#L302" id
 L302" c5324/a>   5    4a href="+code=total5phys_534/a> 52" class="line" nam>
 L352">15ments4/a>5= 4a href="+code=req" cl5ss="s53" class="sref">ll_front_merge_fn4/5ys_contig5segment4/a>(4a href="+co5e=q" 53lock/+code=rq" class="sr> *4try 4a href="+code=req" > *4try 4a hr 4a hrge.c#L362" id
 L362" class="="line" nam>
 L312">13124/a>                lk-merge.c#L363" id
 La;L295" id
 L295" class="line" nam>
 L295">12954/a>{u
 L314">5f="+code=5r_phys_segments" class="5ref">53s="srclass="sref">ff4/a> = 4a href=5 href="+c5de=bio" class="sref">bio5/a>-&53/a>4spa> clas& 4a href="+code=blsq_po id
 L330" class="line"po grity_merge_rq4/a>(4alk-merge.c#L363" id
 L3khref="block/blk-merge.c#L329" id
 L329" class="line" nam>
 L329">13294/a>       alk-merge.c#L363" id
 L3k=+code=bio" class=code=nsegs" class="sref">nsegs4/a> > 4a href=nam>
 ss="line" nam>
ef=nam>
  4 L314" class="line" nam>
 L314">5f6href="+5=nr_phys_segments" class5"sref53s="sref">q4/a>, 4a hr" id
 L4/a> > 4a hrELEVATOR_BACK_           if (4a hrELEVATOR_BACK_     lock/blk-merge.c#L302" id
 L302" c53" id
 L35code=biotail" class="sre5">bio53s="sref">q4/aels s& 4a href="+code=blsq_po id
 L330" class="line"po grity_merge_rq4/a>(4alk-merge.c#L363" id
 L3k-code=bio" class=cod#L329" id
 L329" class="od#L329" igrity_merge_rq4/a>(4    if (4a href="+code=reqk=+code=bio" class=code=nsegs" class="sref">nsegs4/a> > 4a href=nam>
 ss="line" nam>
ef=nam>
  4 L314" class="line" nam>
 L314">5fsegment45nts4/a>--;uq4/a>, 4a hr1" id
 ode=req" class=ELEVATOR_FRONT_           if (4a hrELEVATOR_FRONT_     lock/blk-merge.c#L302" id
 L302" c539egment4504/a>u   5    if (4a href="+code=t5tal_p54d
 L352" class="line" nam>
 L352">15_segments5/a> > 4a href="+code=5ueue_5ax_seg


The 3"iginal LXR softw3594by "ss=" class="http://sourcefo5352net/projam>s/lxpa>LXR unclagrit,=" na experi al versrq by " class="mailto:lxp@ hrux.no">lxp@ hrux.nogrit.
lxp. hrux.no kindlyahos@f=""y=" class="http://www.redpill- hrpro.no">Redpill Lhrpro ASgrit,=provider of Lhrux iotsulcing n="opera@rq s services since 1995.