summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2018-02-05 10:29:57 +0000
committerkib <kib@FreeBSD.org>2018-02-05 10:29:57 +0000
commit6fdd7d270eb3f8df19379f3321e7c0dd97c400b7 (patch)
tree61b2fe31bdda5b7aaa48c46c92239e8b71e1e998
parent2fffd1438f15bf2cd47a008f00b45e84f811e0ea (diff)
downloadFreeBSD-src-6fdd7d270eb3f8df19379f3321e7c0dd97c400b7.zip
FreeBSD-src-6fdd7d270eb3f8df19379f3321e7c0dd97c400b7.tar.gz
MFC r328773:
On pageout, in vnode generic pager, for partially dirty page, only clear dirty bits for completely invalid blocks. PR: 225586
-rw-r--r--sys/vm/vnode_pager.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c
index 30b02c4..45f06e6 100644
--- a/sys/vm/vnode_pager.c
+++ b/sys/vm/vnode_pager.c
@@ -1223,6 +1223,8 @@ vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *ma, int bytecount,
maxsize = object->un_pager.vnp.vnp_size - poffset;
ncount = btoc(maxsize);
if ((pgoff = (int)maxsize & PAGE_MASK) != 0) {
+ pgoff = roundup2(pgoff, DEV_BSIZE);
+
/*
* If the object is locked and the following
* conditions hold, then the page's dirty
OpenPOWER on IntegriCloud