Question about __zone_reclaim()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi!

I have a question about __zone_reclaim() function:

mm/vmscan.c:
static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
{
        <cut>
	nr_slab_pages0 = zone_page_state(zone, NR_SLAB_RECLAIMABLE);
        if (nr_slab_pages0 > zone->min_slab_pages) {
               <cut>
                for (;;) {
                        unsigned long lru_pages = zone_reclaimable_pages(zone);

                        /* No reclaimable slab or very low memory pressure */
                        if (!shrink_slab(&shrink, sc.nr_scanned, lru_pages))
                                break;

                        /* Freed enough memory */
                        nr_slab_pages1 = zone_page_state(zone,
                                                        NR_SLAB_RECLAIMABLE);
                        if (nr_slab_pages1 + nr_pages <= nr_slab_pages0)
                                break;
                }
                <cut>

Why we don't stop the for cycle if we meet zone->min_slab_pages watermark?

Is it an issue or do I miss something?

IMHO, we should add something like this:
                        if (nr_slab_pages1 < zone->min_slab_pages)
                                break;

Thank you!

Regards,
Roman

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]