Lines Matching refs:task

13 scsi_task_free_data(struct spdk_scsi_task *task)  in scsi_task_free_data()  argument
15 if (task->alloc_len != 0) { in scsi_task_free_data()
16 spdk_dma_free(task->iov.iov_base); in scsi_task_free_data()
17 task->alloc_len = 0; in scsi_task_free_data()
20 task->iov.iov_base = NULL; in scsi_task_free_data()
21 task->iov.iov_len = 0; in scsi_task_free_data()
25 spdk_scsi_task_put(struct spdk_scsi_task *task) in spdk_scsi_task_put() argument
27 if (!task) { in spdk_scsi_task_put()
31 assert(task->ref > 0); in spdk_scsi_task_put()
32 task->ref--; in spdk_scsi_task_put()
34 if (task->ref == 0) { in spdk_scsi_task_put()
35 struct spdk_bdev_io *bdev_io = task->bdev_io; in spdk_scsi_task_put()
41 scsi_task_free_data(task); in spdk_scsi_task_put()
43 task->free_fn(task); in spdk_scsi_task_put()
48 spdk_scsi_task_construct(struct spdk_scsi_task *task, in spdk_scsi_task_construct() argument
52 assert(task != NULL); in spdk_scsi_task_construct()
56 task->cpl_fn = cpl_fn; in spdk_scsi_task_construct()
57 task->free_fn = free_fn; in spdk_scsi_task_construct()
59 task->ref++; in spdk_scsi_task_construct()
64 assert(task->iov.iov_base == NULL); in spdk_scsi_task_construct()
65 task->iovs = &task->iov; in spdk_scsi_task_construct()
66 task->iovcnt = 1; in spdk_scsi_task_construct()
70 scsi_task_alloc_data(struct spdk_scsi_task *task, uint32_t alloc_len) in scsi_task_alloc_data() argument
74 assert(task->alloc_len == 0); in scsi_task_alloc_data()
82 task->iov.iov_base = spdk_dma_zmalloc(zmalloc_len, 0, NULL); in scsi_task_alloc_data()
83 task->iov.iov_len = alloc_len; in scsi_task_alloc_data()
84 task->alloc_len = alloc_len; in scsi_task_alloc_data()
86 return task->iov.iov_base; in scsi_task_alloc_data()
90 spdk_scsi_task_scatter_data(struct spdk_scsi_task *task, const void *src, size_t buf_len) in spdk_scsi_task_scatter_data() argument
95 struct iovec *iovs = task->iovs; in spdk_scsi_task_scatter_data()
102 if (task->iovcnt == 1 && iovs[0].iov_base == NULL) { in spdk_scsi_task_scatter_data()
103 scsi_task_alloc_data(task, buf_len); in spdk_scsi_task_scatter_data()
104 iovs[0] = task->iov; in spdk_scsi_task_scatter_data()
107 for (i = 0; i < task->iovcnt; i++) { in spdk_scsi_task_scatter_data()
113 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in spdk_scsi_task_scatter_data()
122 for (i = 0; i < task->iovcnt; i++) { in spdk_scsi_task_scatter_data()
133 spdk_scsi_task_gather_data(struct spdk_scsi_task *task, int *len) in spdk_scsi_task_gather_data() argument
136 struct iovec *iovs = task->iovs; in spdk_scsi_task_gather_data()
140 for (i = 0; i < task->iovcnt; i++) { in spdk_scsi_task_gather_data()
158 for (i = 0; i < task->iovcnt; i++) { in spdk_scsi_task_gather_data()
168 spdk_scsi_task_set_data(struct spdk_scsi_task *task, void *data, uint32_t len) in spdk_scsi_task_set_data() argument
170 assert(task->iovcnt == 1); in spdk_scsi_task_set_data()
171 assert(task->alloc_len == 0); in spdk_scsi_task_set_data()
173 task->iovs[0].iov_base = data; in spdk_scsi_task_set_data()
174 task->iovs[0].iov_len = len; in spdk_scsi_task_set_data()
178 spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int asc, int ascq) in spdk_scsi_task_build_sense_data() argument
186 cp = task->sense_data; in spdk_scsi_task_build_sense_data()
215 task->sense_data_len = 18; in spdk_scsi_task_build_sense_data()
219 spdk_scsi_task_set_status(struct spdk_scsi_task *task, int sc, int sk, in spdk_scsi_task_set_status() argument
223 spdk_scsi_task_build_sense_data(task, sk, asc, ascq); in spdk_scsi_task_set_status()
225 task->status = sc; in spdk_scsi_task_set_status()
238 spdk_scsi_task_process_null_lun(struct spdk_scsi_task *task) in spdk_scsi_task_process_null_lun() argument
244 task->length = task->transfer_len; in spdk_scsi_task_process_null_lun()
245 if (task->cdb[0] == SPDK_SPC_INQUIRY) { in spdk_scsi_task_process_null_lun()
259 allocation_len = from_be16(&task->cdb[3]); in spdk_scsi_task_process_null_lun()
260 if (spdk_scsi_task_scatter_data(task, buffer, spdk_min(allocation_len, data_len)) >= 0) { in spdk_scsi_task_process_null_lun()
261 task->data_transferred = data_len; in spdk_scsi_task_process_null_lun()
262 task->status = SPDK_SCSI_STATUS_GOOD; in spdk_scsi_task_process_null_lun()
266 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in spdk_scsi_task_process_null_lun()
270 task->data_transferred = 0; in spdk_scsi_task_process_null_lun()
275 spdk_scsi_task_process_abort(struct spdk_scsi_task *task) in spdk_scsi_task_process_abort() argument
277 spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION, in spdk_scsi_task_process_abort()