Commit 42bf829eee0e36371a3df43978b14572c716cbe7

Authored by Christoph Hellwig
Committed by Nicholas Bellinger
1 parent c0427f1556

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
... ... @@ -45,9 +45,6 @@
45 45 #define TRANSPORT_TIMEOUT_TYPE_TAPE 600
46 46 #define TRANSPORT_TIMEOUT_TYPE_OTHER 300
47 47  
48   -/* For se_task->task_state_flags */
49   -#define TSF_EXCEPTION_CLEARED 0x01
50   -
51 48 /*
52 49 * struct se_subsystem_dev->su_dev_flags
53 50 */