--- /dev/null
+--- mpool.c.orig       2006-12-13 22:19:43.000000000 -0800
++++ mpool.c    2006-12-13 22:27:26.000000000 -0800
+@@ -294,10 +294,16 @@
+       BKT *bp;
+ 
+       /* Walk the lru chain, flushing any dirty pages to disk. */
+-      TAILQ_FOREACH(bp, &mp->lqh, q)
+-              if (bp->flags & MPOOL_DIRTY &&
+-                  mpool_write(mp, bp) == RET_ERROR)
+-                      return (RET_ERROR);
++      TAILQ_FOREACH(bp, &mp->lqh, q) {
++              if (bp->flags & MPOOL_DIRTY)
++                      if (mpool_write(mp, bp) == RET_ERROR) {
++                              return (RET_ERROR);
++                      } else {
++                              /* 5126974: Re-run through the user's pgin filter. */
++                              if (mp->pgin != NULL)
++                                      (mp->pgin)(mp->pgcookie, bp->pgno, bp->page);
++                      }
++      }
+ 
+       /* Sync the file descriptor. */
+       return (_fsync(mp->fd) ? RET_ERROR : RET_SUCCESS);