PG_FAKE
if ((pg->flags & PG_FAKE) != 0) {
pg->flags &= ~(PG_BUSY|PG_FAKE); /* never busy */
KASSERT(pg->flags != (PG_CLEAN|PG_FAKE)); /* Freeing invalid page */
pg->flags &= ~(PG_BUSY|PG_FAKE);
KASSERTMSG(pg->flags == (PG_CLEAN | PG_FAKE),
if ((pg->flags & PG_FAKE) != 0) {
if ((pg->flags & PG_FAKE) == 0) {
if (error && (pg->flags & PG_FAKE) != 0) {
if ((pg->flags & PG_FAKE) ||
if (pg->flags & PG_FAKE && !overwrite) {
pg->flags &= ~PG_FAKE;
if (pg->flags & PG_FAKE) {
pg->flags &= ~(PG_BUSY|PG_FAKE);
if ((pgs[tailstart >> PAGE_SHIFT]->flags & PG_FAKE) != 0) {
while ((pgs[pidx]->flags & PG_FAKE) == 0) {
pgs[pidx + pcount]->flags & PG_FAKE) {
if (pg->flags & PG_FAKE) {
pg->flags &= ~PG_FAKE;
pg->flags = PG_CLEAN|PG_BUSY|PG_FAKE;
KASSERT((pg->flags & PG_FAKE) == 0);
(pg->flags & PG_FAKE) == 0);
if (pg->flags & PG_FAKE) {
pg->flags &= ~PG_FAKE;
npg->flags &= ~(PG_BUSY|PG_FAKE);
KASSERT((ptmp->flags & PG_FAKE) != 0);
ptmp->flags &= ~PG_FAKE;
pg->flags &= ~(PG_BUSY|PG_FAKE);
KASSERT((pg->flags & PG_FAKE) == 0);
pg->flags &= ~PG_FAKE;
KASSERT((pg->flags & PG_FAKE) == 0 || (gpflags & PGO_OVERWRITE));
pg->flags &= ~PG_FAKE;
KASSERT((pg->flags & (PG_BUSY | PG_FAKE)) == 0);
pg->flags &= ~(PG_BUSY|PG_FAKE);
pg->flags &= ~(PG_BUSY|PG_FAKE);
pg->flags &= ~PG_FAKE;
newpg->flags &= ~(PG_BUSY|PG_FAKE);
pg->flags &= ~(PG_BUSY|PG_FAKE);
pg->flags = PG_BUSY | PG_CLEAN | PG_FAKE;
KASSERT(pg->flags == (PG_BUSY|PG_CLEAN|PG_FAKE));
KASSERT((pg->flags & PG_FAKE) == 0);
if (pg->flags & PG_FAKE) {
pg->flags &= ~PG_FAKE;
pg->flags = PG_BUSY | PG_CLEAN | PG_FAKE;