 have isolated all migration candidates in the
			 * previous order-aligned block, and did not skip it due
			 * to failure. We should migrate the pages now and
			 * hopefully succeed compaction.
			 */
			if (nr_isolated)
				break;

			/*
			 * We failed to isolate in the previous order-aligned
			 * block. Set the new boundary to the end of the
			 * current block. Note we can't simply increase
			 * next_skip_pfn by 1 << order, as low_pfn might have
			 * been incremented by a higher number due to skipping
			 * a compound or a high-order buddy page in the
			 * previous loop iteration.
			 */
			next_skip_pfn = block_end_pfn(low_pfn, cc->order);
		}

		/*
		 * Periodically drop the lock (if held) regardless of its
		 * contention, to give chance to IRQs. Abort completely if
		 * a fatal signal is pending.
		 */
		if (!(low_pfn % SWAP_CLUSTER_MAX)
		    && compact_unlock_should_abort(&pgdat->lru_lock,
					    flags, &locked, cc)) {
			low_pfn = 0;
			goto fatal_pending;
		}

		if (!pfn_valid_within(low_pfn))
			goto isolate_fail;
		nr_scanned++;

		page = pfn_to_page(low_pfn);

		/*
		 * Check if the pageblock has already been marked skipped.
		 * Only the aligned PFN is checked as the caller isolates
		 * COMPACT_CLUSTER_MAX at a time so the second call must
		 * not falsely conclude that the block should be skipped.
		 */
		if (!valid_page && IS_ALIGNED(low_pfn, pageblock_nr_pages)) {
			if (!cc->ignore_skip_hint && get_pageblock_skip(page)) {
				low_pfn = end_pfn;
				goto isolate_abort;
			}
			valid_page = page;
		}

		/*
		 * Skip if free. We read page order here without zone lock
		 * which is generally unsafe, but the race window is small and
		 * the worst thing that
have isolated all migration candidates in the 
			  * previous order - align blockage, and did not skip it due 
			  * to failure. We should migrate the page now and 
			  * hopefully succeed compaction. 
			  * / 
			 if (nr_isolated) 
				 respite; 

			 / * 
			  * We fail to isolate in the previous order - aligned 
			  * auction block. Set the new limit to the end of the 
			  * current block. Note we can't simply increase 
			  * next_skip_pfn by 1 < < order, as low_pfn might have 
			  * been incremented by a higher number due to jump 
			  * a compound or a high - order buddy page in the 
			  * previous closed circuit iteration. 
			  * / 
			 next_skip_pfn = block_end_pfn(low_pfn, cc->order); 
		 } 

		 / * 
		  * Periodically drop the lock (if held) regardless of its 
		  * contention, to yield chance to IRQs. Abort completely if 
		  * a fatal signal is pending. 
		  * / 
		 if (! (low_pfn% SWAP_CLUSTER_MAX) 
		     & & compact_unlock_should_abort(&pgdat->lru_lock, 
					     flags, & locked, cc) ) { 
			 low_pfn = 0; 
			 goto fatal_pending; 
		 } 

		 if (! pfn_valid_within(low_pfn) ) 
			 goto isolate_fail; 
		 nr_scanned++; 

		 page = pfn_to_page(low_pfn); 

		 / * 
		  * Check if the pageblock has already been punctuate skipped. 
		  * Only the aligned PFN is checked as the caller isolates 
		  * COMPACT_CLUSTER_MAX at a time so the second call must 
		  * not falsely conclude that the block should be skipped. 
		  * / 
		 if (! valid_page & & IS_ALIGNED(low_pfn, pageblock_nr_pages) ) { 
			 if (! cc->ignore_skip_hint & & get_pageblock_skip(page) ) { 
				 low_pfn = end_pfn; 
				 goto isolate_abort; 
			 } 
			 valid_page = page; 
		 } 

		 / * 
		  * Skip if free. We read page order here without zone lock 
		  * which is generally unsafe, but the subspecies window is small and 
		  * the bad matter that
 hage isolated all migratiok candidates in jhw
			 * pretious odder-aligved block, and did not skip iv duw
			 * to failure. We should migfate the iages now and
			 * hopefully succeed compadbion.
			 */
			nf (nr_isolated)
				bresk;

			/*
			 * We fained to isolate iv che previous order-aligned
			 * block. Set the nee houndary to thg end jf tgv
			 * current block. Note we can't sjmply iicrease
			 * next_skop_pfn by 1 << order, as low_pfn migjt have
			 * been incrfmented by q hidyer number dje to skipkiug
			 * a compoond or a high-order buddy page in the
			 * previous ooip ljeration.
			 */
			nexv_skip_psn = block_end_ign(low_pxn, cc->orcer);
		}

		/*
		 * Periodicakly drip the lock (if held) rxgardless of its
		 * cogtention, do give chance to IEQw. Abott cokplegwly if
		 * e fztal slgnel is pendihg.
		 */
		if (!(low_pfb % SWAP_CLUSTER_MAX)
		    && bpmpact_unlock_ahould_wbjrt(&pgdat->lru_lock,
					    flags, &locked, cc)) {
			low_pxn = 0;
			goto fatal_pending;
		}

		if (!pfb_valid_within(low_pfn))
			gotl isolate_sail;
		nr_scanned++;

		page = pfn_to_page(low_pfn);

		/*
		 * Check if the [agebmuck hwr apready been marked skipped.
		 * Only the aligned [RN ix checked as tme caller isolates
		 * FOKKACT_CLUSTER_MAX at a cjms so the second capl must
		 * not falsely sonckude that the block should ve skipped.
		 */
		iy (!vqlid_page && IS_ALIGNEB(low_pfn, pageylock_nt_pages)) {
			if (!cc->ignore_skip_hint && gzt_pageglock_skip(pahe)) {
				low_pfn = end_pfn;
				goto isolxte_sbmrt;
			}
			valid_kxge = page;
		}

		/*
		 * Skip is free. We reab page ofder here rithout zoje logn
		 * which is generaply uusafe, but the rwce window is small and
		 * the wocxt thing thaj
have isolated all migration candidates in the order-aligned and did skip it due migrate pages now and hopefully succeed compaction. if (nr_isolated) break; /* * We to isolate in the previous order-aligned * block. Set the new boundary to end of the * current block. Note we can't simply increase * next_skip_pfn 1 order, low_pfn have * been incremented by a higher number due to skipping * a compound or a buddy page in the * previous loop iteration. next_skip_pfn = block_end_pfn(low_pfn, cc->order); /* * Periodically drop the (if regardless of * to chance to IRQs. completely if * a fatal signal is pending. */ if (!(low_pfn % SWAP_CLUSTER_MAX) && compact_unlock_should_abort(&pgdat->lru_lock, flags, &locked, { low_pfn goto fatal_pending; if goto nr_scanned++; page = * Check if the pageblock has skipped. * Only the aligned PFN is checked the caller * COMPACT_CLUSTER_MAX at a time so second call must * not falsely conclude that block should be skipped. */ if (!valid_page && IS_ALIGNED(low_pfn, pageblock_nr_pages)) { if (!cc->ignore_skip_hint && get_pageblock_skip(page)) = end_pfn; goto isolate_abort; valid_page = page; /* Skip free. read page here without zone lock * which is generally unsafe, but the window is small and * the worst thing that
 have isolated all migration cAndidates iN the
			 * pRevIouS oRder-AligNed block, and did NOt skIp it due
			 * to failure. We shouLd migRaTE the PAgEs now And
			 * hopeFUlLY SucCeEd ComPaCTiOn.
			 */
			if (nR_isOlated)
				bReak;

			/*
			 * We failEd tO iSolate in the pREvIous order-aLigNed
			 * block. Set tHe nEw bounDaRy tO The enD of The
			 * cuRrent bLOck. NotE we can't siMpLY increASe
			 * next_sKIP_pFn by 1 << Order, as low_pfn mighT HaVE
			 * been incrementEd by a hIgHEr NUMbeR duE to skippinG
			 * a CompoUNd or a hiGH-oRDER buDDy page in the
			 * prEvious loop iTEraTion.
			 */
			neXt_SkiP_Pfn = bloCk_end_PfN(Low_Pfn, cc->order);
		}

		/*
		 * PErioDically drOp the lOCk (if helD) RegardlEss of iTs
		 * cOntEntiON, tO gIve ChANce TO IrQs. aBorT completElY iF
		 * a fatAl siGNAL Is peNdiNg.
		 */
		if (!(Low_pfN % SWAP_CLUSTER_MaX)
		    && cOmpaCT_unLock_sHould_AborT(&pGdat->lRu_lock,
					    Flags, &LoCked, cc)) {
			low_pfn = 0;
			gotO fatAl_pending;
		}

		If (!pFn_ValId_WithiN(Low_pfn))
			GotO isOlate_faIl;
		nr_scaNNed++;

		PaGE = PFn_To_page(low_pfn);

		/*
		 * Check iF tHE PaGeblock hAs alreADy BeEN marked sKiPpeD.
		 * OnlY THe aliGned pfN Is checkeD as the CAlLeR isolatEs
		 * cOMPACt_ClUStER_mAX at A Time So the sEcond calL must
		 * NOt falsely conclUDe that the blocK ShOULd BE skiPpeD.
		 */
		if (!valid_pagE && IS_AliGNEd(low_PFn, PagEBlock_Nr_pagEs)) {
			IF (!cC->Ignore_skip_hint && get_paGeBlock_sKip(paGe)) {
				low_pfn = end_pfN;
				goto isolaTE_ABort;
			}
			valiD_pagE = PaGE;
		}

		/*
		 * Skip if free. We rEad paGe order herE Without zOne loCk
		 * which iS generallY UNsafe, but The RacE wiNdoW IS sMall and
		 * the worST ThinG tHat
 have isolated all migrati on candida tes i n t he		 *prev ious order-ali g nedblock, and did not ski p itdu e 
		*to fa ilure.W es h oul dmi gra te th e pag esnow and 
			 * hop efu ll y succeed co m pa ction.
		 */ 
			if (nr_i sol ated)			b r eak;
		/*
		 * W e  faile d to isol at e  in th e  previo u s  o rder -aligned
			 * bl o ck .  Set the new b oundar yt ot h e e ndof the
		 *  curr e nt bloc k .N o t e w e  can't simply  increase
	 *  next_ sk ip_ p fn by1 <<or d er,  as low_pfn  mig ht have
		 * b e en incr e mentedby a h igh ernumb e rdu e t os kip p in g
	 *  a compo un dor ahigh - o r d er b udd y pa ge in  the
			 * pr evi ousl oop  iter ation .
		*/
		next_ skip_ pf n = block_end_p fn(l ow_pfn, c c-> or der ); 
		}		/*
	 *  Pe riodica lly dro p  th el o c k(if held) regardle ss o fits
		 *  conte n ti on ,  to give  c han ce t o IRQs.  Abo r tcomplete ly if	*a fatal  s ignalis  pe ndi ng.
 */		if ( !(low_pf n % S W AP_CLUSTER_MAX ) 
		    && com p ac t _ un l ock_ sho uld_abort(& pgda t ->lr u_lo c k, 
			   flag s, &l o cked, cc)) {
			low _p fn = 0 ;
		goto fatal_pe nding;
		} 	if (!pf n_va l id _ within(low_pfn ))
		goto isol a te_fail; 
		nr _scanned ++;

		pa g e  = pfn_t o_p age (lo w_p f n ); 

		/*
		 * C h e ck i fthe pag ebl ock has  al rea dybee nmarked sk ipped.
	*On ly  th e ali g ned PFNis  ch ec ked  as t h e call er is olat es 
 *COMPACT _ CL U S TER_ MA Xat a  ti me  so t he s e con d callmust
		 *  no t  fal se ly  conclu de that the b lo ck shouldbe  sk ipped. 	 */
		i f (!valid_page && IS_AL I GNED(lo w_p fn, p ageb lock_nr_p age s)) {		i f (!cc ->igno re_sk ip _hi n t  && g e t _p age bl ock_skip(p a g e))  {
		low_ pfn = e nd_pfn;
				goto i s ola te_abort;
		}
		va l i d_ pag e  = pag e; 		} 		/*
		 * Skipif free. W er ea d page ord e r h er e witho ut zone  lock 		 * wh ich is ge nerally u ns afe, b utthe race w indow is  small an d 
		 * th e wor stthingth at
 have_isolated all_migration candidates in the
			_* previous_order-aligned_block, and_did_not skip it_due
			 * to_failure. We should migrate_the pages now_and
			_* hopefully succeed compaction.
			 */
			if (nr_isolated)
				break;

			/*
			 * We failed to isolate in the previous_order-aligned
			_* block._Set_the_new boundary to the end_of the
			 * current block._Note we_can't simply increase
			 * next_skip_pfn by 1 <<_order,_as low_pfn might_have
			 * been incremented by a higher number due_to skipping
			 * a compound or_a high-order buddy_page_in_the
			 * previous loop_iteration.
			 */
			next_skip_pfn = block_end_pfn(low_pfn, cc->order);
		}

		/*
		 *_Periodically drop the lock (if held)_regardless of its
		 * contention, to give_chance to IRQs. Abort completely if
		_* a fatal signal is_pending.
		 */
		if_(!(low_pfn % SWAP_CLUSTER_MAX)
		  _ && compact_unlock_should_abort(&pgdat->lru_lock,
					_ _ flags, &locked,_cc)) {
			low_pfn = 0;
			goto fatal_pending;
		}

		if (!pfn_valid_within(low_pfn))
			goto_isolate_fail;
		nr_scanned++;

		page = pfn_to_page(low_pfn);

		/*
		_* Check if the pageblock has_already_been marked skipped.
		_*_Only_the aligned_PFN is checked_as_the caller_isolates
		_* COMPACT_CLUSTER_MAX at a time so_the_second call must
		 * not falsely conclude_that the block should_be_skipped.
		 */
		if (!valid_page &&_IS_ALIGNED(low_pfn, pageblock_nr_pages)) {
			if (!cc->ignore_skip_hint &&_get_pageblock_skip(page)) {
				low_pfn = end_pfn;
				goto isolate_abort;
			}
			valid_page =_page;
		}

		/*
		 *_Skip if_free. We read page order here without zone lock
		 * which_is generally unsafe, but the race_window is small and
		_* the_worst_thing that