Page MenuHomeFreeBSD

D50568.diff
No OneTemporary

D50568.diff

diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -1000,7 +1000,7 @@
static int
vm_object_page_clean_flush(struct pctrie_iter *pages, vm_page_t p,
- int pagerflags, int flags, boolean_t *allclean, boolean_t *eio)
+ int pagerflags, int flags, boolean_t *allclean, bool *eio)
{
vm_page_t ma[vm_pageout_page_count];
int count, runlen;
@@ -1020,8 +1020,7 @@
}
}
- vm_pageout_flush(ma, count, pagerflags, 0, &runlen, eio);
- return (runlen);
+ return (vm_pageout_flush(ma, count, pagerflags, eio));
}
/*
@@ -1054,7 +1053,8 @@
vm_page_t np, p;
vm_pindex_t pi, tend, tstart;
int curgeneration, n, pagerflags;
- boolean_t eio, res, allclean;
+ boolean_t res, allclean;
+ bool eio;
VM_OBJECT_ASSERT_WLOCKED(object);
diff --git a/sys/vm/vm_pageout.h b/sys/vm/vm_pageout.h
--- a/sys/vm/vm_pageout.h
+++ b/sys/vm/vm_pageout.h
@@ -100,7 +100,7 @@
void vm_wait_min(void);
void vm_wait_severe(void);
-int vm_pageout_flush(vm_page_t *, int, int, int, int *, boolean_t *);
+int vm_pageout_flush(vm_page_t *mc, int count, int flags, bool *eio);
void vm_pageout_oom(int shortage);
#endif /* _KERNEL */
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
--- a/sys/vm/vm_pageout.c
+++ b/sys/vm/vm_pageout.c
@@ -438,7 +438,7 @@
}
return (vm_pageout_flush(&mc[page_base], pageout_count,
- VM_PAGER_PUT_NOREUSE, 0, NULL, NULL));
+ VM_PAGER_PUT_NOREUSE, NULL));
}
/*
@@ -450,19 +450,19 @@
* the parent to do more sophisticated things we may have to change
* the ordering.
*
- * Returned runlen is the count of pages between mreq and first
- * page after mreq with status VM_PAGER_AGAIN.
- * *eio is set to TRUE if pager returned VM_PAGER_ERROR or VM_PAGER_FAIL
- * for any page in runlen set.
+ * If eio is not NULL, returns the count of pages between 0 and first page
+ * with status VM_PAGER_AGAIN. *eio is set to true if pager returned
+ * VM_PAGER_ERROR or VM_PAGER_FAIL for any page in that set.
+ *
+ * Otherwise, returns the number of paged-out pages.
*/
int
-vm_pageout_flush(vm_page_t *mc, int count, int flags, int mreq, int *prunlen,
- boolean_t *eio)
+vm_pageout_flush(vm_page_t *mc, int count, int flags, bool *eio)
{
vm_object_t object = mc[0]->object;
int pageout_status[count];
int numpagedout = 0;
- int i, runlen;
+ int i;
VM_OBJECT_ASSERT_WLOCKED(object);
@@ -488,9 +488,8 @@
vm_pager_put_pages(object, mc, count, flags, pageout_status);
- runlen = count - mreq;
if (eio != NULL)
- *eio = FALSE;
+ *eio = false;
for (i = 0; i < count; i++) {
vm_page_t mt = mc[i];
@@ -540,12 +539,11 @@
numpagedout++;
} else
vm_page_activate(mt);
- if (eio != NULL && i >= mreq && i - mreq < runlen)
- *eio = TRUE;
+ if (eio != NULL)
+ *eio = true;
break;
case VM_PAGER_AGAIN:
- if (i >= mreq && i - mreq < runlen)
- runlen = i - mreq;
+ count = i;
break;
}
@@ -560,8 +558,8 @@
vm_page_sunbusy(mt);
}
}
- if (prunlen != NULL)
- *prunlen = runlen;
+ if (eio != NULL)
+ return (count);
return (numpagedout);
}

File Metadata

Mime Type
text/plain
Expires
Sun, Apr 12, 12:00 AM (1 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31279007
Default Alt Text
D50568.diff (3 KB)

Event Timeline