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