--- src/sys/vfs/hammer/hammer_inode.c 2008/08/09 07:04:16 1.110 +++ src/sys/vfs/hammer/hammer_inode.c 2008/09/17 21:44:20 1.111 @@ -293,12 +293,16 @@ hammer_get_vnode(struct hammer_inode *ip * confused. The other half of the special handling * is in hammer_vop_nlookupdotdot(). * - * Pseudo-filesystem roots also do not count. + * Pseudo-filesystem roots can be accessed via + * non-root filesystem paths and setting VROOT may + * confuse the namecache. Set VPFSROOT instead. */ if (ip->obj_id == HAMMER_OBJID_ROOT && - ip->obj_asof == hmp->asof && - ip->obj_localization == 0) { - vp->v_flag |= VROOT; + ip->obj_asof == hmp->asof) { + if (ip->obj_localization == 0) + vp->v_flag |= VROOT; + else + vp->v_flag |= VPFSROOT; } vp->v_data = (void *)ip;