Blob Blame History Raw
Index: libsrc/posixio.c
===================================================================
--- libsrc/posixio.c	(revision 1125)
+++ libsrc/posixio.c	(working copy)
@@ -505,6 +505,22 @@
 			/* copy upper half into lower half */
 			(void) memcpy(pxp->bf_base, middle, pxp->bf_cnt);
 		}
+		else		/* added to fix nofill bug */
+		{
+			assert(pxp->bf_extent == 2 * pxp->blksz);
+			/* still have to page out lower half, if modified */
+			if(fIsSet(pxp->bf_rflags, RGN_MODIFIED))
+			{
+				assert(pxp->bf_refcount <= 0);
+				status = px_pgout(nciop,
+					pxp->bf_offset,
+					pxp->blksz,
+					pxp->bf_base,
+					&pxp->pos);
+				if(status != ENOERR)
+					return status;
+			}
+		}
 		pxp->bf_offset = blkoffset;
 		/* pxp->bf_extent = pxp->blksz; */