vchain revision 1.9.12.1 1 1.9.12.1 martin # $NetBSD: vchain,v 1.9.12.1 2020/04/08 14:08:51 martin 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.9.12.1 martin set $vi = (struct vnode_impl *)$arg0
10 1.9.12.1 martin printf "lrulist_next: 0x%lx\n", $vi->vi_lrulist.tqe_next
11 1.9.12.1 martin while ($vi)
12 1.9.12.1 martin set $vp = &$vi->vi_vnode
13 1.9.12.1 martin printf "vp: 0x%lx usecount: %d flags: i:0x%x v:0x%x u:0x%x\n",\
14 1.9.12.1 martin $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.9.12.1 martin 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.9.12.1 martin set $mp = $arg0->me_mount
33 1.9.12.1 martin set $first = $mp->mnt_vnodelist.tqh_first
34 1.9.12.1 martin if ($first)
35 1.9.12.1 martin vchain $mp->mnt_vnodelist.tqh_first
36 1.9.12.1 martin 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.9.12.1 martin set $mpe=mountlist.tqh_first
44 1.9.12.1 martin while ($mpe)
45 1.9.12.1 martin printf "\tmount point at 0x%lx\n", $mpe
46 1.9.12.1 martin mp_vchain $mpe
47 1.9.12.1 martin set $mpe = $mpe->me_list.tqe_next
48 1.3 pooka
49 1.3 pooka # "break"
50 1.9.12.1 martin if ((const void *)$mpe == (const void *)&mountlist)
51 1.9.12.1 martin 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.9.12.1 martin 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.9.12.1 martin 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.9.12.1 martin 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