Lines Matching refs:tmf
59 VirtIOSCSICtrlTMFResp tmf; member
65 VirtIOSCSICtrlTMFReq tmf; member
302 static void virtio_scsi_tmf_dec_remaining(VirtIOSCSIReq *tmf) in virtio_scsi_tmf_dec_remaining() argument
304 if (qatomic_fetch_dec(&tmf->remaining) == 1) { in virtio_scsi_tmf_dec_remaining()
305 trace_virtio_scsi_tmf_resp(virtio_scsi_get_lun(tmf->req.tmf.lun), in virtio_scsi_tmf_dec_remaining()
306 tmf->req.tmf.tag, tmf->resp.tmf.response); in virtio_scsi_tmf_dec_remaining()
308 virtio_scsi_complete_req(tmf, &tmf->dev->ctrl_lock); in virtio_scsi_tmf_dec_remaining()
322 static void virtio_scsi_tmf_cancel_req(VirtIOSCSIReq *tmf, SCSIRequest *r) in virtio_scsi_tmf_cancel_req() argument
329 qatomic_inc(&tmf->remaining); in virtio_scsi_tmf_cancel_req()
333 notifier->tmf_req = tmf; in virtio_scsi_tmf_cancel_req()
341 VirtIOSCSIReq *tmf = opaque; in virtio_scsi_do_tmf_aio_context() local
342 VirtIOSCSI *s = tmf->dev; in virtio_scsi_do_tmf_aio_context()
343 SCSIDevice *d = virtio_scsi_device_get(s, tmf->req.tmf.lun); in virtio_scsi_do_tmf_aio_context()
348 tmf->resp.tmf.response = VIRTIO_SCSI_S_BAD_TARGET; in virtio_scsi_do_tmf_aio_context()
349 virtio_scsi_tmf_dec_remaining(tmf); in virtio_scsi_do_tmf_aio_context()
358 switch (tmf->req.tmf.subtype) { in virtio_scsi_do_tmf_aio_context()
378 if (match_tag && cmd_req->req.cmd.tag != tmf->req.tmf.tag) { in virtio_scsi_do_tmf_aio_context()
381 virtio_scsi_tmf_cancel_req(tmf, r); in virtio_scsi_do_tmf_aio_context()
386 virtio_scsi_tmf_dec_remaining(tmf); in virtio_scsi_do_tmf_aio_context()
419 static void virtio_scsi_defer_tmf_to_aio_context(VirtIOSCSIReq *tmf, in virtio_scsi_defer_tmf_to_aio_context() argument
423 qatomic_inc(&tmf->remaining); in virtio_scsi_defer_tmf_to_aio_context()
426 aio_bh_schedule_oneshot(ctx, virtio_scsi_do_tmf_aio_context, tmf); in virtio_scsi_defer_tmf_to_aio_context()
435 VirtIOSCSIReq *tmf) in find_aio_context_for_tmf_tag() argument
447 if (cmd_req->req.cmd.tag == tmf->req.tmf.tag) { in find_aio_context_for_tmf_tag()
460 SCSIDevice *d = virtio_scsi_device_get(s, req->req.tmf.lun); in virtio_scsi_do_tmf()
466 req->resp.tmf.response = VIRTIO_SCSI_S_OK; in virtio_scsi_do_tmf()
472 req->req.tmf.subtype = in virtio_scsi_do_tmf()
473 virtio_tswap32(VIRTIO_DEVICE(s), req->req.tmf.subtype); in virtio_scsi_do_tmf()
475 trace_virtio_scsi_tmf_req(virtio_scsi_get_lun(req->req.tmf.lun), in virtio_scsi_do_tmf()
476 req->req.tmf.tag, req->req.tmf.subtype); in virtio_scsi_do_tmf()
478 switch (req->req.tmf.subtype) { in virtio_scsi_do_tmf()
483 if (d->lun != virtio_scsi_get_lun(req->req.tmf.lun)) { in virtio_scsi_do_tmf()
499 if (d->lun != virtio_scsi_get_lun(req->req.tmf.lun)) { in virtio_scsi_do_tmf()
508 if (cmd_req->req.cmd.tag == req->req.tmf.tag) { in virtio_scsi_do_tmf()
514 req->resp.tmf.response = VIRTIO_SCSI_S_FUNCTION_SUCCEEDED; in virtio_scsi_do_tmf()
524 if (d->lun != virtio_scsi_get_lun(req->req.tmf.lun)) { in virtio_scsi_do_tmf()
534 int target = req->req.tmf.lun[1]; in virtio_scsi_do_tmf()
557 if (d->lun != virtio_scsi_get_lun(req->req.tmf.lun)) { in virtio_scsi_do_tmf()
582 if (d->lun != virtio_scsi_get_lun(req->req.tmf.lun)) { in virtio_scsi_do_tmf()
595 req->resp.tmf.response = VIRTIO_SCSI_S_FUNCTION_SUCCEEDED; in virtio_scsi_do_tmf()
603 req->resp.tmf.response = VIRTIO_SCSI_S_FUNCTION_REJECTED; in virtio_scsi_do_tmf()
611 req->resp.tmf.response = VIRTIO_SCSI_S_INCORRECT_LUN; in virtio_scsi_do_tmf()
616 req->resp.tmf.response = VIRTIO_SCSI_S_BAD_TARGET; in virtio_scsi_do_tmf()
660 trace_virtio_scsi_tmf_resp(virtio_scsi_get_lun(req->req.tmf.lun), in virtio_scsi_handle_ctrl_req()
661 req->req.tmf.tag, in virtio_scsi_handle_ctrl_req()
662 req->resp.tmf.response); in virtio_scsi_handle_ctrl_req()