Lines Matching refs:task
122 bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task, in bdev_scsi_inquiry() argument
142 lun = task->lun; in bdev_scsi_inquiry()
144 port = task->target_port; in bdev_scsi_inquiry()
151 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_inquiry()
228 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_inquiry()
730 task->data_transferred = 0; in bdev_scsi_inquiry()
731 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_inquiry()
759 uint8_t *data, struct spdk_scsi_task *task) in bdev_scsi_mode_sense_page() argument
776 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_mode_sense_page()
882 cp ? &cp[len] : NULL, task); in bdev_scsi_mode_sense_page()
886 cp ? &cp[len] : NULL, task); in bdev_scsi_mode_sense_page()
1006 cp ? &cp[len] : NULL, task); in bdev_scsi_mode_sense_page()
1014 cp ? &cp[len] : NULL, task); in bdev_scsi_mode_sense_page()
1019 cp ? &cp[len] : NULL, task); in bdev_scsi_mode_sense_page()
1034 int page, int subpage, uint8_t *data, struct spdk_scsi_task *task) in bdev_scsi_mode_sense() argument
1060 pages, task); in bdev_scsi_mode_sense()
1112 struct spdk_scsi_task *task = cb_arg; in bdev_scsi_task_complete_cmd() local
1119 spdk_scsi_task_set_status(task, sc, sk, asc, ascq); in bdev_scsi_task_complete_cmd()
1120 scsi_lun_complete_task(task->lun, task); in bdev_scsi_task_complete_cmd()
1127 struct spdk_scsi_task *task = cb_arg; in bdev_scsi_read_task_complete_cmd() local
1130 task->bdev_io = bdev_io; in bdev_scsi_read_task_complete_cmd()
1134 spdk_scsi_task_set_status(task, sc, sk, asc, ascq); in bdev_scsi_read_task_complete_cmd()
1135 scsi_lun_complete_task(task->lun, task); in bdev_scsi_read_task_complete_cmd()
1142 struct spdk_scsi_task *task = cb_arg; in bdev_scsi_task_complete_reset() local
1147 task->response = SPDK_SCSI_TASK_MGMT_RESP_SUCCESS; in bdev_scsi_task_complete_reset()
1150 scsi_lun_complete_reset_task(task->lun, task); in bdev_scsi_task_complete_reset()
1154 bdev_scsi_queue_io(struct spdk_scsi_task *task, spdk_bdev_io_wait_cb cb_fn, void *cb_arg) in bdev_scsi_queue_io() argument
1156 struct spdk_scsi_lun *lun = task->lun; in bdev_scsi_queue_io()
1161 task->bdev_io_wait.bdev = bdev; in bdev_scsi_queue_io()
1162 task->bdev_io_wait.cb_fn = cb_fn; in bdev_scsi_queue_io()
1163 task->bdev_io_wait.cb_arg = cb_arg; in bdev_scsi_queue_io()
1165 rc = spdk_bdev_queue_io_wait(bdev, ch, &task->bdev_io_wait); in bdev_scsi_queue_io()
1173 struct spdk_io_channel *bdev_ch, struct spdk_scsi_task *task, in bdev_scsi_sync() argument
1188 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_sync()
1196 bdev_scsi_task_complete_cmd, task); in bdev_scsi_sync()
1200 bdev_scsi_queue_io(task, bdev_scsi_process_block_resubmit, task); in bdev_scsi_sync()
1204 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_sync()
1210 task->data_transferred = 0; in bdev_scsi_sync()
1236 struct spdk_io_channel *bdev_ch, struct spdk_scsi_task *task, in bdev_scsi_readwrite() argument
1244 task->data_transferred = 0; in bdev_scsi_readwrite()
1246 if (spdk_unlikely(task->dxfer_dir != SPDK_SCSI_DIR_NONE && in bdev_scsi_readwrite()
1247 task->dxfer_dir != (is_read ? SPDK_SCSI_DIR_FROM_DEV : SPDK_SCSI_DIR_TO_DEV))) { in bdev_scsi_readwrite()
1261 task->status = SPDK_SCSI_STATUS_GOOD; in bdev_scsi_readwrite()
1279 if (xfer_len * block_size > task->transfer_len) { in bdev_scsi_readwrite()
1281 xfer_len, block_size, task->transfer_len); in bdev_scsi_readwrite()
1286 if (_bytes_to_blocks(block_size, task->offset, &offset_blocks, task->length, &num_blocks) != 0) { in bdev_scsi_readwrite()
1288 task->offset, task->length); in bdev_scsi_readwrite()
1299 rc = spdk_bdev_readv_blocks(bdev_desc, bdev_ch, task->iovs, task->iovcnt, in bdev_scsi_readwrite()
1301 bdev_scsi_read_task_complete_cmd, task); in bdev_scsi_readwrite()
1306 if (task->iovcnt != 1 || task->iovs[0].iov_len != (block_size * 2)) { in bdev_scsi_readwrite()
1307 if (task->iovcnt != 1) { in bdev_scsi_readwrite()
1308 SPDK_ERRLOG("task's iovcnt %" PRIu32 " is not 1.\n", task->iovcnt); in bdev_scsi_readwrite()
1311 task->iovs[0].iov_len); in bdev_scsi_readwrite()
1318 iov = &task->iovs[0]; in bdev_scsi_readwrite()
1320 task->caw_iov.iov_len = len; in bdev_scsi_readwrite()
1321 task->caw_iov.iov_base = (uint8_t *)(iov->iov_base) + len; in bdev_scsi_readwrite()
1325 &task->caw_iov, 1, offset_blocks, 1, bdev_scsi_task_complete_cmd, task); in bdev_scsi_readwrite()
1327 rc = spdk_bdev_writev_blocks(bdev_desc, bdev_ch, task->iovs, task->iovcnt, in bdev_scsi_readwrite()
1329 bdev_scsi_task_complete_cmd, task); in bdev_scsi_readwrite()
1334 bdev_scsi_queue_io(task, bdev_scsi_process_block_resubmit, task); in bdev_scsi_readwrite()
1342 task->data_transferred = task->length; in bdev_scsi_readwrite()
1346 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, sk, asc, in bdev_scsi_readwrite()
1352 struct spdk_scsi_task *task; member
1376 struct spdk_scsi_task *task = ctx->task; in bdev_scsi_split() local
1377 uint8_t opcode = task->cdb[0]; in bdev_scsi_split()
1392 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_split()
1411 bdev_scsi_queue_io(task, bdev_scsi_split_resubmit, ctx); in bdev_scsi_split()
1424 struct spdk_scsi_task *task = ctx->task; in bdev_scsi_task_complete_split_cmd() local
1429 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_task_complete_split_cmd()
1446 scsi_lun_complete_task(task->lun, task); in bdev_scsi_task_complete_split_cmd()
1492 struct spdk_scsi_task *task = ctx->task; in _bdev_scsi_unmap() local
1493 struct spdk_scsi_lun *lun = task->lun; in _bdev_scsi_unmap()
1512 bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_scsi_task *task) in bdev_scsi_unmap() argument
1519 assert(task->status == SPDK_SCSI_STATUS_GOOD); in bdev_scsi_unmap()
1523 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_unmap()
1530 ctx->task = task; in bdev_scsi_unmap()
1535 if (task->iovcnt == 1) { in bdev_scsi_unmap()
1536 data = (uint8_t *)task->iovs[0].iov_base; in bdev_scsi_unmap()
1537 data_len = task->iovs[0].iov_len; in bdev_scsi_unmap()
1540 data = spdk_scsi_task_gather_data(task, &data_len); in bdev_scsi_unmap()
1553 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_unmap()
1566 struct spdk_scsi_task *task = ctx->task; in _bdev_scsi_write_same() local
1567 struct spdk_scsi_lun *lun = task->lun; in _bdev_scsi_write_same()
1571 return spdk_bdev_writev_blocks(lun->bdev_desc, lun->io_channel, task->iovs, task->iovcnt, in _bdev_scsi_write_same()
1577 struct spdk_io_channel *bdev_ch, struct spdk_scsi_task *task, in bdev_scsi_write_same() argument
1585 task->data_transferred = 0; in bdev_scsi_write_same()
1587 if (spdk_unlikely(task->dxfer_dir != SPDK_SCSI_DIR_TO_DEV)) { in bdev_scsi_write_same()
1593 if (spdk_unlikely(task->transfer_len != block_size)) { in bdev_scsi_write_same()
1595 task->transfer_len, block_size); in bdev_scsi_write_same()
1600 task->status = SPDK_SCSI_STATUS_GOOD; in bdev_scsi_write_same()
1622 if (_bytes_to_blocks(block_size, task->offset, &offset_blocks, in bdev_scsi_write_same()
1623 (uint64_t)task->length * xfer_len, in bdev_scsi_write_same()
1626 task->offset, task->length); in bdev_scsi_write_same()
1640 ctx->task = task; in bdev_scsi_write_same()
1647 task->data_transferred = task->length; in bdev_scsi_write_same()
1652 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_write_same()
1658 bdev_scsi_process_block(struct spdk_scsi_task *task) in bdev_scsi_process_block() argument
1660 struct spdk_scsi_lun *lun = task->lun; in bdev_scsi_process_block()
1665 uint8_t *cdb = task->cdb; in bdev_scsi_process_block()
1679 task, lba, xfer_len, in bdev_scsi_process_block()
1687 task, lba, xfer_len, in bdev_scsi_process_block()
1695 task, lba, xfer_len, in bdev_scsi_process_block()
1702 task, lba, xfer_len, in bdev_scsi_process_block()
1714 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_process_block()
1725 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_process_block()
1733 task, lba, num_blocks, false, true); in bdev_scsi_process_block()
1747 len = spdk_min(task->length, sizeof(buffer)); in bdev_scsi_process_block()
1748 if (spdk_scsi_task_scatter_data(task, buffer, len) < 0) { in bdev_scsi_process_block()
1752 task->data_transferred = len; in bdev_scsi_process_block()
1753 task->status = SPDK_SCSI_STATUS_GOOD; in bdev_scsi_process_block()
1782 if (spdk_scsi_task_scatter_data(task, buffer, len) < 0) { in bdev_scsi_process_block()
1786 task->data_transferred = len; in bdev_scsi_process_block()
1787 task->status = SPDK_SCSI_STATUS_GOOD; in bdev_scsi_process_block()
1810 return bdev_scsi_sync(bdev, lun->bdev_desc, lun->io_channel, task, lba, len); in bdev_scsi_process_block()
1814 return bdev_scsi_unmap(bdev, task); in bdev_scsi_process_block()
1820 task, lba, xfer_len, cdb[1]); in bdev_scsi_process_block()
1826 task, lba, xfer_len, cdb[1]); in bdev_scsi_process_block()
1839 struct spdk_scsi_task *task = arg; in bdev_scsi_process_block_resubmit() local
1841 bdev_scsi_process_block(task); in bdev_scsi_process_block_resubmit()
1845 bdev_scsi_check_len(struct spdk_scsi_task *task, int len, int min_len) in bdev_scsi_check_len() argument
1852 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_check_len()
1860 bdev_scsi_process_primary(struct spdk_scsi_task *task) in bdev_scsi_process_primary() argument
1862 struct spdk_scsi_lun *lun = task->lun; in bdev_scsi_process_primary()
1866 uint8_t *cdb = task->cdb; in bdev_scsi_process_primary()
1880 rc = bdev_scsi_inquiry(bdev, task, cdb, data, data_len); in bdev_scsi_process_primary()
1896 rc = bdev_scsi_check_len(task, alloc_len, 16); in bdev_scsi_process_primary()
1904 rc = bdev_scsi_report_luns(task->lun, sel, data, data_len); in bdev_scsi_process_primary()
1907 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_process_primary()
1934 rc = bdev_scsi_check_len(task, pllen, md); in bdev_scsi_process_primary()
1939 data = spdk_scsi_task_gather_data(task, &rc); in bdev_scsi_process_primary()
1945 rc = bdev_scsi_check_len(task, data_len, spdk_max(pllen, md)); in bdev_scsi_process_primary()
1976 NULL, task); in bdev_scsi_process_primary()
1989 data, task); in bdev_scsi_process_primary()
1992 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_process_primary()
2007 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_process_primary()
2021 spdk_scsi_task_build_sense_data(task, sk, asc, ascq); in bdev_scsi_process_primary()
2023 data_len = task->sense_data_len; in bdev_scsi_process_primary()
2026 memcpy(data, task->sense_data, data_len); in bdev_scsi_process_primary()
2040 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_process_primary()
2061 rc = bdev_scsi_check_len(task, pllen, 24); in bdev_scsi_process_primary()
2066 data = spdk_scsi_task_gather_data(task, &rc); in bdev_scsi_process_primary()
2076 rc = scsi_pr_out(task, cdb, data, data_len); in bdev_scsi_process_primary()
2089 rc = scsi_pr_in(task, cdb, data, data_len); in bdev_scsi_process_primary()
2094 rc = scsi2_reserve(task, cdb); in bdev_scsi_process_primary()
2105 rc = scsi2_release(task); in bdev_scsi_process_primary()
2114 spdk_scsi_task_scatter_data(task, data, spdk_min(alloc_len, data_len)); in bdev_scsi_process_primary()
2119 task->data_transferred = rc; in bdev_scsi_process_primary()
2120 task->status = SPDK_SCSI_STATUS_GOOD; in bdev_scsi_process_primary()
2131 bdev_scsi_execute(struct spdk_scsi_task *task) in bdev_scsi_execute() argument
2135 if ((rc = bdev_scsi_process_block(task)) == SPDK_SCSI_TASK_UNKNOWN) { in bdev_scsi_execute()
2136 if ((rc = bdev_scsi_process_primary(task)) == SPDK_SCSI_TASK_UNKNOWN) { in bdev_scsi_execute()
2137 SPDK_DEBUGLOG(scsi, "unsupported SCSI OP=0x%x\n", task->cdb[0]); in bdev_scsi_execute()
2139 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in bdev_scsi_execute()
2153 struct spdk_scsi_task *task = arg; in bdev_scsi_reset_resubmit() local
2155 bdev_scsi_reset(task); in bdev_scsi_reset_resubmit()
2159 bdev_scsi_reset(struct spdk_scsi_task *task) in bdev_scsi_reset() argument
2161 struct spdk_scsi_lun *lun = task->lun; in bdev_scsi_reset()
2165 task); in bdev_scsi_reset()
2167 bdev_scsi_queue_io(task, bdev_scsi_reset_resubmit, task); in bdev_scsi_reset()
2172 bdev_scsi_get_dif_ctx(struct spdk_bdev *bdev, struct spdk_scsi_task *task, in bdev_scsi_get_dif_ctx() argument
2184 cdb = task->cdb; in bdev_scsi_get_dif_ctx()
2185 data_offset = task->offset; in bdev_scsi_get_dif_ctx()