Module Name: src Committed By: pooka Date: Wed Jun 2 12:07:04 UTC 2010
Modified Files: src/sys/rump/librump/rumpvfs: vm_vfs.c Log Message: In aiodone, call uvm_pageout_done() with number of PG_PAGEOUT pages processed. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/rump/librump/rumpvfs/vm_vfs.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/rump/librump/rumpvfs/vm_vfs.c diff -u src/sys/rump/librump/rumpvfs/vm_vfs.c:1.15 src/sys/rump/librump/rumpvfs/vm_vfs.c:1.16 --- src/sys/rump/librump/rumpvfs/vm_vfs.c:1.15 Wed Dec 16 16:50:49 2009 +++ src/sys/rump/librump/rumpvfs/vm_vfs.c Wed Jun 2 12:07:03 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: vm_vfs.c,v 1.15 2009/12/16 16:50:49 pooka Exp $ */ +/* $NetBSD: vm_vfs.c,v 1.16 2010/06/02 12:07:03 pooka Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vm_vfs.c,v 1.15 2009/12/16 16:50:49 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vm_vfs.c,v 1.16 2010/06/02 12:07:03 pooka Exp $"); #include <sys/param.h> @@ -50,15 +50,21 @@ int i, npages = bp->b_bufsize >> PAGE_SHIFT; struct vm_page **pgs; vaddr_t va; + int pageout = 0; pgs = kmem_alloc(npages * sizeof(*pgs), KM_SLEEP); for (i = 0; i < npages; i++) { va = (vaddr_t)bp->b_data + (i << PAGE_SHIFT); pgs[i] = uvm_pageratop(va); - pgs[i]->flags &= ~PG_PAGEOUT; + if (pgs[i]->flags & PG_PAGEOUT) { + KASSERT((pgs[i]->flags & PG_FAKE) == 0); + pageout++; + pgs[i]->flags &= ~PG_PAGEOUT; + } } uvm_pagermapout((vaddr_t)bp->b_data, npages); + uvm_pageout_done(pageout); uvm_page_unbusy(pgs, npages); if (BUF_ISWRITE(bp) && (bp->b_cflags & BC_AGE) != 0) {