1 1.2.104.1 yamt # $NetBSD: vchain,v 1.2.104.1 2006/10/22 06:07:09 yamt Exp $ 2 1.2 gwr 3 1.1 gwr # @(#)vchain 8.1 (Berkeley) 6/10/93 4 1.1 gwr # 5 1.1 gwr # Given a vnode, follow its mount pointers 6 1.1 gwr define vchain 7 1.1 gwr set $num = 0 8 1.1 gwr 9 1.1 gwr set $vp=(struct vnode *)$arg0 10 1.1 gwr while ($vp) 11 1.2.104.1 yamt printf "vp: 0x%x freelist_next: 0x%x usecount: %d flags: 0x%x\n", $vp, $vp->v_freelist.tqe_next, $vp->v_uobj.uo_refs, $vp->v_flag 12 1.1 gwr set $num++ 13 1.2.104.1 yamt set $vp = $vp->v_mntvnodes.le_next 14 1.1 gwr end 15 1.1 gwr printf "Number of vnodes: %d\n", $num 16 1.1 gwr end 17 1.1 gwr 18 1.1 gwr define vprint 19 1.1 gwr set $vp=(struct vnode *)$arg0 20 1.1 gwr set $ip=(struct inode *)$vp->v_data 21 1.1 gwr end 22 1.1 gwr 23 1.2.104.1 yamt # print the vnode chain for a given mount point 24 1.2.104.1 yamt define mp_vchain 25 1.2.104.1 yamt set $mp = (struct mount *)$arg0 26 1.2.104.1 yamt vchain $mp->mnt_vnodelist.lh_first 27 1.2.104.1 yamt end 28 1.2.104.1 yamt 29 1.2.104.1 yamt # print vnode chains for all mount points 30 1.1 gwr define vall 31 1.2.104.1 yamt set $mp=mountlist.cqh_first 32 1.1 gwr while ($mp) 33 1.2.104.1 yamt printf "\tmount point at 0x%x\n", $mp 34 1.2.104.1 yamt mp_vchain $mp 35 1.2.104.1 yamt set $mp=$mp->mnt_list.cqe_next 36 1.2.104.1 yamt 37 1.2.104.1 yamt # "break" 38 1.2.104.1 yamt if ((const void *)$mp == (const void *)&mountlist) 39 1.2.104.1 yamt set $mp = 0 40 1.2.104.1 yamt end 41 1.1 gwr end 42 1.1 gwr end 43