vchain revision 1.3
11.3Spooka# $NetBSD: vchain,v 1.3 2006/09/29 15:43:06 pooka Exp $ 21.2Sgwr 31.1Sgwr# @(#)vchain 8.1 (Berkeley) 6/10/93 41.1Sgwr# 51.1Sgwr# Given a vnode, follow its mount pointers 61.1Sgwrdefine vchain 71.1Sgwr set $num = 0 81.1Sgwr 91.1Sgwr set $vp=(struct vnode *)$arg0 101.1Sgwr while ($vp) 111.3Spooka 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 121.1Sgwr set $num++ 131.3Spooka set $vp = $vp->v_mntvnodes.le_next 141.1Sgwr end 151.1Sgwr printf "Number of vnodes: %d\n", $num 161.1Sgwrend 171.1Sgwr 181.1Sgwrdefine vprint 191.1Sgwr set $vp=(struct vnode *)$arg0 201.1Sgwr set $ip=(struct inode *)$vp->v_data 211.1Sgwrend 221.1Sgwr 231.3Spooka# print the vnode chain for a given mount point 241.3Spookadefine mp_vchain 251.3Spooka set $mp = (struct mount *)$arg0 261.3Spooka vchain $mp->mnt_vnodelist.lh_first 271.3Spookaend 281.3Spooka 291.3Spooka# print vnode chains for all mount points 301.1Sgwrdefine vall 311.3Spooka set $mp=mountlist.cqh_first 321.1Sgwr while ($mp) 331.3Spooka printf "\tmount point at 0x%x\n", $mp 341.3Spooka mp_vchain $mp 351.3Spooka set $mp=$mp->mnt_list.cqe_next 361.3Spooka 371.3Spooka # "break" 381.3Spooka if ((const void *)$mp == (const void *)&mountlist) 391.3Spooka set $mp = 0 401.3Spooka end 411.1Sgwr end 421.1Sgwrend 43