scsi_task
scsi_task_t scsi_task;
if (mdb_vread(&scsi_task, sizeof (scsi_task_t),
itask.it_stmf_task, good_scsi_task ? scsi_task.task_lu_private : 0,
scsi_task.task_lun_no[0], scsi_task.task_lun_no[1],
scsi_task.task_lun_no[2], scsi_task.task_lun_no[3],
scsi_task.task_lun_no[4], scsi_task.task_lun_no[5],
scsi_task.task_lun_no[6], scsi_task.task_lun_no[7]);
scsi_task.task_cdb_length);
if (mdb_dumpptr((uintptr_t)scsi_task.task_cdb,
scsi_task.task_cdb_length,
scsi_task.task_cdb);
scsi_task.task_cur_nbufs,
scsi_task.task_max_nbufs);
scsi_task.task_expected_xfer_length,
scsi_task.task_cmd_xfer_length,
scsi_task.task_nbytes_transferred);
struct scsi_task task;
if (mdb_vread(&task, sizeof (struct scsi_task),
!= sizeof (struct scsi_task)) {
struct scsi_task task;
if (mdb_vread(&task, sizeof (struct scsi_task),
!= sizeof (struct scsi_task)) {
sbd_compare_and_write(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_send_miscompare_status(struct scsi_task *task, uint32_t miscompare_off)
sbd_ats_release_resources(struct scsi_task *task)
sbd_handle_ats_xfer_completion(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_do_ats_xfer(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_handle_recv_copy_results(struct scsi_task *task,
cpmgr_handle_t cpmgr_create(struct scsi_task *task, uint8_t *params);
struct scsi_task *as_cur_ats_task;
void sbd_handle_ats_xfer_completion(struct scsi_task *, struct sbd_cmd *,
void sbd_do_ats_xfer(struct scsi_task *, struct sbd_cmd *,
void sbd_handle_recv_copy_results(struct scsi_task *, struct stmf_data_buf *);
void sbd_free_ats_handle(struct scsi_task *, struct sbd_cmd *);
struct scsi_task;
sbd_data_read(sbd_lu_t *sl, struct scsi_task *task,
sbd_data_write(sbd_lu_t *sl, struct scsi_task *task,
stmf_status_t sbd_task_alloc(struct scsi_task *task);
void sbd_new_task(struct scsi_task *task, struct stmf_data_buf *initial_dbuf);
void sbd_dbuf_xfer_done(struct scsi_task *task, struct stmf_data_buf *dbuf);
void sbd_send_status_done(struct scsi_task *task);
void sbd_task_free(struct scsi_task *task);
void sbd_task_poll(struct scsi_task *task);
void sbd_dbuf_free(struct scsi_task *task, struct stmf_data_buf *dbuf);
DTRACE_PROBE4(sbd__xfer, struct scsi_task *, task,
sbd_do_write_xfer(struct scsi_task *task, sbd_cmd_t *scmd,
static void sbd_handle_sync_cache(struct scsi_task *task,
void sbd_handle_read_xfer_completion(struct scsi_task *task,
sbd_do_sgl_write_xfer(struct scsi_task *task, sbd_cmd_t *scmd, int first_xfer)
void sbd_do_sgl_write_xfer(struct scsi_task *task, sbd_cmd_t *scmd,
static void sbd_do_write_same_xfer(struct scsi_task *task, sbd_cmd_t *scmd,
static void sbd_handle_write_same_xfer_completion(struct scsi_task *task,
sbd_handle_write_xfer_completion(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_do_read_xfer(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_handle_write(struct scsi_task *task, struct stmf_data_buf *initial_dbuf)
sbd_handle_short_read_xfer_completion(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_handle_read_capacity(struct scsi_task *task,
sbd_handle_mode_sense(struct scsi_task *task,
sbd_handle_identifying_info(struct scsi_task *task,
sbd_do_sgl_read_xfer(struct scsi_task *task, sbd_cmd_t *scmd, int first_xfer)
sbd_write_same_data_common(sbd_lu_t *sl, struct scsi_task *task, uint64_t addr,
sbd_write_same_data(struct scsi_task *task, sbd_cmd_t *scmd)
sbd_write_same_release_resources(struct scsi_task *task)
sbd_handle_write_same_xfer_completion(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_do_write_same_xfer(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_handle_inquiry(struct scsi_task *task, struct stmf_data_buf *initial_dbuf)
sbd_task_alloc(struct scsi_task *task)
sbd_check_reservation_conflict(struct sbd_lu *sl, struct scsi_task *task)
sbd_new_task(struct scsi_task *task, struct stmf_data_buf *initial_dbuf)
DTRACE_PROBE1(itl__nexus__start, scsi_task *, task);
sbd_dbuf_xfer_done(struct scsi_task *task, struct stmf_data_buf *dbuf)
sbd_send_status_done(struct scsi_task *task)
sbd_task_free(struct scsi_task *task)
sbd_task_poll(struct scsi_task *task)
sbd_dbuf_free(struct scsi_task *task, struct stmf_data_buf *dbuf)
sbd_handle_sync_cache(struct scsi_task *task,
DTRACE_PROBE4(sbd__xfer, struct scsi_task *, task,
sbd_handle_read_xfer_completion(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_handle_sgl_read_xfer_completion(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_handle_sgl_write_xfer_completion(struct scsi_task *task, sbd_cmd_t *scmd,
sbd_handle_read(struct scsi_task *task, struct stmf_data_buf *initial_dbuf)
struct scsi_task *, task,
stmf_status_t sbd_task_alloc(struct scsi_task *task);
void sbd_new_task(struct scsi_task *task, struct stmf_data_buf *initial_dbuf);
void sbd_dbuf_xfer_done(struct scsi_task *task, struct stmf_data_buf *dbuf);
void sbd_send_status_done(struct scsi_task *task);
void sbd_task_free(struct scsi_task *task);
srpt_ioc_ds_alloc_dbuf(struct scsi_task *task, uint32_t size,
stmf_data_buf_t *srpt_ioc_ds_alloc_dbuf(struct scsi_task *task,
srpt_stp_task_poll(struct scsi_task *task)
srpt_stp_xfer_data(struct scsi_task *task, struct stmf_data_buf *dbuf,
static stmf_status_t srpt_stp_xfer_data(struct scsi_task *task,
stmf_status_t srpt_stp_send_status(struct scsi_task *task,
static void srpt_stp_task_free(struct scsi_task *task);
static void srpt_stp_task_poll(struct scsi_task *task);
srpt_stp_send_status(struct scsi_task *task, uint32_t ioflags)
srpt_stp_task_free(struct scsi_task *task)
struct scsi_task *task;
task = (struct scsi_task *)arg;
stmf_status_t srpt_stp_send_status(struct scsi_task *task,
stmf_status_t stmf_lun_reset_poll(stmf_lu_t *lu, struct scsi_task *task,
void stmf_target_reset_poll(struct scsi_task *task);
struct scsi_task *
stmf_dlun0_task_poll(struct scsi_task *task)
stmf_dlun0_task_done(struct scsi_task *task)
stmf_lun_reset_poll(stmf_lu_t *lu, struct scsi_task *task, int target_reset)
stmf_target_reset_poll(struct scsi_task *task)
void stmf_lu_xfer_done(struct scsi_task *task, boolean_t read,
stmf_status_t (*lu_task_alloc)(struct scsi_task *task);
void (*lu_new_task)(struct scsi_task *task,
void (*lu_dbuf_xfer_done)(struct scsi_task *task,
void (*lu_send_status_done)(struct scsi_task *task);
void (*lu_task_free)(struct scsi_task *task);
void (*lu_task_poll)(struct scsi_task *task);
void (*lu_dbuf_free)(struct scsi_task *task,
void (*lu_task_done)(struct scsi_task *task);
stmf_data_buf_t *(*ds_alloc_data_buf)(struct scsi_task *task,
stmf_status_t (*ds_setup_dbuf)(struct scsi_task *task,
stmf_status_t (*lport_xfer_data)(struct scsi_task *task,
stmf_status_t (*lport_send_status)(struct scsi_task *task,
void (*lport_task_free)(struct scsi_task *task);
void (*lport_task_poll)(struct scsi_task *task);
scsi_task_t *scsi_task,
scsi_task_t *scsi_task,
struct scsi_task *stmf_task_alloc(struct stmf_local_port *lport,
struct stmf_lu *stmf_check_and_hold_lu(struct scsi_task *task, uint8_t *guid);
int stmf_is_task_being_aborted(struct scsi_task *task);
struct scsi_task;