I received the following dtrace script from Peter dunlap,
thanks Peter.
fbt::stmf_dlun0_new_task:entry,
fbt::sbd_new_task:entry
{
this->task = (scsi_task_t *)arg0;
this->dbuf = (stmf_data_buf_t *)arg1;
printf("[%d:%03d:%03d:%03d] task=%p\n",
timestamp / 1000000000 , (timestamp / 1000000) % 1000,
(timestamp / 1000) % 1000, timestamp % 1000, this->task);
tracemem(this->task->task_cdb, 16);
}
fbt::stmf_dlun0_new_task:return,
fbt::sbd_new_task:return
{
printf("[%d:%03d:%03d:%03d] %s+%x returned %x",
timestamp / 1000000000 , (timestamp / 1000000) % 1000,
(timestamp / 1000) % 1000, timestamp % 1000,
probefunc, arg0, arg1);
}
fbt::stmf_task_alloc:entry
{
printf("[%d:%03d:%03d:%03d]\n",
timestamp / 1000000000 , (timestamp / 1000000) % 1000,
(timestamp / 1000) % 1000, timestamp % 1000);
}
fbt::stmf_task_alloc:return
{
printf("[%d:%03d:%03d:%03d] %s+%x returned %x",
timestamp / 1000000000 , (timestamp / 1000000) % 1000,
(timestamp / 1000) % 1000, timestamp % 1000,
probefunc, arg0, arg1);
}
fbt::stmf_get_ent_from_map:entry
{
this->sm = (stmf_lun_map_t *)arg0;
this->lun_num = (uint16_t)arg1;
printf("[%d:%03d:%03d:%03d] lun_map=%p lun_num=0x%x",
timestamp / 1000000000 , (timestamp / 1000000) % 1000,
(timestamp / 1000) % 1000, timestamp % 1000,
this->sm, this->lun_num);
}
fbt::stmf_get_ent_from_map:return
{
printf("[%d:%03d:%03d:%03d] %s+%x returned %x",
timestamp / 1000000000 , (timestamp / 1000000) % 1000,
(timestamp / 1000) % 1000, timestamp % 1000,
probefunc, arg0, arg1);
}
fbt::stmf_scsilib_send_status:entry
{
this->task = (scsi_task_t *)arg0;
this->status = (uint8_t)arg1;
this->saa = (uint32_t)arg2;
printf("[%d:%03d:%03d:%03d] task %p status=%02x saa=%08x\n",
timestamp / 1000000000 , (timestamp / 1000000) % 1000,
(timestamp / 1000) % 1000, timestamp % 1000,
this->task, this->status, this->saa);
stack();
}
--
This message posted from opensolaris.org