Lines Matching refs:task

252 static inline struct fd_request *FILE_REQ(struct se_task *task)
254 return container_of(task, struct fd_request, fd_task);
272 static int fd_do_readv(struct se_task *task)
274 struct fd_request *req = FILE_REQ(task);
278 struct scatterlist *sg = task->task_sg;
281 loff_t pos = (task->task_lba *
285 iov = kzalloc(sizeof(struct iovec) * task->task_sg_nents, GFP_KERNEL);
291 for_each_sg(task->task_sg, sg, task->task_sg_nents, i) {
298 ret = vfs_readv(fd, &iov[0], task->task_sg_nents, &pos);
308 if (ret < 0 || ret != task->task_size) {
311 (int)task->task_size);
325 static int fd_do_writev(struct se_task *task)
327 struct fd_request *req = FILE_REQ(task);
331 struct scatterlist *sg = task->task_sg;
334 loff_t pos = (task->task_lba *
338 iov = kzalloc(sizeof(struct iovec) * task->task_sg_nents, GFP_KERNEL);
344 for_each_sg(task->task_sg, sg, task->task_sg_nents, i) {
351 ret = vfs_writev(fd, &iov[0], task->task_sg_nents, &pos);
356 if (ret < 0 || ret != task->task_size) {
364 static void fd_emulate_sync_cache(struct se_task *task)
366 struct se_cmd *cmd = task->task_se_cmd;
406 static void fd_emulate_write_fua(struct se_cmd *cmd, struct se_task *task)
410 loff_t start = task->task_lba * dev->se_sub_dev->se_dev_attrib.block_size;
411 loff_t end = start + task->task_size;
415 task->task_lba, task->task_size);
422 static int fd_do_task(struct se_task *task)
424 struct se_cmd *cmd = task->task_se_cmd;
432 if (task->task_data_direction == DMA_FROM_DEVICE) {
433 ret = fd_do_readv(task);
435 ret = fd_do_writev(task);
446 fd_emulate_write_fua(cmd, task);
456 task->task_scsi_status = GOOD;
457 transport_complete_task(task, 1);
466 static void fd_free_task(struct se_task *task)
468 struct fd_request *req = FILE_REQ(task);