Messages in this thread | | | Date | Thu, 16 Sep 2010 16:18:28 +0100 | From | Mel Gorman <> | Subject | Re: [PATCH 8/8] writeback: Do not sleep on the congestion queue if there are no congested BDIs or if significant congestion is not being encountered in the current zone |
| |
> > > <snip> > > > > > > > struct scan_control *sc) > > > > { > > > > + enum bdi_queue_status ret = QUEUEWRITE_DENIED; > > > > + > > > > if (current->flags & PF_SWAPWRITE) > > > > - return 1; > > > > + return QUEUEWRITE_ALLOWED; > > > > if (!bdi_write_congested(bdi)) > > > > - return 1; > > > > + return QUEUEWRITE_ALLOWED; > > > > + else > > > > + ret = QUEUEWRITE_CONGESTED; > > > > if (bdi == current->backing_dev_info) > > > > - return 1; > > > > + return QUEUEWRITE_ALLOWED; > > > > > > > > /* lumpy reclaim for hugepage often need a lot of write */ > > > > if (sc->order > PAGE_ALLOC_COSTLY_ORDER) > > > > - return 1; > > > > - return 0; > > > > + return QUEUEWRITE_ALLOWED; > > > > + return ret; > > > > } > > > > > > The function can't return QUEUEXXX_DENIED. > > > It can affect disable_lumpy_reclaim. > > > > > > > Yes, but that change was made in "vmscan: Narrow the scenarios lumpy > > reclaim uses synchrounous reclaim". Maybe I am misunderstanding your > > objection. > > I means current may_write_to_queue never returns QUEUEWRITE_DENIED. > What's the role of it? >
As of now, little point because QUEUEWRITE_CONGESTED implies denied. I was allowing the possibility of distinguishing between these cases in the future depending on what happened with wait_iff_congested(). I will drop it for simplicity and reintroduce it when or if there is a distinction between denied and congested.
> In addition, we don't need disable_lumpy_reclaim_mode() in pageout. > That's because both PAGE_KEEP and PAGE_KEEP_CONGESTED go to keep_locked > and calls disable_lumpy_reclaim_mode at last. >
True, good spot.
-- Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
| |