diff -r 95e8ec05aa83 -r 256464cbb73c usr/src/uts/common/vm/page_lock.c --- a/usr/src/uts/common/vm/page_lock.c Tue Dec 19 22:06:32 2006 -0800 +++ b/usr/src/uts/common/vm/page_lock.c Tue Dec 19 23:13:06 2006 -0800 @@ -142,6 +142,12 @@ extern struct vnode kvp; +/* + * Two slots after VPH_TABLE_SIZE are reserved in vph_mutex for kernel vnodes. + * The lock for kvp is VPH_TABLE_SIZE + 0, and the lock for zvp is + * VPH_TABLE_SIZE + 1. + */ + kmutex_t vph_mutex[VPH_TABLE_SIZE + 2]; /* @@ -861,6 +867,9 @@ { if (vp == &kvp) return (&vph_mutex[VPH_TABLE_SIZE + 0]); + + if (vp == &zvp) + return (&vph_mutex[VPH_TABLE_SIZE + 1]); #ifdef DEBUG if (page_vnode_mutex_stress != 0) return (&vph_mutex[0]); @@ -913,7 +922,7 @@ ASSERT(!PP_ISFREE(pp)); ASSERT(pp->p_vnode != NULL); ASSERT(!IS_SWAPFSVP(pp->p_vnode)); - ASSERT(pp->p_vnode != &kvp); + ASSERT(!PP_ISKAS(pp)); again: if (pszc == 0) {