Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F151834944
D50568.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D50568.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D50568: vm_pageout: reduce number of flush() params
Attached
Detach File
Event Timeline
Log In to Comment