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