Date: Fri, 28 Oct 2016 16:22:45 +0000 (UTC) From: Alan Cox <alc@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r308052 - user/alc/PQ_LAUNDRY/sys/vm Message-ID: <201610281622.u9SGMjkY019980@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: alc Date: Fri Oct 28 16:22:45 2016 New Revision: 308052 URL: https://svnweb.freebsd.org/changeset/base/308052 Log: Tweak vm_pageout_flush()'s handling of the VM_PAGER_BAD case. In particular, don't move the page from its current queue unless it was in the laundry. And, if it was, then we don't expect it to be reused. Discussed with: markj Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Fri Oct 28 16:21:31 2016 (r308051) +++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Fri Oct 28 16:22:45 2016 (r308052) @@ -554,13 +554,15 @@ vm_pageout_flush(vm_page_t *mc, int coun break; case VM_PAGER_BAD: /* - * Page outside of range of object. Right now we - * essentially lose the changes by pretending it - * worked. + * The page is outside the object's range. We pretend + * that the page out worked and clean the page, so the + * changes will be lost if the page is reclaimed by + * the page daemon. */ vm_page_undirty(mt); vm_page_lock(mt); - vm_page_deactivate(mt); + if (vm_page_in_laundry(mt)) + vm_page_deactivate_noreuse(mt); vm_page_unlock(mt); break; case VM_PAGER_ERROR:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201610281622.u9SGMjkY019980>