Print this page
Try to remove assumption that zone's root vnode is marked VROOT

@@ -36,10 +36,11 @@
 #include <nfs/auth.h>
 #include <sys/vnode.h>
 #include <nfs/nfs4.h>
 #include <sys/kiconv.h>
 #include <sys/avl.h>
+#include <sys/zone.h>
 
 #ifdef _KERNEL
 #include <sys/pkp_hash.h> /* for PKP_HASH_SIZE */
 #endif /* _KERNEL */
 

@@ -470,16 +471,19 @@
         struct exportinfo  *tree_exi;
         struct exp_visible *tree_vis;
 } treenode_t;
 
 /*
- * TREE_ROOT checks if the node corresponds to a filesystem root
+ * TREE_ROOT checks if the node corresponds to a filesystem root or
+ * the zone's root directory.
  * TREE_EXPORTED checks if the node is explicitly shared
  */
 
 #define TREE_ROOT(t) \
-        ((t)->tree_exi && (t)->tree_exi->exi_vp->v_flag & VROOT)
+        ((t)->tree_exi != NULL && \
+        (((t)->tree_exi->exi_vp->v_flag & VROOT) || \
+        VN_IS_CURZONEROOT((t)->tree_exi->exi_vp)))
 
 #define TREE_EXPORTED(t) \
         ((t)->tree_exi && !PSEUDO((t)->tree_exi))
 
 #define EXPTABLESIZE   256