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