diff options
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_target.c | 56 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_target.h | 4 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/tcm_qla2xxx.c | 39 |
3 files changed, 35 insertions, 64 deletions
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 8a44d1541eb4..ca39deb4ff5b 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c | |||
| @@ -637,8 +637,10 @@ static void qlt_free_session_done(struct work_struct *work) | |||
| 637 | } | 637 | } |
| 638 | 638 | ||
| 639 | /* ha->tgt.sess_lock supposed to be held on entry */ | 639 | /* ha->tgt.sess_lock supposed to be held on entry */ |
| 640 | void qlt_unreg_sess(struct qla_tgt_sess *sess) | 640 | static void qlt_release_session(struct kref *kref) |
| 641 | { | 641 | { |
| 642 | struct qla_tgt_sess *sess = | ||
| 643 | container_of(kref, struct qla_tgt_sess, sess_kref); | ||
| 642 | struct scsi_qla_host *vha = sess->vha; | 644 | struct scsi_qla_host *vha = sess->vha; |
| 643 | 645 | ||
| 644 | if (sess->se_sess) | 646 | if (sess->se_sess) |
| @@ -651,8 +653,16 @@ void qlt_unreg_sess(struct qla_tgt_sess *sess) | |||
| 651 | INIT_WORK(&sess->free_work, qlt_free_session_done); | 653 | INIT_WORK(&sess->free_work, qlt_free_session_done); |
| 652 | schedule_work(&sess->free_work); | 654 | schedule_work(&sess->free_work); |
| 653 | } | 655 | } |
| 654 | EXPORT_SYMBOL(qlt_unreg_sess); | ||
| 655 | 656 | ||
| 657 | void qlt_put_sess(struct qla_tgt_sess *sess) | ||
| 658 | { | ||
| 659 | if (!sess) | ||
| 660 | return; | ||
| 661 | |||
| 662 | assert_spin_locked(&sess->vha->hw->tgt.sess_lock); | ||
| 663 | kref_put(&sess->sess_kref, qlt_release_session); | ||
| 664 | } | ||
| 665 | EXPORT_SYMBOL(qlt_put_sess); | ||
| 656 | 666 | ||
| 657 | static int qlt_reset(struct scsi_qla_host *vha, void *iocb, int mcmd) | 667 | static int qlt_reset(struct scsi_qla_host *vha, void *iocb, int mcmd) |
| 658 | { | 668 | { |
| @@ -857,12 +867,9 @@ static void qlt_del_sess_work_fn(struct delayed_work *work) | |||
| 857 | ql_dbg(ql_dbg_tgt_mgt, vha, 0xf004, | 867 | ql_dbg(ql_dbg_tgt_mgt, vha, 0xf004, |
| 858 | "Timeout: sess %p about to be deleted\n", | 868 | "Timeout: sess %p about to be deleted\n", |
| 859 | sess); | 869 | sess); |
| 860 | if (sess->se_sess) { | 870 | if (sess->se_sess) |
| 861 | ha->tgt.tgt_ops->shutdown_sess(sess); | 871 | ha->tgt.tgt_ops->shutdown_sess(sess); |
| 862 | ha->tgt.tgt_ops->put_sess(sess); | 872 | qlt_put_sess(sess); |
| 863 | } else { | ||
| 864 | qlt_unreg_sess(sess); | ||
| 865 | } | ||
| 866 | } else { | 873 | } else { |
| 867 | schedule_delayed_work(&tgt->sess_del_work, | 874 | schedule_delayed_work(&tgt->sess_del_work, |
| 868 | sess->expires - elapsed); | 875 | sess->expires - elapsed); |
| @@ -917,7 +924,7 @@ static struct qla_tgt_sess *qlt_create_sess( | |||
| 917 | } | 924 | } |
| 918 | } | 925 | } |
| 919 | 926 | ||
| 920 | kref_get(&sess->se_sess->sess_kref); | 927 | kref_get(&sess->sess_kref); |
| 921 | ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, fcport->loop_id, | 928 | ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, fcport->loop_id, |
| 922 | (fcport->flags & FCF_CONF_COMP_SUPPORTED)); | 929 | (fcport->flags & FCF_CONF_COMP_SUPPORTED)); |
| 923 | 930 | ||
| @@ -947,6 +954,7 @@ static struct qla_tgt_sess *qlt_create_sess( | |||
| 947 | sess->s_id = fcport->d_id; | 954 | sess->s_id = fcport->d_id; |
| 948 | sess->loop_id = fcport->loop_id; | 955 | sess->loop_id = fcport->loop_id; |
| 949 | sess->local = local; | 956 | sess->local = local; |
| 957 | kref_init(&sess->sess_kref); | ||
| 950 | INIT_LIST_HEAD(&sess->del_list_entry); | 958 | INIT_LIST_HEAD(&sess->del_list_entry); |
| 951 | 959 | ||
| 952 | /* Under normal circumstances we want to logout from firmware when | 960 | /* Under normal circumstances we want to logout from firmware when |
| @@ -991,7 +999,7 @@ static struct qla_tgt_sess *qlt_create_sess( | |||
| 991 | * Take an extra reference to ->sess_kref here to handle qla_tgt_sess | 999 | * Take an extra reference to ->sess_kref here to handle qla_tgt_sess |
| 992 | * access across ->tgt.sess_lock reaquire. | 1000 | * access across ->tgt.sess_lock reaquire. |
| 993 | */ | 1001 | */ |
| 994 | kref_get(&sess->se_sess->sess_kref); | 1002 | kref_get(&sess->sess_kref); |
| 995 | } | 1003 | } |
| 996 | 1004 | ||
| 997 | return sess; | 1005 | return sess; |
| @@ -1035,7 +1043,7 @@ void qlt_fc_port_added(struct scsi_qla_host *vha, fc_port_t *fcport) | |||
| 1035 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); | 1043 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); |
| 1036 | return; | 1044 | return; |
| 1037 | } else { | 1045 | } else { |
| 1038 | kref_get(&sess->se_sess->sess_kref); | 1046 | kref_get(&sess->sess_kref); |
| 1039 | 1047 | ||
| 1040 | if (sess->deleted) { | 1048 | if (sess->deleted) { |
| 1041 | qlt_undelete_sess(sess); | 1049 | qlt_undelete_sess(sess); |
| @@ -1060,7 +1068,7 @@ void qlt_fc_port_added(struct scsi_qla_host *vha, fc_port_t *fcport) | |||
| 1060 | fcport->port_name, sess->loop_id); | 1068 | fcport->port_name, sess->loop_id); |
| 1061 | sess->local = 0; | 1069 | sess->local = 0; |
| 1062 | } | 1070 | } |
| 1063 | ha->tgt.tgt_ops->put_sess(sess); | 1071 | qlt_put_sess(sess); |
| 1064 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); | 1072 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); |
| 1065 | } | 1073 | } |
| 1066 | 1074 | ||
| @@ -3817,7 +3825,7 @@ static void __qlt_do_work(struct qla_tgt_cmd *cmd) | |||
| 3817 | * Drop extra session reference from qla_tgt_handle_cmd_for_atio*( | 3825 | * Drop extra session reference from qla_tgt_handle_cmd_for_atio*( |
| 3818 | */ | 3826 | */ |
| 3819 | spin_lock_irqsave(&ha->tgt.sess_lock, flags); | 3827 | spin_lock_irqsave(&ha->tgt.sess_lock, flags); |
| 3820 | ha->tgt.tgt_ops->put_sess(sess); | 3828 | qlt_put_sess(sess); |
| 3821 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); | 3829 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); |
| 3822 | return; | 3830 | return; |
| 3823 | 3831 | ||
| @@ -3836,7 +3844,7 @@ out_term: | |||
| 3836 | spin_unlock_irqrestore(&ha->hardware_lock, flags); | 3844 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
| 3837 | 3845 | ||
| 3838 | spin_lock_irqsave(&ha->tgt.sess_lock, flags); | 3846 | spin_lock_irqsave(&ha->tgt.sess_lock, flags); |
| 3839 | ha->tgt.tgt_ops->put_sess(sess); | 3847 | qlt_put_sess(sess); |
| 3840 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); | 3848 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); |
| 3841 | } | 3849 | } |
| 3842 | 3850 | ||
| @@ -3936,13 +3944,13 @@ static void qlt_create_sess_from_atio(struct work_struct *work) | |||
| 3936 | if (!cmd) { | 3944 | if (!cmd) { |
| 3937 | spin_lock_irqsave(&ha->hardware_lock, flags); | 3945 | spin_lock_irqsave(&ha->hardware_lock, flags); |
| 3938 | qlt_send_busy(vha, &op->atio, SAM_STAT_BUSY); | 3946 | qlt_send_busy(vha, &op->atio, SAM_STAT_BUSY); |
| 3939 | ha->tgt.tgt_ops->put_sess(sess); | 3947 | qlt_put_sess(sess); |
| 3940 | spin_unlock_irqrestore(&ha->hardware_lock, flags); | 3948 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
| 3941 | kfree(op); | 3949 | kfree(op); |
| 3942 | return; | 3950 | return; |
| 3943 | } | 3951 | } |
| 3944 | /* | 3952 | /* |
| 3945 | * __qlt_do_work() will call ha->tgt.tgt_ops->put_sess() to release | 3953 | * __qlt_do_work() will call qlt_put_sess() to release |
| 3946 | * the extra reference taken above by qlt_make_local_sess() | 3954 | * the extra reference taken above by qlt_make_local_sess() |
| 3947 | */ | 3955 | */ |
| 3948 | __qlt_do_work(cmd); | 3956 | __qlt_do_work(cmd); |
| @@ -4003,13 +4011,13 @@ static int qlt_handle_cmd_for_atio(struct scsi_qla_host *vha, | |||
| 4003 | /* | 4011 | /* |
| 4004 | * Do kref_get() before returning + dropping qla_hw_data->hardware_lock. | 4012 | * Do kref_get() before returning + dropping qla_hw_data->hardware_lock. |
| 4005 | */ | 4013 | */ |
| 4006 | kref_get(&sess->se_sess->sess_kref); | 4014 | kref_get(&sess->sess_kref); |
| 4007 | 4015 | ||
| 4008 | cmd = qlt_get_tag(vha, sess, atio); | 4016 | cmd = qlt_get_tag(vha, sess, atio); |
| 4009 | if (!cmd) { | 4017 | if (!cmd) { |
| 4010 | ql_dbg(ql_dbg_io, vha, 0x3062, | 4018 | ql_dbg(ql_dbg_io, vha, 0x3062, |
| 4011 | "qla_target(%d): Allocation of cmd failed\n", vha->vp_idx); | 4019 | "qla_target(%d): Allocation of cmd failed\n", vha->vp_idx); |
| 4012 | ha->tgt.tgt_ops->put_sess(sess); | 4020 | qlt_put_sess(sess); |
| 4013 | return -ENOMEM; | 4021 | return -ENOMEM; |
| 4014 | } | 4022 | } |
| 4015 | 4023 | ||
| @@ -5911,7 +5919,7 @@ static void qlt_abort_work(struct qla_tgt *tgt, | |||
| 5911 | goto out_term2; | 5919 | goto out_term2; |
| 5912 | } | 5920 | } |
| 5913 | 5921 | ||
| 5914 | kref_get(&sess->se_sess->sess_kref); | 5922 | kref_get(&sess->sess_kref); |
| 5915 | } | 5923 | } |
| 5916 | 5924 | ||
| 5917 | spin_lock_irqsave(&ha->hardware_lock, flags); | 5925 | spin_lock_irqsave(&ha->hardware_lock, flags); |
| @@ -5924,7 +5932,7 @@ static void qlt_abort_work(struct qla_tgt *tgt, | |||
| 5924 | goto out_term; | 5932 | goto out_term; |
| 5925 | spin_unlock_irqrestore(&ha->hardware_lock, flags); | 5933 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
| 5926 | 5934 | ||
| 5927 | ha->tgt.tgt_ops->put_sess(sess); | 5935 | qlt_put_sess(sess); |
| 5928 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags2); | 5936 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags2); |
| 5929 | return; | 5937 | return; |
| 5930 | 5938 | ||
| @@ -5935,8 +5943,7 @@ out_term: | |||
| 5935 | qlt_24xx_send_abts_resp(vha, &prm->abts, FCP_TMF_REJECTED, false); | 5943 | qlt_24xx_send_abts_resp(vha, &prm->abts, FCP_TMF_REJECTED, false); |
| 5936 | spin_unlock_irqrestore(&ha->hardware_lock, flags); | 5944 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
| 5937 | 5945 | ||
| 5938 | if (sess) | 5946 | qlt_put_sess(sess); |
| 5939 | ha->tgt.tgt_ops->put_sess(sess); | ||
| 5940 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags2); | 5947 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags2); |
| 5941 | } | 5948 | } |
| 5942 | 5949 | ||
| @@ -5976,7 +5983,7 @@ static void qlt_tmr_work(struct qla_tgt *tgt, | |||
| 5976 | goto out_term; | 5983 | goto out_term; |
| 5977 | } | 5984 | } |
| 5978 | 5985 | ||
| 5979 | kref_get(&sess->se_sess->sess_kref); | 5986 | kref_get(&sess->sess_kref); |
| 5980 | } | 5987 | } |
| 5981 | 5988 | ||
| 5982 | iocb = a; | 5989 | iocb = a; |
| @@ -5988,14 +5995,13 @@ static void qlt_tmr_work(struct qla_tgt *tgt, | |||
| 5988 | if (rc != 0) | 5995 | if (rc != 0) |
| 5989 | goto out_term; | 5996 | goto out_term; |
| 5990 | 5997 | ||
| 5991 | ha->tgt.tgt_ops->put_sess(sess); | 5998 | qlt_put_sess(sess); |
| 5992 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); | 5999 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); |
| 5993 | return; | 6000 | return; |
| 5994 | 6001 | ||
| 5995 | out_term: | 6002 | out_term: |
| 5996 | qlt_send_term_exchange(vha, NULL, &prm->tm_iocb2, 1, 0); | 6003 | qlt_send_term_exchange(vha, NULL, &prm->tm_iocb2, 1, 0); |
| 5997 | if (sess) | 6004 | qlt_put_sess(sess); |
| 5998 | ha->tgt.tgt_ops->put_sess(sess); | ||
| 5999 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); | 6005 | spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); |
| 6000 | } | 6006 | } |
| 6001 | 6007 | ||
diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h index d857feeb6514..f26c5f60eedd 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h | |||
| @@ -738,7 +738,6 @@ struct qla_tgt_func_tmpl { | |||
| 738 | struct qla_tgt_sess *(*find_sess_by_s_id)(struct scsi_qla_host *, | 738 | struct qla_tgt_sess *(*find_sess_by_s_id)(struct scsi_qla_host *, |
| 739 | const uint8_t *); | 739 | const uint8_t *); |
| 740 | void (*clear_nacl_from_fcport_map)(struct qla_tgt_sess *); | 740 | void (*clear_nacl_from_fcport_map)(struct qla_tgt_sess *); |
| 741 | void (*put_sess)(struct qla_tgt_sess *); | ||
| 742 | void (*shutdown_sess)(struct qla_tgt_sess *); | 741 | void (*shutdown_sess)(struct qla_tgt_sess *); |
| 743 | }; | 742 | }; |
| 744 | 743 | ||
| @@ -930,6 +929,7 @@ struct qla_tgt_sess { | |||
| 930 | int generation; | 929 | int generation; |
| 931 | 930 | ||
| 932 | struct se_session *se_sess; | 931 | struct se_session *se_sess; |
| 932 | struct kref sess_kref; | ||
| 933 | struct scsi_qla_host *vha; | 933 | struct scsi_qla_host *vha; |
| 934 | struct qla_tgt *tgt; | 934 | struct qla_tgt *tgt; |
| 935 | 935 | ||
| @@ -1101,7 +1101,7 @@ extern int qlt_remove_target(struct qla_hw_data *, struct scsi_qla_host *); | |||
| 1101 | extern int qlt_lport_register(void *, u64, u64, u64, | 1101 | extern int qlt_lport_register(void *, u64, u64, u64, |
| 1102 | int (*callback)(struct scsi_qla_host *, void *, u64, u64)); | 1102 | int (*callback)(struct scsi_qla_host *, void *, u64, u64)); |
| 1103 | extern void qlt_lport_deregister(struct scsi_qla_host *); | 1103 | extern void qlt_lport_deregister(struct scsi_qla_host *); |
| 1104 | extern void qlt_unreg_sess(struct qla_tgt_sess *); | 1104 | void qlt_put_sess(struct qla_tgt_sess *sess); |
| 1105 | extern void qlt_fc_port_added(struct scsi_qla_host *, fc_port_t *); | 1105 | extern void qlt_fc_port_added(struct scsi_qla_host *, fc_port_t *); |
| 1106 | extern void qlt_fc_port_deleted(struct scsi_qla_host *, fc_port_t *, int); | 1106 | extern void qlt_fc_port_deleted(struct scsi_qla_host *, fc_port_t *, int); |
| 1107 | extern int __init qlt_init(void); | 1107 | extern int __init qlt_init(void); |
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c index c1461d225f08..675f75bafc3c 100644 --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c | |||
| @@ -339,22 +339,6 @@ static void tcm_qla2xxx_release_cmd(struct se_cmd *se_cmd) | |||
| 339 | qlt_free_cmd(cmd); | 339 | qlt_free_cmd(cmd); |
| 340 | } | 340 | } |
| 341 | 341 | ||
| 342 | static int tcm_qla2xxx_shutdown_session(struct se_session *se_sess) | ||
| 343 | { | ||
| 344 | struct qla_tgt_sess *sess = se_sess->fabric_sess_ptr; | ||
| 345 | struct scsi_qla_host *vha; | ||
| 346 | unsigned long flags; | ||
| 347 | |||
| 348 | BUG_ON(!sess); | ||
| 349 | vha = sess->vha; | ||
| 350 | |||
| 351 | spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); | ||
| 352 | target_sess_cmd_list_set_waiting(se_sess); | ||
| 353 | spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); | ||
| 354 | |||
| 355 | return 1; | ||
| 356 | } | ||
| 357 | |||
| 358 | static void tcm_qla2xxx_close_session(struct se_session *se_sess) | 342 | static void tcm_qla2xxx_close_session(struct se_session *se_sess) |
| 359 | { | 343 | { |
| 360 | struct qla_tgt_sess *sess = se_sess->fabric_sess_ptr; | 344 | struct qla_tgt_sess *sess = se_sess->fabric_sess_ptr; |
| @@ -365,7 +349,8 @@ static void tcm_qla2xxx_close_session(struct se_session *se_sess) | |||
| 365 | vha = sess->vha; | 349 | vha = sess->vha; |
| 366 | 350 | ||
| 367 | spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); | 351 | spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); |
| 368 | qlt_unreg_sess(sess); | 352 | target_sess_cmd_list_set_waiting(se_sess); |
| 353 | qlt_put_sess(sess); | ||
| 369 | spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); | 354 | spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); |
| 370 | } | 355 | } |
| 371 | 356 | ||
| @@ -758,23 +743,6 @@ static void tcm_qla2xxx_clear_nacl_from_fcport_map(struct qla_tgt_sess *sess) | |||
| 758 | tcm_qla2xxx_clear_sess_lookup(lport, nacl, sess); | 743 | tcm_qla2xxx_clear_sess_lookup(lport, nacl, sess); |
| 759 | } | 744 | } |
| 760 | 745 | ||
| 761 | static void tcm_qla2xxx_release_session(struct kref *kref) | ||
| 762 | { | ||
| 763 | struct se_session *se_sess = container_of(kref, | ||
| 764 | struct se_session, sess_kref); | ||
| 765 | |||
| 766 | qlt_unreg_sess(se_sess->fabric_sess_ptr); | ||
| 767 | } | ||
| 768 | |||
| 769 | static void tcm_qla2xxx_put_sess(struct qla_tgt_sess *sess) | ||
| 770 | { | ||
| 771 | if (!sess) | ||
| 772 | return; | ||
| 773 | |||
| 774 | assert_spin_locked(&sess->vha->hw->tgt.sess_lock); | ||
| 775 | kref_put(&sess->se_sess->sess_kref, tcm_qla2xxx_release_session); | ||
| 776 | } | ||
| 777 | |||
| 778 | static void tcm_qla2xxx_shutdown_sess(struct qla_tgt_sess *sess) | 746 | static void tcm_qla2xxx_shutdown_sess(struct qla_tgt_sess *sess) |
| 779 | { | 747 | { |
| 780 | assert_spin_locked(&sess->vha->hw->tgt.sess_lock); | 748 | assert_spin_locked(&sess->vha->hw->tgt.sess_lock); |
| @@ -1579,7 +1547,6 @@ static struct qla_tgt_func_tmpl tcm_qla2xxx_template = { | |||
| 1579 | .find_sess_by_s_id = tcm_qla2xxx_find_sess_by_s_id, | 1547 | .find_sess_by_s_id = tcm_qla2xxx_find_sess_by_s_id, |
| 1580 | .find_sess_by_loop_id = tcm_qla2xxx_find_sess_by_loop_id, | 1548 | .find_sess_by_loop_id = tcm_qla2xxx_find_sess_by_loop_id, |
| 1581 | .clear_nacl_from_fcport_map = tcm_qla2xxx_clear_nacl_from_fcport_map, | 1549 | .clear_nacl_from_fcport_map = tcm_qla2xxx_clear_nacl_from_fcport_map, |
| 1582 | .put_sess = tcm_qla2xxx_put_sess, | ||
| 1583 | .shutdown_sess = tcm_qla2xxx_shutdown_sess, | 1550 | .shutdown_sess = tcm_qla2xxx_shutdown_sess, |
| 1584 | }; | 1551 | }; |
| 1585 | 1552 | ||
| @@ -1847,7 +1814,6 @@ static const struct target_core_fabric_ops tcm_qla2xxx_ops = { | |||
| 1847 | .tpg_get_inst_index = tcm_qla2xxx_tpg_get_inst_index, | 1814 | .tpg_get_inst_index = tcm_qla2xxx_tpg_get_inst_index, |
| 1848 | .check_stop_free = tcm_qla2xxx_check_stop_free, | 1815 | .check_stop_free = tcm_qla2xxx_check_stop_free, |
| 1849 | .release_cmd = tcm_qla2xxx_release_cmd, | 1816 | .release_cmd = tcm_qla2xxx_release_cmd, |
| 1850 | .shutdown_session = tcm_qla2xxx_shutdown_session, | ||
| 1851 | .close_session = tcm_qla2xxx_close_session, | 1817 | .close_session = tcm_qla2xxx_close_session, |
| 1852 | .sess_get_index = tcm_qla2xxx_sess_get_index, | 1818 | .sess_get_index = tcm_qla2xxx_sess_get_index, |
| 1853 | .sess_get_initiator_sid = NULL, | 1819 | .sess_get_initiator_sid = NULL, |
| @@ -1890,7 +1856,6 @@ static const struct target_core_fabric_ops tcm_qla2xxx_npiv_ops = { | |||
| 1890 | .tpg_get_inst_index = tcm_qla2xxx_tpg_get_inst_index, | 1856 | .tpg_get_inst_index = tcm_qla2xxx_tpg_get_inst_index, |
| 1891 | .check_stop_free = tcm_qla2xxx_check_stop_free, | 1857 | .check_stop_free = tcm_qla2xxx_check_stop_free, |
| 1892 | .release_cmd = tcm_qla2xxx_release_cmd, | 1858 | .release_cmd = tcm_qla2xxx_release_cmd, |
| 1893 | .shutdown_session = tcm_qla2xxx_shutdown_session, | ||
| 1894 | .close_session = tcm_qla2xxx_close_session, | 1859 | .close_session = tcm_qla2xxx_close_session, |
| 1895 | .sess_get_index = tcm_qla2xxx_sess_get_index, | 1860 | .sess_get_index = tcm_qla2xxx_sess_get_index, |
| 1896 | .sess_get_initiator_sid = NULL, | 1861 | .sess_get_initiator_sid = NULL, |
