svn commit: r291408 - head/sys/vm
Konstantin Belousov
kib at FreeBSD.org
Fri Nov 27 19:43:37 UTC 2015
Author: kib
Date: Fri Nov 27 19:43:36 2015
New Revision: 291408
URL: https://svnweb.freebsd.org/changeset/base/291408
Log:
In vm_pageout_grow_cache(), do not re-try the inactive queue when
active queue scan initiated write.
Re-trying from the inactive queue when doing active scan makes the
loop never end if number of domains is greater than 1 and inactive or
active scan cannot reach the target.
Reported and tested by: Andrew Gallatin <gallatin at netflix.com>
Reviewed by: alc
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Modified:
head/sys/vm/vm_pageout.c
Modified: head/sys/vm/vm_pageout.c
==============================================================================
--- head/sys/vm/vm_pageout.c Fri Nov 27 19:03:59 2015 (r291407)
+++ head/sys/vm/vm_pageout.c Fri Nov 27 19:43:36 2015 (r291408)
@@ -729,32 +729,33 @@ vm_pageout_grow_cache(int tries, vm_padd
* the specified address range, as indicated by segments
* constituting the domain.
*/
-again:
+again_inact:
if (inactl < inactmax) {
if (vm_phys_domain_intersects(vm_dom[dom].vmd_segs,
low, high) &&
vm_pageout_launder(&vm_dom[dom].vmd_pagequeues[PQ_INACTIVE],
tries, low, high)) {
inactl++;
- goto again;
+ goto again_inact;
}
if (++dom == vm_ndomains)
dom = 0;
if (dom != initial_dom)
- goto again;
+ goto again_inact;
}
+again_act:
if (actl < actmax) {
if (vm_phys_domain_intersects(vm_dom[dom].vmd_segs,
low, high) &&
vm_pageout_launder(&vm_dom[dom].vmd_pagequeues[PQ_ACTIVE],
tries, low, high)) {
actl++;
- goto again;
+ goto again_act;
}
if (++dom == vm_ndomains)
dom = 0;
if (dom != initial_dom)
- goto again;
+ goto again_act;
}
}
More information about the svn-src-head
mailing list