svn commit: r201964 - user/kmacy/releng_8_fcs_buf_xen/sys/kern
Kip Macy
kmacy at FreeBSD.org
Sat Jan 9 23:50:47 UTC 2010
Author: kmacy
Date: Sat Jan 9 23:50:47 2010
New Revision: 201964
URL: http://svn.freebsd.org/changeset/base/201964
Log:
repeatedly invoke lowmem handler if buffer request can't be satisfied
Modified:
user/kmacy/releng_8_fcs_buf_xen/sys/kern/vfs_bio.c
Modified: user/kmacy/releng_8_fcs_buf_xen/sys/kern/vfs_bio.c
==============================================================================
--- user/kmacy/releng_8_fcs_buf_xen/sys/kern/vfs_bio.c Sat Jan 9 23:43:22 2010 (r201963)
+++ user/kmacy/releng_8_fcs_buf_xen/sys/kern/vfs_bio.c Sat Jan 9 23:50:47 2010 (r201964)
@@ -1268,6 +1268,7 @@ brelse(struct buf *bp)
* background write.
*/
if ((bp->b_flags & B_VMIO)
+ && (bp->b_vp != NULL)
&& !(bp->b_vp->v_mount != NULL &&
(bp->b_vp->v_mount->mnt_vfc->vfc_flags & VFCF_NETWORK) != 0 &&
!vn_isdisk(bp->b_vp, NULL) &&
@@ -1730,7 +1731,7 @@ getnewbuf(struct vnode *vp, int slpflag,
struct thread *td;
struct buf *bp;
struct buf *nbp;
- int defrag = 0;
+ int defrag = 0, retrying = 0;
int nqindex;
static int flushingbufs;
@@ -1995,10 +1996,16 @@ restart:
if (gbflags & GB_NOWAIT_BD)
return (NULL);
+ EVENTHANDLER_INVOKE(vm_lowmem, 0);
+ if (!retrying) {
+ retrying = 1;
+ goto restart;
+ }
mtx_lock(&nblock);
while (needsbuffer & flags) {
if (vp != NULL && (td->td_pflags & TDP_BUFNEED) == 0) {
mtx_unlock(&nblock);
+ EVENTHANDLER_INVOKE(vm_lowmem, 0);
/*
* getblk() is called with a vnode
* locked, and some majority of the
More information about the svn-src-user
mailing list