Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
Pull target fixes from Nicholas Bellinger: "Two minor target fixes. There is really nothing exciting and/or controversial this time around. There's one fix from MDR for a RCU debug warning message within tcm_fc code (CC'ed to stable), and a small AC fix for qla_target.c based upon a recent Coverity static report. Also, there is one other outstanding virtio-scsi LUN scanning bugfix that has been uncovered with the in-flight tcm_vhost driver over the last days, and that needs to make it into 3.5 final too. This patch has been posted to linux-scsi again here: http://marc.info/?l=linux-scsi&m=134160609212542&w=2 and I've asked James to include it in his next PULL request." * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: qla2xxx: print the right array elements in qlt_async_event tcm_fc: Resolve suspicious RCU usage warnings
This commit is contained in:
Коммит
c8912f2be3
|
@ -3960,7 +3960,7 @@ void qlt_async_event(uint16_t code, struct scsi_qla_host *vha,
|
|||
{
|
||||
struct qla_hw_data *ha = vha->hw;
|
||||
struct qla_tgt *tgt = ha->tgt.qla_tgt;
|
||||
int reason_code;
|
||||
int login_code;
|
||||
|
||||
ql_dbg(ql_dbg_tgt, vha, 0xe039,
|
||||
"scsi(%ld): ha state %d init_done %d oper_mode %d topo %d\n",
|
||||
|
@ -4003,9 +4003,9 @@ void qlt_async_event(uint16_t code, struct scsi_qla_host *vha,
|
|||
{
|
||||
ql_dbg(ql_dbg_tgt_mgt, vha, 0xf03b,
|
||||
"qla_target(%d): Async LOOP_UP occured "
|
||||
"(m[1]=%x, m[2]=%x, m[3]=%x, m[4]=%x)", vha->vp_idx,
|
||||
le16_to_cpu(mailbox[1]), le16_to_cpu(mailbox[2]),
|
||||
le16_to_cpu(mailbox[3]), le16_to_cpu(mailbox[4]));
|
||||
"(m[0]=%x, m[1]=%x, m[2]=%x, m[3]=%x)", vha->vp_idx,
|
||||
le16_to_cpu(mailbox[0]), le16_to_cpu(mailbox[1]),
|
||||
le16_to_cpu(mailbox[2]), le16_to_cpu(mailbox[3]));
|
||||
if (tgt->link_reinit_iocb_pending) {
|
||||
qlt_send_notify_ack(vha, (void *)&tgt->link_reinit_iocb,
|
||||
0, 0, 0, 0, 0, 0);
|
||||
|
@ -4020,23 +4020,24 @@ void qlt_async_event(uint16_t code, struct scsi_qla_host *vha,
|
|||
case MBA_RSCN_UPDATE:
|
||||
ql_dbg(ql_dbg_tgt_mgt, vha, 0xf03c,
|
||||
"qla_target(%d): Async event %#x occured "
|
||||
"(m[1]=%x, m[2]=%x, m[3]=%x, m[4]=%x)", vha->vp_idx, code,
|
||||
le16_to_cpu(mailbox[1]), le16_to_cpu(mailbox[2]),
|
||||
le16_to_cpu(mailbox[3]), le16_to_cpu(mailbox[4]));
|
||||
"(m[0]=%x, m[1]=%x, m[2]=%x, m[3]=%x)", vha->vp_idx, code,
|
||||
le16_to_cpu(mailbox[0]), le16_to_cpu(mailbox[1]),
|
||||
le16_to_cpu(mailbox[2]), le16_to_cpu(mailbox[3]));
|
||||
break;
|
||||
|
||||
case MBA_PORT_UPDATE:
|
||||
ql_dbg(ql_dbg_tgt_mgt, vha, 0xf03d,
|
||||
"qla_target(%d): Port update async event %#x "
|
||||
"occured: updating the ports database (m[1]=%x, m[2]=%x, "
|
||||
"m[3]=%x, m[4]=%x)", vha->vp_idx, code,
|
||||
le16_to_cpu(mailbox[1]), le16_to_cpu(mailbox[2]),
|
||||
le16_to_cpu(mailbox[3]), le16_to_cpu(mailbox[4]));
|
||||
reason_code = le16_to_cpu(mailbox[2]);
|
||||
if (reason_code == 0x4)
|
||||
"occured: updating the ports database (m[0]=%x, m[1]=%x, "
|
||||
"m[2]=%x, m[3]=%x)", vha->vp_idx, code,
|
||||
le16_to_cpu(mailbox[0]), le16_to_cpu(mailbox[1]),
|
||||
le16_to_cpu(mailbox[2]), le16_to_cpu(mailbox[3]));
|
||||
|
||||
login_code = le16_to_cpu(mailbox[2]);
|
||||
if (login_code == 0x4)
|
||||
ql_dbg(ql_dbg_tgt_mgt, vha, 0xf03e,
|
||||
"Async MB 2: Got PLOGI Complete\n");
|
||||
else if (reason_code == 0x7)
|
||||
else if (login_code == 0x7)
|
||||
ql_dbg(ql_dbg_tgt_mgt, vha, 0xf03f,
|
||||
"Async MB 2: Port Logged Out\n");
|
||||
break;
|
||||
|
@ -4044,9 +4045,9 @@ void qlt_async_event(uint16_t code, struct scsi_qla_host *vha,
|
|||
default:
|
||||
ql_dbg(ql_dbg_tgt_mgt, vha, 0xf040,
|
||||
"qla_target(%d): Async event %#x occured: "
|
||||
"ignore (m[1]=%x, m[2]=%x, m[3]=%x, m[4]=%x)", vha->vp_idx,
|
||||
code, le16_to_cpu(mailbox[1]), le16_to_cpu(mailbox[2]),
|
||||
le16_to_cpu(mailbox[3]), le16_to_cpu(mailbox[4]));
|
||||
"ignore (m[0]=%x, m[1]=%x, m[2]=%x, m[3]=%x)", vha->vp_idx,
|
||||
code, le16_to_cpu(mailbox[0]), le16_to_cpu(mailbox[1]),
|
||||
le16_to_cpu(mailbox[2]), le16_to_cpu(mailbox[3]));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,8 @@ static struct ft_tport *ft_tport_create(struct fc_lport *lport)
|
|||
struct ft_tport *tport;
|
||||
int i;
|
||||
|
||||
tport = rcu_dereference(lport->prov[FC_TYPE_FCP]);
|
||||
tport = rcu_dereference_protected(lport->prov[FC_TYPE_FCP],
|
||||
lockdep_is_held(&ft_lport_lock));
|
||||
if (tport && tport->tpg)
|
||||
return tport;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче