vchain revision 1.6.22.2 1 1.6.22.1 tls # $NetBSD: vchain,v 1.6.22.2 2017/12/03 11:38:44 jdolecek 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.1 gwr set $vp=(struct vnode *)$arg0
10 1.6.22.2 jdolecek set $vi=(struct vnode_impl *)$arg0
11 1.1 gwr while ($vp)
12 1.6.22.2 jdolecek printf "vp: 0x%lx lrulist_next: 0x%lx usecount: %d flags: i:0x%x v:0x%x u:0x%x\n",\
13 1.6.22.2 jdolecek $vp, $vi->vi_lrulist.tqe_next, $vp->v_uobj.uo_refs, \
14 1.6 eeh $vp->v_iflag, $vp->v_vflag, $vp->v_uflag
15 1.1 gwr set $num++
16 1.5 pooka set $vp = $vp->v_mntvnodes.tqe_next
17 1.1 gwr end
18 1.1 gwr printf "Number of vnodes: %d\n", $num
19 1.1 gwr end
20 1.1 gwr
21 1.6 eeh document vchain
22 1.6 eeh Given a vnode, follow its mount pointers
23 1.6 eeh end
24 1.6 eeh
25 1.1 gwr define vprint
26 1.1 gwr set $vp=(struct vnode *)$arg0
27 1.1 gwr set $ip=(struct inode *)$vp->v_data
28 1.1 gwr end
29 1.1 gwr
30 1.3 pooka define mp_vchain
31 1.3 pooka set $mp = (struct mount *)$arg0
32 1.5 pooka vchain $mp->mnt_vnodelist.tqh_first
33 1.3 pooka end
34 1.6 eeh document mp_vchain
35 1.6 eeh print the vnode chain for a given mount point
36 1.6 eeh end
37 1.3 pooka
38 1.1 gwr define vall
39 1.6.22.1 tls set $mp=mountlist.tqh_first
40 1.1 gwr while ($mp)
41 1.3 pooka printf "\tmount point at 0x%x\n", $mp
42 1.3 pooka mp_vchain $mp
43 1.6.22.1 tls set $mp=$mp->mnt_list.tqe_next
44 1.3 pooka
45 1.3 pooka # "break"
46 1.3 pooka if ((const void *)$mp == (const void *)&mountlist)
47 1.3 pooka set $mp = 0
48 1.3 pooka end
49 1.1 gwr end
50 1.1 gwr end
51 1.6 eeh document vall
52 1.6 eeh print vnode chains for all mount points
53 1.6 eeh end
54 1.4 pooka
55 1.4 pooka define mountdump
56 1.6.22.2 jdolecek set $me=mount_list.tqh_first
57 1.6.22.2 jdolecek while ($me)
58 1.6.22.2 jdolecek if ($me->me_type == ME_MOUNT)
59 1.6.22.2 jdolecek set $mp = $me->me_mount
60 1.6.22.2 jdolecek printf "%s on %s type %s, (mp 0x%x, privdata 0x%x)\n", \
61 1.6.22.2 jdolecek $mp->mnt_stat->f_mntfromname, \
62 1.6.22.2 jdolecek $mp->mnt_stat->f_mntonname, \
63 1.6.22.2 jdolecek $mp->mnt_op->vfs_name, $mp, $mp->mnt_data
64 1.6.22.2 jdolecek end
65 1.6.22.2 jdolecek set $me=$me->me_list.tqe_next
66 1.6.22.2 jdolecek if ((const void *)$me == (const void *)&mount_list)
67 1.6.22.2 jdolecek set $me = 0
68 1.4 pooka end
69 1.4 pooka end
70 1.6.22.1 tls end
71