diff --git a/[refs] b/[refs] index 79f86cc62390..b68e01cb1e6f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 00ef2d2f84babb9b209f0fc003bc490c6bf1e6ef +refs/heads/master: 0e50ce3b50fb4ffc38c98fe7622361da4d0808c1 diff --git a/trunk/mm/vmscan.c b/trunk/mm/vmscan.c index 396ecee281d0..606d0bb46091 100644 --- a/trunk/mm/vmscan.c +++ b/trunk/mm/vmscan.c @@ -2194,6 +2194,13 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist, if (sc->nr_reclaimed >= sc->nr_to_reclaim) goto out; + /* + * If we're getting trouble reclaiming, start doing + * writepage even in laptop mode. + */ + if (sc->priority < DEF_PRIORITY - 2) + sc->may_writepage = 1; + /* * Try to write back as many pages as we just scanned. This * tends to cause slow streaming writers to write data to the @@ -2765,12 +2772,10 @@ static unsigned long balance_pgdat(pg_data_t *pgdat, int order, } /* - * If we've done a decent amount of scanning and - * the reclaim ratio is low, start doing writepage - * even in laptop mode + * If we're getting trouble reclaiming, start doing + * writepage even in laptop mode. */ - if (total_scanned > SWAP_CLUSTER_MAX * 2 && - total_scanned > sc.nr_reclaimed + sc.nr_reclaimed / 2) + if (sc.priority < DEF_PRIORITY - 2) sc.may_writepage = 1; if (zone->all_unreclaimable) {