summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorPrakash Sangappa <Prakash.Sangappa@Sun.COM>2008-12-09 12:19:42 -0800
committerPrakash Sangappa <Prakash.Sangappa@Sun.COM>2008-12-09 12:19:42 -0800
commitc7531c7fa84b7925c938a08326949a4ac6487f86 (patch)
tree8c90eb1807a7b67a2d9b562dbec53e9abcfa64a0 /usr/src
parentd2d5cf7c5d909b74a88d499283e24750a9a52c5d (diff)
downloadillumos-joyent-c7531c7fa84b7925c938a08326949a4ac6487f86.tar.gz
6773561 VM gives pages which have p_fsdata populated erroneously
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/vm/vm_page.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/usr/src/uts/common/vm/vm_page.c b/usr/src/uts/common/vm/vm_page.c
index ff77057b8e..f12c6a4f0d 100644
--- a/usr/src/uts/common/vm/vm_page.c
+++ b/usr/src/uts/common/vm/vm_page.c
@@ -3447,6 +3447,7 @@ page_hashin(page_t *pp, vnode_t *vp, u_offset_t offset, kmutex_t *hold)
int rc;
ASSERT(MUTEX_NOT_HELD(page_vnode_mutex(vp)));
+ ASSERT(pp->p_fsdata == 0 || panicstr);
TRACE_3(TR_FAC_VM, TR_PAGE_HASHIN,
"page_hashin:pp %p vp %p offset %llx",
@@ -3515,6 +3516,7 @@ page_do_hashout(page_t *pp)
PP_CLRSWAP(pp);
pp->p_vnode = NULL;
pp->p_offset = (u_offset_t)-1;
+ pp->p_fsdata = 0;
}
/*
@@ -4571,6 +4573,9 @@ page_relocate_hash(page_t *pp_new, page_t *pp_old)
page_do_relocate_hash(pp_new, pp_old);
+ /* The following comment preserved from page_flip(). */
+ pp_new->p_fsdata = pp_old->p_fsdata;
+ pp_old->p_fsdata = 0;
mutex_exit(vphm);
mutex_exit(phm);
@@ -4584,9 +4589,6 @@ page_relocate_hash(page_t *pp_new, page_t *pp_old)
pp_new->p_cowcnt = pp_old->p_cowcnt;
pp_old->p_lckcnt = pp_old->p_cowcnt = 0;
- /* The following comment preserved from page_flip(). */
- /* XXX - Do we need to protect fsdata? */
- pp_new->p_fsdata = pp_old->p_fsdata;
}
/*