Commit 42bf829eee0e36371a3df43978b14572c716cbe7
Committed by
Nicholas Bellinger
1 parent
c0427f1556
Exists in
master
and in
6 other branches
target: Cleanup unused se_task bits
This is a squashed version of the following se_task cleanup patches: target: remove the unused task_state_flags field in se_task target: remove the unused se_obj_ptr field in se_task target: remove the se_dev field in se_task Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Showing 7 changed files with 27 additions and 41 deletions Side-by-side Diff
drivers/target/target_core_file.c
... | ... | @@ -272,13 +272,14 @@ |
272 | 272 | static int fd_do_readv(struct se_task *task) |
273 | 273 | { |
274 | 274 | struct fd_request *req = FILE_REQ(task); |
275 | - struct fd_dev *dev = req->fd_task.se_dev->dev_ptr; | |
275 | + struct se_device *se_dev = req->fd_task.task_se_cmd->se_dev; | |
276 | + struct fd_dev *dev = se_dev->dev_ptr; | |
276 | 277 | struct file *fd = dev->fd_file; |
277 | 278 | struct scatterlist *sg = task->task_sg; |
278 | 279 | struct iovec *iov; |
279 | 280 | mm_segment_t old_fs; |
280 | 281 | loff_t pos = (task->task_lba * |
281 | - task->se_dev->se_sub_dev->se_dev_attrib.block_size); | |
282 | + se_dev->se_sub_dev->se_dev_attrib.block_size); | |
282 | 283 | int ret = 0, i; |
283 | 284 | |
284 | 285 | iov = kzalloc(sizeof(struct iovec) * task->task_sg_nents, GFP_KERNEL); |
285 | 286 | |
... | ... | @@ -324,13 +325,14 @@ |
324 | 325 | static int fd_do_writev(struct se_task *task) |
325 | 326 | { |
326 | 327 | struct fd_request *req = FILE_REQ(task); |
327 | - struct fd_dev *dev = req->fd_task.se_dev->dev_ptr; | |
328 | + struct se_device *se_dev = req->fd_task.task_se_cmd->se_dev; | |
329 | + struct fd_dev *dev = se_dev->dev_ptr; | |
328 | 330 | struct file *fd = dev->fd_file; |
329 | 331 | struct scatterlist *sg = task->task_sg; |
330 | 332 | struct iovec *iov; |
331 | 333 | mm_segment_t old_fs; |
332 | 334 | loff_t pos = (task->task_lba * |
333 | - task->se_dev->se_sub_dev->se_dev_attrib.block_size); | |
335 | + se_dev->se_sub_dev->se_dev_attrib.block_size); | |
334 | 336 | int ret, i = 0; |
335 | 337 | |
336 | 338 | iov = kzalloc(sizeof(struct iovec) * task->task_sg_nents, GFP_KERNEL); |
drivers/target/target_core_iblock.c
... | ... | @@ -499,7 +499,7 @@ |
499 | 499 | static void iblock_bio_destructor(struct bio *bio) |
500 | 500 | { |
501 | 501 | struct se_task *task = bio->bi_private; |
502 | - struct iblock_dev *ib_dev = task->se_dev->dev_ptr; | |
502 | + struct iblock_dev *ib_dev = task->task_se_cmd->se_dev->dev_ptr; | |
503 | 503 | |
504 | 504 | bio_free(bio, ib_dev->ibd_bio_set); |
505 | 505 | } |
... | ... | @@ -507,7 +507,7 @@ |
507 | 507 | static struct bio * |
508 | 508 | iblock_get_bio(struct se_task *task, sector_t lba, u32 sg_num) |
509 | 509 | { |
510 | - struct iblock_dev *ib_dev = task->se_dev->dev_ptr; | |
510 | + struct iblock_dev *ib_dev = task->task_se_cmd->se_dev->dev_ptr; | |
511 | 511 | struct iblock_req *ib_req = IBLOCK_REQ(task); |
512 | 512 | struct bio *bio; |
513 | 513 |
drivers/target/target_core_pscsi.c
... | ... | @@ -676,7 +676,7 @@ |
676 | 676 | */ |
677 | 677 | static int pscsi_transport_complete(struct se_task *task) |
678 | 678 | { |
679 | - struct pscsi_dev_virt *pdv = task->se_dev->dev_ptr; | |
679 | + struct pscsi_dev_virt *pdv = task->task_se_cmd->se_dev->dev_ptr; | |
680 | 680 | struct scsi_device *sd = pdv->pdv_sd; |
681 | 681 | int result; |
682 | 682 | struct pscsi_plugin_task *pt = PSCSI_TASK(task); |
... | ... | @@ -962,7 +962,7 @@ |
962 | 962 | static int pscsi_map_sg(struct se_task *task, struct scatterlist *task_sg, |
963 | 963 | struct bio **hbio) |
964 | 964 | { |
965 | - struct pscsi_dev_virt *pdv = task->se_dev->dev_ptr; | |
965 | + struct pscsi_dev_virt *pdv = task->task_se_cmd->se_dev->dev_ptr; | |
966 | 966 | u32 task_sg_num = task->task_sg_nents; |
967 | 967 | struct bio *bio = NULL, *tbio = NULL; |
968 | 968 | struct page *page; |
... | ... | @@ -1062,7 +1062,7 @@ |
1062 | 1062 | |
1063 | 1063 | static int pscsi_do_task(struct se_task *task) |
1064 | 1064 | { |
1065 | - struct pscsi_dev_virt *pdv = task->se_dev->dev_ptr; | |
1065 | + struct pscsi_dev_virt *pdv = task->task_se_cmd->se_dev->dev_ptr; | |
1066 | 1066 | struct pscsi_plugin_task *pt = PSCSI_TASK(task); |
1067 | 1067 | struct request *req; |
1068 | 1068 | struct bio *hbio; |
drivers/target/target_core_rd.c
... | ... | @@ -350,7 +350,7 @@ |
350 | 350 | static int rd_MEMCPY_read(struct rd_request *req) |
351 | 351 | { |
352 | 352 | struct se_task *task = &req->rd_task; |
353 | - struct rd_dev *dev = req->rd_task.se_dev->dev_ptr; | |
353 | + struct rd_dev *dev = req->rd_task.task_se_cmd->se_dev->dev_ptr; | |
354 | 354 | struct rd_dev_sg_table *table; |
355 | 355 | struct scatterlist *sg_d, *sg_s; |
356 | 356 | void *dst, *src; |
... | ... | @@ -466,7 +466,7 @@ |
466 | 466 | static int rd_MEMCPY_write(struct rd_request *req) |
467 | 467 | { |
468 | 468 | struct se_task *task = &req->rd_task; |
469 | - struct rd_dev *dev = req->rd_task.se_dev->dev_ptr; | |
469 | + struct rd_dev *dev = req->rd_task.task_se_cmd->se_dev->dev_ptr; | |
470 | 470 | struct rd_dev_sg_table *table; |
471 | 471 | struct scatterlist *sg_d, *sg_s; |
472 | 472 | void *dst, *src; |
... | ... | @@ -581,7 +581,7 @@ |
581 | 581 | */ |
582 | 582 | static int rd_MEMCPY_do_task(struct se_task *task) |
583 | 583 | { |
584 | - struct se_device *dev = task->se_dev; | |
584 | + struct se_device *dev = task->task_se_cmd->se_dev; | |
585 | 585 | struct rd_request *req = RD_REQ(task); |
586 | 586 | unsigned long long lba; |
587 | 587 | int ret; |
drivers/target/target_core_transport.c
... | ... | @@ -432,15 +432,14 @@ |
432 | 432 | */ |
433 | 433 | static void transport_all_task_dev_remove_state(struct se_cmd *cmd) |
434 | 434 | { |
435 | - struct se_device *dev; | |
435 | + struct se_device *dev = cmd->se_dev; | |
436 | 436 | struct se_task *task; |
437 | 437 | unsigned long flags; |
438 | 438 | |
439 | - list_for_each_entry(task, &cmd->t_task_list, t_list) { | |
440 | - dev = task->se_dev; | |
441 | - if (!dev) | |
442 | - continue; | |
439 | + if (!dev) | |
440 | + return; | |
443 | 441 | |
442 | + list_for_each_entry(task, &cmd->t_task_list, t_list) { | |
444 | 443 | if (atomic_read(&task->task_active)) |
445 | 444 | continue; |
446 | 445 | |
... | ... | @@ -708,7 +707,7 @@ |
708 | 707 | void transport_complete_task(struct se_task *task, int success) |
709 | 708 | { |
710 | 709 | struct se_cmd *cmd = task->task_se_cmd; |
711 | - struct se_device *dev = task->se_dev; | |
710 | + struct se_device *dev = cmd->se_dev; | |
712 | 711 | int t_state; |
713 | 712 | unsigned long flags; |
714 | 713 | #if 0 |
715 | 714 | |
... | ... | @@ -886,14 +885,12 @@ |
886 | 885 | |
887 | 886 | static void transport_add_tasks_to_state_queue(struct se_cmd *cmd) |
888 | 887 | { |
889 | - struct se_device *dev; | |
888 | + struct se_device *dev = cmd->se_dev; | |
890 | 889 | struct se_task *task; |
891 | 890 | unsigned long flags; |
892 | 891 | |
893 | 892 | spin_lock_irqsave(&cmd->t_state_lock, flags); |
894 | 893 | list_for_each_entry(task, &cmd->t_task_list, t_list) { |
895 | - dev = task->se_dev; | |
896 | - | |
897 | 894 | if (atomic_read(&task->task_state_active)) |
898 | 895 | continue; |
899 | 896 | |
... | ... | @@ -1522,7 +1519,6 @@ |
1522 | 1519 | INIT_LIST_HEAD(&task->t_state_list); |
1523 | 1520 | init_completion(&task->task_stop_comp); |
1524 | 1521 | task->task_se_cmd = cmd; |
1525 | - task->se_dev = dev; | |
1526 | 1522 | task->task_data_direction = data_direction; |
1527 | 1523 | |
1528 | 1524 | return task; |
... | ... | @@ -1802,7 +1798,7 @@ |
1802 | 1798 | spin_unlock_irqrestore(&cmd->t_state_lock, |
1803 | 1799 | flags); |
1804 | 1800 | transport_remove_task_from_execute_queue(task, |
1805 | - task->se_dev); | |
1801 | + cmd->se_dev); | |
1806 | 1802 | |
1807 | 1803 | pr_debug("task_no[%d] - Removed from execute queue\n", |
1808 | 1804 | task->task_no); |
... | ... | @@ -2130,7 +2126,7 @@ |
2130 | 2126 | */ |
2131 | 2127 | static void transport_start_task_timer(struct se_task *task) |
2132 | 2128 | { |
2133 | - struct se_device *dev = task->se_dev; | |
2129 | + struct se_device *dev = task->task_se_cmd->se_dev; | |
2134 | 2130 | int timeout; |
2135 | 2131 | |
2136 | 2132 | if (task->task_flags & TF_RUNNING) |
2137 | 2133 | |
... | ... | @@ -2656,13 +2652,16 @@ |
2656 | 2652 | static int transport_get_sense_data(struct se_cmd *cmd) |
2657 | 2653 | { |
2658 | 2654 | unsigned char *buffer = cmd->sense_buffer, *sense_buffer = NULL; |
2659 | - struct se_device *dev; | |
2655 | + struct se_device *dev = cmd->se_dev; | |
2660 | 2656 | struct se_task *task = NULL, *task_tmp; |
2661 | 2657 | unsigned long flags; |
2662 | 2658 | u32 offset = 0; |
2663 | 2659 | |
2664 | 2660 | WARN_ON(!cmd->se_lun); |
2665 | 2661 | |
2662 | + if (!dev) | |
2663 | + return 0; | |
2664 | + | |
2666 | 2665 | spin_lock_irqsave(&cmd->t_state_lock, flags); |
2667 | 2666 | if (cmd->se_cmd_flags & SCF_SENT_CHECK_CONDITION) { |
2668 | 2667 | spin_unlock_irqrestore(&cmd->t_state_lock, flags); |
2669 | 2668 | |
... | ... | @@ -2671,14 +2670,9 @@ |
2671 | 2670 | |
2672 | 2671 | list_for_each_entry_safe(task, task_tmp, |
2673 | 2672 | &cmd->t_task_list, t_list) { |
2674 | - | |
2675 | 2673 | if (!task->task_sense) |
2676 | 2674 | continue; |
2677 | 2675 | |
2678 | - dev = task->se_dev; | |
2679 | - if (!dev) | |
2680 | - continue; | |
2681 | - | |
2682 | 2676 | if (!dev->transport->get_sense_buffer) { |
2683 | 2677 | pr_err("dev->transport->get_sense_buffer" |
2684 | 2678 | " is NULL\n"); |
... | ... | @@ -3628,11 +3622,7 @@ |
3628 | 3622 | list_del(&task->t_list); |
3629 | 3623 | |
3630 | 3624 | spin_unlock_irqrestore(&cmd->t_state_lock, flags); |
3631 | - if (task->se_dev) | |
3632 | - task->se_dev->transport->free_task(task); | |
3633 | - else | |
3634 | - pr_err("task[%u] - task->se_dev is NULL\n", | |
3635 | - task->task_no); | |
3625 | + cmd->se_dev->transport->free_task(task); | |
3636 | 3626 | spin_lock_irqsave(&cmd->t_state_lock, flags); |
3637 | 3627 | } |
3638 | 3628 | spin_unlock_irqrestore(&cmd->t_state_lock, flags); |
include/target/target_core_base.h
... | ... | @@ -405,7 +405,6 @@ |
405 | 405 | u8 task_scsi_status; |
406 | 406 | u8 task_flags; |
407 | 407 | int task_error_status; |
408 | - int task_state_flags; | |
409 | 408 | bool task_padded_sg; |
410 | 409 | unsigned long long task_lba; |
411 | 410 | u32 task_no; |
... | ... | @@ -413,7 +412,6 @@ |
413 | 412 | u32 task_size; |
414 | 413 | enum dma_data_direction task_data_direction; |
415 | 414 | struct se_cmd *task_se_cmd; |
416 | - struct se_device *se_dev; | |
417 | 415 | struct completion task_stop_comp; |
418 | 416 | atomic_t task_active; |
419 | 417 | atomic_t task_execute_queue; |
... | ... | @@ -422,7 +420,6 @@ |
422 | 420 | atomic_t task_stop; |
423 | 421 | atomic_t task_state_active; |
424 | 422 | struct timer_list task_timer; |
425 | - struct se_device *se_obj_ptr; | |
426 | 423 | struct list_head t_list; |
427 | 424 | struct list_head t_execute_list; |
428 | 425 | struct list_head t_state_list; |
include/target/target_core_transport.h