--- 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) {