WTF: patch "[PATCH] qla2xxx: delay plogi/prli ack until existing sessions are" was seriously submitted to be applied to the 4.1-stable tree?
Subsystems (3)
[email protected]
maintainerThe patch below was submitted to be applied to the 4.1-stable tree.
I fail to see how this patch meets the stable kernel rules as found at Documentation/stable_kernel_rules.txt.
I could be totally wrong, and if so, please respond to <[email protected]> and let me know why this patch should be applied. Otherwise, it is now dropped from my patch queues, never to be seen again.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
a6ca88780dd66b0700d89419abd17b6b4bb49483Mon Sep 17 00:00:00 2001
From: Alexei Potashnik <[email protected]>
Date: Tue, 14 Jul 2015 16:00:44 -0400
Subject: [PATCH] qla2xxx: delay plogi/prli ack until existing sessions are
deleted
- keep qla_tgt_sess object on the session list until it's freed
- modify use of sess->deleted flag to differentiate delayed session deletion that can be cancelled from irreversible one:
QLA_SESS_DELETION_PENDING vs QLA_SESS_DELETION_IN_PROGRESS
- during IN_PROGRESS deletion all newly arrived commands and TMRs will be rejected, existing commands and TMRs will be terminated when given by the core to the fabric or simply dropped if session logout has already happened (logout terminates all existing exchanges)
- new PLOGI will initiate deletion of the following sessions (unless deletion is already IN_PROGRESS):
- with the same port_name (with logout)
- different port_name, different loop_id but the same port_id (with logout)
- different port_name, different port_id, but the same loop_id (without logout)
- additionally each new PLOGI will store imm notify iocb in the same port_name session being deleted. When deletion process completes this iocb will be acked. Only the most recent PLOGI iocb is stored. The older ones will be terminated when replaced.
- new PRLI will initiate deletion of the following sessions (unless deletion is already IN_PROGRESS):
- different port_name, different port_id, but the same loop_id (without logout)
drivers/scsi/qla2xxx/qla_dbg.c +3 -3
@@ -67,10 +67,10 @@* | | | 0xd031-0xd0ff | * | | | 0xd101-0xd1fe | * | | | 0xd214-0xd2fe | -* | Target Mode | 0xe079 | | -* | Target Mode Management | 0xf083 | 0xf002 | +* | Target Mode | 0xe080 | | +* | Target Mode Management | 0xf091 | 0xf002 | * | | | 0xf046-0xf049 | -* | Target Mode Task Management | 0x1000b | | +* | Target Mode Task Management | 0x1000d | | * ---------------------------------------------------------------------- */
drivers/scsi/qla2xxx/qla_def.h +2 -0
@@ -274,6 +274,7 @@#define RESPONSE_ENTRY_CNT_FX00 256/* Number of response entries.*/ struct req_que ; +struct qla_tgt_sess ;/* * (sd.h is not exported, hence local inclusion)
@@ -2026,6 +2027,7 @@ typedef struct fc_port {uint16_t port_id;unsigned long retry_delay_timestamp; +struct qla_tgt_sess *tgt_session; } fc_port_t;#include "qla_mr.h"
drivers/scsi/qla2xxx/qla_init.c +6 -1
@@ -115,6 +115,8 @@ qla2x00_async_iocb_timeout(void *data) QLA_LOGIO_LOGIN_RETRIED :0 ;qla2x00_post_async_login_done_work (fcport->vha, fcport, lio->u.logio.data); + }else if (sp->type ==SRB_LOGOUT_CMD ) { +qlt_logo_completion_handler (fcport,QLA_FUNCTION_TIMEOUT ); } }
@@ -497,7 +499,10 @@ void qla2x00_async_logout_done(struct scsi_qla_host *vha, fc_port_t *fcport, uint16_t *data) { - qla2x00_mark_device_lost(vha, fcport, 1, 0); + /* Don't re-login in target mode */ + if (!fcport->tgt_session) + qla2x00_mark_device_lost(vha, fcport, 1, 0); +qlt_logo_completion_handler (fcport, data[0 ]);return ; }
drivers/scsi/qla2xxx/qla_iocb.c +3 -0
@@ -1943,6 +1943,9 @@ qla24xx_logout_iocb(srb_t *sp, struct logio_entry_24xx *logio) logio->entry_type =LOGINOUT_PORT_IOCB_TYPE ; logio->control_flags =cpu_to_le16 (LCF_COMMAND_LOGO |LCF_IMPL_LOGO ); +if (!sp->fcport->tgt_session || + !sp->fcport->tgt_session->keep_nport_handle) + logio->control_flags |=cpu_to_le16 (LCF_FREE_NPORT ); logio->nport_handle =cpu_to_le16 (sp->fcport->loop_id); logio->port_id[0 ] = sp->fcport->d_id.b.al_pa; logio->port_id[1 ] = sp->fcport->d_id.b.area;
drivers/scsi/qla2xxx/qla_target.c +422 -16
559 lines not on this page · raw message
drivers/scsi/qla2xxx/qla_target.h +41 -2
85 lines not on this page · raw message
drivers/scsi/qla2xxx/tcm_qla2xxx.c +4 -0
@@ -1539,6 +1539,10 @@ static void tcm_qla2xxx_update_sess(struct qla_tgt_sess *sess, port_id_t s_id, } sess->conf_compl_supported = conf_compl_supported; + +/* Reset logout parameters to default */ + sess->logout_on_delete =1 ; + sess->keep_nport_handle =0 ; }/*