Author: mckusick
Date: Wed Jan 31 22:49:50 2018
New Revision: 328643
URL: https://svnweb.freebsd.org/changeset/base/328643

Log:
  One of the vnode fields listed by vn_printf is the union of pointers
  whose type depends on the type of vnode. Correct vn_printf so that
  it correctly identifies the name of the pointer that it is printing.
  
  Submitted by: Andreas Longwitz <longwitz at incore.de>
  MFC after: 1 week

Modified:
  head/sys/kern/vfs_subr.c

Modified: head/sys/kern/vfs_subr.c
==============================================================================
--- head/sys/kern/vfs_subr.c    Wed Jan 31 22:46:05 2018        (r328642)
+++ head/sys/kern/vfs_subr.c    Wed Jan 31 22:49:50 2018        (r328643)
@@ -3467,8 +3467,25 @@ vn_printf(struct vnode *vp, const char *fmt, ...)
        va_end(ap);
        printf("%p: ", (void *)vp);
        printf("tag %s, type %s\n", vp->v_tag, typename[vp->v_type]);
-       printf("    usecount %d, writecount %d, refcount %d mountedhere %p\n",
-           vp->v_usecount, vp->v_writecount, vp->v_holdcnt, vp->v_mountedhere);
+       printf("    usecount %d, writecount %d, refcount %d",
+           vp->v_usecount, vp->v_writecount, vp->v_holdcnt);
+       switch (vp->v_type) {
+       case VDIR:
+               printf(" mountedhere %p\n", vp->v_mountedhere);
+               break;
+       case VCHR:
+               printf(" rdev %p\n", vp->v_rdev);
+               break;
+       case VSOCK:
+               printf(" socket %p\n", vp->v_unpcb);
+               break;
+       case VFIFO:
+               printf(" fifoinfo %p\n", vp->v_fifoinfo);
+               break;
+       default:
+               printf("\n");
+               break;
+       }
        buf[0] = '\0';
        buf[1] = '\0';
        if (vp->v_vflag & VV_ROOT)
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to