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