Merge from vendor branch OPENSSH:
[dragonfly.git] / sys / dev / raid / vinum / .gdbinit.vinum
1 define rq
2 rqq rq
3 end
4 document rq
5 Show information about the request pointed to by the variable rq in the current frame.
6 end
7 define rqq
8 set $rq = (struct request *) $arg0
9 printf "Request: \n" 
10 output/x *$rq
11 printf "\n"
12 bpp $rq->bp
13 set $rqg = $rq->rqg
14 while ($rqg != 0)
15   printf "\nRequest group at %x:\n", $rqg
16   output/x *$rqg
17   printf "\n"
18   set $rqno = 0
19   while ($rqno < $rqg->count)
20     printf "rqg->rqe [%d]: ", $rqno
21     rrqe &$rqg->rqe[$rqno]
22     set $rqno = $rqno + 1
23     end
24   set $rqg = $rqg->next
25   end
26 end
27 document rqq
28 Show information about the request (struct rq) pointed at by the parameter
29 end
30 define rqe
31 rrqe rqe
32 end
33 define rrqe
34 set $rqe = (struct rqelement *) $arg0
35     printf "sdoffset 0x%x, useroffset 0x%x, dataoffset 0x%x, datalen 0x%x, groupoffset 0x%x, grouplen 0x%x, buflen 0x%x\n", \
36       $rqe->sdoffset, \
37       $rqe->useroffset, \
38       $rqe->dataoffset, \
39       $rqe->datalen, \
40       $rqe->groupoffset, \
41       $rqe->grouplen, \
42       $rqe->buflen
43     printf "  Flags 0x%x,  Subdisk %d  Drive %d\n", \
44       $rqe->flags, \
45       $rqe->sdno, \
46       $rqe->driveno
47     bpp &$rqe->b
48 end
49 document rqe
50 Show information about the request element pointed to by the variable rqe in the current frame.
51 end
52 document rrqe
53 Show information about the request element (struct rqe) pointed at by the parameter.
54 end
55 define rqq0
56 printf "rq->prq [0].rqe[0].sdno: " 
57 output/x rq->prq[0].rqe[0].sdno
58 printf "\nBuffer: device: " 
59 output/x rq->prq[0].rqe[0].b.b_dev
60 printf " data: " 
61 output/x rq->prq[0].rqe[0].b.b_data
62 printf " length: " 
63 output/x rq->prq[0].rqe[0].b.b_bcount
64 printf " drive offset: " 
65 output/x rq->prq[0].rqe[0].b.b_blkno
66 printf " subdisk offset: " 
67 output/x rq->prq[0].rqe[0].sdoffset
68 printf "\nFlags: " 
69 if (rq->prq[0].rqe[0].b.b_flags & 0x10)
70 printf "busy "
71 end
72 if (rq->prq[0].rqe[0].b.b_flags & 0x200)
73 printf "done "
74 end
75 if (rq->prq[0].rqe[0].b.b_flags & 0x800)
76 printf "error "
77 end
78 if (rq->prq[0].rqe[0].b.b_flags & 0x100000)
79 printf "read "
80 end
81 output/x rq->prq[0].rqe[0].b.b_flags
82 printf "\nrq->prq [0].rqe[1].sdno: " 
83 output/x rq->prq[0].rqe[1].sdno
84 printf "\nBuffer: device: " 
85 output/x rq->prq[0].rqe[1].b.b_dev
86 printf " data: " 
87 output/x rq->prq[0].rqe[1].b.b_data
88 printf " length: " 
89 output/x rq->prq[0].rqe[1].b.b_bcount
90 printf " drive offset: " 
91 output/x rq->prq[0].rqe[1].b.b_blkno
92 printf " subdisk offset: " 
93 output/x rq->prq[0].rqe[1].sdoffset
94 printf "\nFlags: " 
95 output/x rq->prq[0].rqe[1].b.b_flags
96 echo \n
97 end
98 define rqq1
99 printf "\nrq->prq [1].rqe[0].sdno: " 
100 output/x rq->prq[1].rqe[0].sdno
101 printf "\nBuffer: device: " 
102 output/x rq->prq[1].rqe[0].b.b_dev
103 printf " data: " 
104 output/x rq->prq[1].rqe[0].b.b_data
105 printf " length: " 
106 output/x rq->prq[1].rqe[0].b.b_bcount
107 printf " drive offset: " 
108 output/x rq->prq[1].rqe[0].b.b_blkno
109 printf " subdisk offset: " 
110 output/x rq->prq[1].rqe[0].sdoffset
111 printf "\nFlags: " 
112 output/x rq->prq[1].rqe[0].b.b_flags
113 printf "\nrq->prq [1].rqe[1].sdno: " 
114 output/x rq->prq[1].rqe[1].sdno
115 printf "\nBuffer: device: " 
116 output/x rq->prq[1].rqe[1].b.b_dev
117 printf " data: 0x%x  length 0x%x  drive offset 0x%x  sd offset 0x%x\n" rq->prq[1].rqe[1].b.b_data,
118  rq->prq[1].rqe[1].b.b_bcount,
119  rq->prq[1].rqe[1].b.b_blkno,
120  rq->prq[1].rqe[1].sdoffset
121 printf "\nFlags: " 
122 output/x rq->prq[1].rqe[1].b.b_flags
123 echo \n
124 end
125 define xy
126 bpp
127 echo stripeoffset
128 p stripeoffset
129 echo stripebase
130 p stripebase
131 echo sdno
132 p sdno
133 echo sdoffset
134 p sdoffset
135 echo rqe->sectors
136 p rqe->sectors
137 echo rqe->sdoffset
138 p rqe->sdoffset
139 end
140 # kernel equivalent of 'info -V'
141 define rqi
142    set $rqipe = rqip
143    set $rqip = $rqipe + 1
144    set $rqend  = rqinfo + 128
145    if ($rqip == $rqend)
146       set $rqip = rqinfo
147    end
148    set $done = 0
149    while ($done == 0)
150      if ($rqip->bp != 0)
151         printf "%X:\t%d.%06d\tUBP: %x\t", $rqip, $rqip->timestamp.tv_sec, $rqip->timestamp.tv_usec, $rqip->bp
152         p $rqip->type
153         printf " user  "
154         bpp $rqip->bp
155         if ($rqip->type < loginfo_rqe)
156            printf " copied"
157            bpp &$rqip->info
158         else 
159            rrqe &$rqip->info
160         end
161       end
162       set $rqip = $rqip + 1
163       if ($rqip == $rqipe)
164          set $done = 1
165       end
166       if ($rqip == $rqend)
167          set $rqip = rqinfo
168       end
169    end
170 end
171 define rqinfo
172    set $rqipe = rqip
173    set $rqip = $rqipe + 1
174    set $rqend  = rqinfo + 128
175    if ($rqip == $rqend)
176       set $rqip = rqinfo
177    end
178    set $done = 0
179    printf "\nTime\t\t\t Event\t\t     Buf\tDev\t  Offset\tBytes\tSD\tSDoff\tDoffset\tGoffset\n\n"
180    while ($done == 0)
181      if ($rqip->bp != 0)
182         printf "%d.%06d\t", $rqip->timestamp.tv_sec, $rqip->timestamp.tv_usec
183         if ($rqip->type ==  loginfo_user_bp)
184           if ($rqip->info.b.b_flags & 0x00100000)
185             printf "1VS Read"
186           else
187             printf "1VS Write"
188           end
189         printf "\t%p\t%d.%d\t0x%-9x\t%ld\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.b.b_blkno, $rqip->info.b.b_bcount
190         end
191         
192       if ($rqip->type == loginfo_user_bpl)
193           if ($rqip->info.b.b_flags & 0x00100000)
194             printf "2LR Read"
195           else
196             printf "2LR Write"
197           end
198         printf "\t%p\t%d.%d\t0x%-9x\t%ld\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.b.b_blkno, $rqip->info.b.b_bcount
199         end
200          
201       if ($rqip->type == loginfo_rqe)
202           if ($rqip->info.b.b_flags & 0x00100000)
203             printf "3RQ Read"
204           else
205             printf "3RQ Write"
206           end
207         printf "\t%p\t%d.%d\t0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.rqe.b.b_blkno, $rqip->info.rqe.b.b_bcount, $rqip->info.rqe.sdno, $rqip->info.rqe.sdoffset, $rqip->info.rqe.dataoffset, $rqip->info.rqe.groupoffset
208         end
209         
210       if ($rqip->type == loginfo_iodone)
211           if ($rqip->info.b.b_flags & 0x00100000)
212             printf "4DN Read"
213           else
214             printf "4DN Write"
215           end
216         printf "\t%p\t%d.%d\t0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.rqe.b.b_blkno, $rqip->info.rqe.b.b_bcount, $rqip->info.rqe.sdno, $rqip->info.rqe.sdoffset, $rqip->info.rqe.dataoffset, $rqip->info.rqe.groupoffset
217         end
218         
219       if ($rqip->type == loginfo_raid5_data)
220           if ($rqip->info.b.b_flags & 0x00100000)
221             printf "5RD Read"
222           else
223             printf "5RD Write"
224           end
225         printf "\t%p\t%d.%d\t0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.rqe.b.b_blkno, $rqip->info.rqe.b.b_bcount, $rqip->info.rqe.sdno, $rqip->info.rqe.sdoffset, $rqip->info.rqe.dataoffset, $rqip->info.rqe.groupoffset
226         end
227         
228       if ($rqip->type == loginfo_raid5_parity)
229           if ($rqip->info.b.b_flags & 0x00100000)
230             printf "6RP Read"
231           else
232             printf "6RP Write"
233           end
234         printf "\t%p\t%d.%d\t0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.rqe.b.b_blkno, $rqip->info.rqe.b.b_bcount, $rqip->info.rqe.sdno, $rqip->info.rqe.sdoffset, $rqip->info.rqe.dataoffset, $rqip->info.rqe.groupoffset
235         end
236
237       if ($rqip->type == loginfo_sdio)
238           if ($rqip->info.b.b_flags & 0x00100000)
239             printf "7VS Read"
240           else
241             printf "7VS Write"
242           end
243         printf "\t%p\t\t  0x%-9x\t%ld\t%d\n", $rqip->bp, $rqip->info.b.b_blkno, $rqip->info.b.b_bcount, $rqip->devminor & 0xff
244         end
245
246       if ($rqip->type == loginfo_sdiol)
247           if ($rqip->info.b.b_flags & 0x00100000)
248             printf "8LR Read"
249           else
250             printf "8LR Write"
251           end
252         printf "\t%p\t%d.%d\t0x%-9x\t%ld\n", $rqip->bp, $rqip->devmajor, $rqip->devminor & 0xff, $rqip->info.b.b_blkno, $rqip->info.b.b_bcount
253         end
254          
255       if ($rqip->type == loginfo_lockwait)
256         printf "Lockwait  %p\t%d\t  0x%x\n", $rqip->bp, $rqip->info.lockinfo.plexno, $rqip->info.lockinfo.stripe
257         end
258
259       if ($rqip->type == loginfo_lock)
260         printf "Lock      \t%p\t%d\t  0x%x\n", $rqip->bp, $rqip->info.lockinfo.plexno, $rqip->info.lockinfo.stripe
261         end
262
263       if ($rqip->type == loginfo_unlock)
264         printf "Unlock    \t%p\t%d\t  0x%x\n", $rqip->bp, $rqip->info.lockinfo.plexno, $rqip->info.lockinfo.stripe
265         end
266
267         if ($rqip->type == loginfo_sdiodone)
268           if ($rqip->info.b.b_flags & 0x00100000)
269             printf "9DN Read"
270           else
271             printf "9DN Write"
272           end
273         printf "\t%p\t\t  0x%-9x\t%ld\t%d\n", $rqip->bp, $rqip->info.b.b_blkno, $rqip->info.b.b_bcount, $rqip->devminor
274         end
275
276         end
277       set $rqip = $rqip + 1
278       if ($rqip == $rqipe)
279          set $done = 1
280       end
281       if ($rqip == $rqend)
282          set $rqip = rqinfo
283       end
284    end
285 end 
286 document rqinfo
287 Show the Vinum request log buffer, like 'vinum info -V'
288 end
289 define meminfo
290 printf "Block\tSequence\t  size\t  address\t  line\t\tfile\n"
291 set $i = 0
292 while $i < malloccount
293   printf "%6d\t%6d\t\t%6d\t0x%08x\t%6d\t\t%s\n", $i, malloced [$i].seq, malloced[$i].size, malloced[$i].address, malloced[$i].line, &malloced[$i].file
294   set $i = $i + 1
295 end
296 end
297 document meminfo
298 Equivalent of 'vinum info -v' command
299 end