1# $NetBSD: vchain,v 1.11 2019/12/06 02:37:53 mrg Exp $ 2 3# @(#)vchain 8.1 (Berkeley) 6/10/93 4# 5 6define vchain 7 set $num = 0 8 9 set $vi = (struct vnode_impl *)$arg0 10 printf "lrulist_next: 0x%lx\n", $vi->vi_lrulist.tqe_next 11 while ($vi) 12 set $vp = &$vi->vi_vnode 13 printf "vp: 0x%lx usecount: %d flags: i:0x%x v:0x%x u:0x%x\n",\ 14 $vp, $vp->v_uobj.uo_refs, \ 15 $vp->v_iflag, $vp->v_vflag, $vp->v_uflag 16 set $num++ 17 set $vi = $vi->vi_mntvnodes.tqe_next 18 end 19 printf "Number of vnodes: %d\n", $num 20end 21 22document vchain 23Given a vnode, follow its mount pointers 24end 25 26define vprint 27 set $vp=(struct vnode *)$arg0 28 set $ip=(struct inode *)$vp->v_data 29end 30 31define mp_vchain 32 set $mp = $arg0->me_mount 33 set $first = $mp->mnt_vnodelist.tqh_first 34 if ($first) 35 vchain $mp->mnt_vnodelist.tqh_first 36 end 37end 38document mp_vchain 39print the vnode chain for a given mount point 40end 41 42define vall 43 set $mpe=mountlist.tqh_first 44 while ($mpe) 45 printf "\tmount point at 0x%lx\n", $mpe 46 mp_vchain $mpe 47 set $mpe = $mpe->me_list.tqe_next 48 49 # "break" 50 if ((const void *)$mpe == (const void *)&mountlist) 51 set $mpe = 0 52 end 53 end 54end 55document vall 56print vnode chains for all mount points 57end 58 59define mountdump 60 set $me=mountlist.tqh_first 61 while ($me) 62 if ($me->me_type == ME_MOUNT) 63 set $mp = $me->me_mount 64 printf "%s on %s type %s, (mp 0x%lx, privdata 0x%lx)\n", \ 65 $mp->mnt_stat->f_mntfromname, \ 66 $mp->mnt_stat->f_mntonname, \ 67 $mp->mnt_op->vfs_name, $mp, $mp->mnt_data 68 end 69 set $me=$me->me_list.tqe_next 70 if ((const void *)$me == (const void *)&mountlist) 71 set $me = 0 72 end 73 end 74end 75