|
 |
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; */
|