On pageout, in vnode generic pager, for partially dirty page, only

clear dirty bits for completely invalid blocks.

Otherwise we might not write out the last chunk that is shorter than
512 bytes, if the file end is not aligned on disk block boundary.
This become important after the r324794.

PR:	225586
Reported by:	tris_vern@hotmail.com
Tested by:	pho
Sponsored by:	The FreeBSD Foundation
MFC after:	3 days
This commit is contained in:
Konstantin Belousov 2018-02-02 11:56:30 +00:00
parent 883cd89b05
commit 938cdc4264
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=328773

View File

@ -1266,6 +1266,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