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