Pull SCSI fixes from James Bottomley: "Two last minute fixes, both in drivers. The fnic one is a highly unlikely condition, but the RDMA one is a recently introduced regression that causes a kernel warning to trigger in every RDMA logon, which would be unsightly if it got into the final release" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: scsi: RDMA/isert: Fix a recently introduced regression related to logout scsi: fnic: do not queue commands during fwreset
Unified · Split
| @@ -2575,17 +2575,6 @@ isert_wait4logout(struct isert_conn *isert_conn) · 2574 unmodified lines | |||
| 2575 | } | 2575 | } |
| 2576 | } | 2576 | } |
| 2577 | 2577 | ||
| 2578 | static void | ||
| 2579 | isert_wait4cmds(struct iscsi_conn *conn) | ||
| 2580 | { | ||
| 2581 | isert_info("iscsi_conn %p\n", conn); | ||
| 2582 | |||
| 2583 | if (conn->sess) { | ||
| 2584 | target_sess_cmd_list_set_waiting(conn->sess->se_sess); | ||
| 2585 | target_wait_for_sess_cmds(conn->sess->se_sess); | ||
| 2586 | } | ||
| 2587 | } | ||
| 2588 | |||
| 2589 | /** | 2578 | /** |
| 2590 | * isert_put_unsol_pending_cmds() - Drop commands waiting for | 2579 | * isert_put_unsol_pending_cmds() - Drop commands waiting for |
| 2591 | * unsolicitate dataout | 2580 | * unsolicitate dataout |
| @@ -2633,7 +2622,6 @@ static void isert_wait_conn(struct iscsi_conn *conn) · 41 unmodified lines | |||
| 2633 | 2622 | ||
| 2634 | ib_drain_qp(isert_conn->qp); | 2623 | ib_drain_qp(isert_conn->qp); |
| 2635 | isert_put_unsol_pending_cmds(conn); | 2624 | isert_put_unsol_pending_cmds(conn); |
| 2636 | isert_wait4cmds(conn); | ||
| 2637 | isert_wait4logout(isert_conn); | 2625 | isert_wait4logout(isert_conn); |
| 2638 | 2626 | ||
| 2639 | queue_work(isert_release_wq, &isert_conn->release_work); | 2627 | queue_work(isert_release_wq, &isert_conn->release_work); |
| @@ -439,6 +439,9 @@ static int fnic_queuecommand_lck(struct scsi_cmnd *sc, void (*done)(struct scsi_ · 438 unmodified lines | |||
| 439 | if (unlikely(fnic_chk_state_flags_locked(fnic, FNIC_FLAGS_IO_BLOCKED))) | 439 | if (unlikely(fnic_chk_state_flags_locked(fnic, FNIC_FLAGS_IO_BLOCKED))) |
| 440 | return SCSI_MLQUEUE_HOST_BUSY; | 440 | return SCSI_MLQUEUE_HOST_BUSY; |
| 441 | 441 | ||
| 442 | if (unlikely(fnic_chk_state_flags_locked(fnic, FNIC_FLAGS_FWRESET))) | ||
| 443 | return SCSI_MLQUEUE_HOST_BUSY; | ||
| 444 | |||
| 442 | rport = starget_to_rport(scsi_target(sc->device)); | 445 | rport = starget_to_rport(scsi_target(sc->device)); |
| 443 | if (!rport) { | 446 | if (!rport) { |
| 444 | FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, | 447 | FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host, |
| @@ -4149,9 +4149,6 @@ int iscsit_close_connection( · 4148 unmodified lines | |||
| 4149 | iscsit_stop_nopin_response_timer(conn); | 4149 | iscsit_stop_nopin_response_timer(conn); |
| 4150 | iscsit_stop_nopin_timer(conn); | 4150 | iscsit_stop_nopin_timer(conn); |
| 4151 | 4151 | ||
| 4152 | if (conn->conn_transport->iscsit_wait_conn) | ||
| 4153 | conn->conn_transport->iscsit_wait_conn(conn); | ||
| 4154 | |||
| 4155 | /* | 4152 | /* |
| 4156 | * During Connection recovery drop unacknowledged out of order | 4153 | * During Connection recovery drop unacknowledged out of order |
| 4157 | * commands for this connection, and prepare the other commands | 4154 | * commands for this connection, and prepare the other commands |
| @@ -4237,6 +4234,9 @@ int iscsit_close_connection( · 79 unmodified lines | |||
| 4237 | target_sess_cmd_list_set_waiting(sess->se_sess); | 4234 | target_sess_cmd_list_set_waiting(sess->se_sess); |
| 4238 | target_wait_for_sess_cmds(sess->se_sess); | 4235 | target_wait_for_sess_cmds(sess->se_sess); |
| 4239 | 4236 | ||
| 4237 | if (conn->conn_transport->iscsit_wait_conn) | ||
| 4238 | conn->conn_transport->iscsit_wait_conn(conn); | ||
| 4239 | |||
| 4240 | ahash_request_free(conn->conn_tx_hash); | 4240 | ahash_request_free(conn->conn_tx_hash); |
| 4241 | if (conn->conn_rx_hash) { | 4241 | if (conn->conn_rx_hash) { |
| 4242 | struct crypto_ahash *tfm; | 4242 | struct crypto_ahash *tfm; |