From owner-p4-projects@FreeBSD.ORG Sat Oct 15 21:46:45 2011 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8BBB1106566B; Sat, 15 Oct 2011 21:46:45 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4E6631065670 for ; Sat, 15 Oct 2011 21:46:45 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 3C8B88FC0C for ; Sat, 15 Oct 2011 21:46:45 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id p9FLkjSa043112 for ; Sat, 15 Oct 2011 21:46:45 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id p9FLkjPK043109 for perforce@freebsd.org; Sat, 15 Oct 2011 21:46:45 GMT (envelope-from jhb@freebsd.org) Date: Sat, 15 Oct 2011 21:46:45 GMT Message-Id: <201110152146.p9FLkjPK043109@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 200255 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Oct 2011 21:46:46 -0000 http://p4web.freebsd.org/@@200255?ac=10 Change 200255 by jhb@jhb_fiver on 2011/10/15 21:46:16 Change FADV_DONTNEED to actually force the pages out similar to msync(MS_INVALIDATE) by calling vm_object_sync(). I want to change FADV_WILLNEED to actually kick off a read-ahead if needed, but not sure how best to do that. Affected files ... .. //depot/projects/fadvise/sys/kern/vfs_syscalls.c#6 edit Differences ... ==== //depot/projects/fadvise/sys/kern/vfs_syscalls.c#6 (text+ko) ==== @@ -4941,11 +4941,8 @@ mtx_pool_unlock(mtxpool_sleep, fp); break; case FADV_WILLNEED: - case FADV_DONTNEED: /* - * Apply the request to the backing VM object. Note - * that the FADV_* constants map directly to the same - * madvise(2) constants. + * Apply the request to the backing VM object. * * XXX: madvise(MADV_WILLNEED) will not do readahead on * a file, perhaps FADV_WILLNEED should. @@ -4956,10 +4953,19 @@ vn_lock(vp, LK_SHARED | LK_RETRY); if (vp->v_object != NULL) vm_object_madvise(vp->v_object, OFF_TO_IDX(start), - atop(end - start), uap->advice); + atop(end - start), MADV_WILLNEED); VOP_UNLOCK(vp, 0); VFS_UNLOCK_GIANT(vfslocked); break; + case FADV_DONTNEED: + /* + * Invalidate pages from the backing VM object similar + * to msync(MS_INVALIDATE). + */ + if (vp->v_object != NULL) + vm_object_sync(vp->v_object, uap->offset, end - uap->offset, + FALSE, TRUE); + break; } out: fdrop(fp, td);