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