Kun-Peng Rokh Wang-Sun Microsystems
2007-Sep-03 14:37 UTC
[dtrace-discuss] about dtrace buf
Hi expert,
i want take a look at the buf content by tracing fbt::scsi_transport.
The core part of my dtrace script just like following:
fbt::scsi_transport:entry
/execname == "dd"/
{
this->pkt = (struct scsi_pkt *)arg0;
this->buf = (struct buf *) this->pkt->pkt_private;
this->cdb = this->pkt->pkt_cdbp;
this->b_flags = (int)this->buf->b_flags;
printf(" this->b_flags=0x%x", this->b_flags);
printf(" ku=%2s", this->b_flags & B_PAGEIO?
"U" : "K");
printf(" this->bcount=0x%x", this->buf->b_bcount);
this->buf_addr = (unsigned char *)(this->buf->b_un.b_addr);
printf(" buf_addr=%a", this->buf->b_un.b_addr);
printf( " %a " ,
copyin((uintptr_t)this->buf->b_un.b_addr, 4 ));
}
When I run dd like following:
dd if=/etc/driver_aliases of=/dev/dsk/c2t2d0s0 oseek=1000 bs=1k count
I will encounter following problem:
1 21379 scsi_transport:entry this->b_flags=0x2080051 ku=
U this->bcount=1000 buf_addr=0x0
dtrace: error on enabled probe ID 3 (ID 21379:
fbt:scsi:scsi_transport:entry): invalid address (0x0) in action #1 at
DIF offset 52
Would you please tell me:
1. Why buf_addr is 0x0?
2. What''s wrong about the copyin?
Thanks a lot!
-Rokh