xref: /dragonfly/sys/dev/raid/vinum/.gdbinit.vinum (revision abf903a5)
1# $DragonFly: src/sys/dev/raid/vinum/.gdbinit.vinum,v 1.3 2006/03/24 18:35:32 dillon Exp $
2define rq
3rqq rq
4end
5document rq
6Show information about the request pointed to by the variable rq in the current frame.
7end
8define rqq
9set $rq = (struct request *) $arg0
10printf "Request: \n"
11output/x *$rq
12printf "\n"
13bpp $rq->bp
14set $rqg = $rq->rqg
15while ($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
27end
28document rqq
29Show information about the request (struct rq) pointed at by the parameter
30end
31define rqe
32rrqe rqe
33end
34define rrqe
35set $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
49end
50document rqe
51Show information about the request element pointed to by the variable rqe in the current frame.
52end
53document rrqe
54Show information about the request element (struct rqe) pointed at by the parameter.
55end
56define rqq0
57printf "rq->prq [0].rqe[0].sdno: "
58output/x rq->prq[0].rqe[0].sdno
59printf "\nBuffer: device: "
60output/x rq->prq[0].rqe[0].b.b_dev
61printf " data: "
62output/x rq->prq[0].rqe[0].b.b_data
63printf " length: "
64output/x rq->prq[0].rqe[0].b.b_bcount
65printf " drive offset: "
66output/x rq->prq[0].rqe[0].b.b_bio1.bio_offset
67printf " subdisk offset: "
68output/x rq->prq[0].rqe[0].sdoffset
69printf "\nFlags: "
70if (rq->prq[0].rqe[0].b.b_flags & 0x10)
71printf "busy "
72end
73if (rq->prq[0].rqe[0].b.b_flags & 0x200)
74printf "done "
75end
76if (rq->prq[0].rqe[0].b.b_flags & 0x800)
77printf "error "
78end
79if (rq->prq[0].rqe[0].b.b_flags & 0x100000)
80printf "read "
81end
82output/x rq->prq[0].rqe[0].b.b_flags
83printf "\nrq->prq [0].rqe[1].sdno: "
84output/x rq->prq[0].rqe[1].sdno
85printf "\nBuffer: device: "
86output/x rq->prq[0].rqe[1].b.b_dev
87printf " data: "
88output/x rq->prq[0].rqe[1].b.b_data
89printf " length: "
90output/x rq->prq[0].rqe[1].b.b_bcount
91printf " drive offset: "
92output/x rq->prq[0].rqe[1].b.b_bio1.bio_offset
93printf " subdisk offset: "
94output/x rq->prq[0].rqe[1].sdoffset
95printf "\nFlags: "
96output/x rq->prq[0].rqe[1].b.b_flags
97echo \n
98end
99define rqq1
100printf "\nrq->prq [1].rqe[0].sdno: "
101output/x rq->prq[1].rqe[0].sdno
102printf "\nBuffer: device: "
103output/x rq->prq[1].rqe[0].b.b_dev
104printf " data: "
105output/x rq->prq[1].rqe[0].b.b_data
106printf " length: "
107output/x rq->prq[1].rqe[0].b.b_bcount
108printf " drive offset: "
109output/x rq->prq[1].rqe[0].b.b_bio1.bio_offset
110printf " subdisk offset: "
111output/x rq->prq[1].rqe[0].sdoffset
112printf "\nFlags: "
113output/x rq->prq[1].rqe[0].b.b_flags
114printf "\nrq->prq [1].rqe[1].sdno: "
115output/x rq->prq[1].rqe[1].sdno
116printf "\nBuffer: device: "
117output/x rq->prq[1].rqe[1].b.b_dev
118printf " 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
122printf "\nFlags: "
123output/x rq->prq[1].rqe[1].b.b_flags
124echo \n
125end
126define xy
127bpp
128echo stripeoffset
129p stripeoffset
130echo stripebase
131p stripebase
132echo sdno
133p sdno
134echo sdoffset
135p sdoffset
136echo rqe->sectors
137p rqe->sectors
138echo rqe->sdoffset
139p rqe->sdoffset
140end
141# kernel equivalent of 'info -V'
142define 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
171end
172define 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
286end
287document rqinfo
288Show the Vinum request log buffer, like 'vinum info -V'
289end
290define meminfo
291printf "Block\tSequence\t  size\t  address\t  line\t\tfile\n"
292set $i = 0
293while $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
296end
297end
298document meminfo
299Equivalent of 'vinum info -v' command
300end
301