mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-23 22:25:40 +08:00
IB/srp: Process all error completions
If the RDMA RC connection is closed, tell the SCSI mid-layer to terminate all pending commands instead of only the first. Signed-off-by: Bart Van Assche <bvanassche@acm.org> Acked-by: David Dillow <dillowda@ornl.gov> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
948d1e889e
commit
4f0af69799
@ -1274,8 +1274,12 @@ static void srp_handle_qp_err(enum ib_wc_status wc_status,
|
|||||||
enum ib_wc_opcode wc_opcode,
|
enum ib_wc_opcode wc_opcode,
|
||||||
struct srp_target_port *target)
|
struct srp_target_port *target)
|
||||||
{
|
{
|
||||||
shost_printk(KERN_ERR, target->scsi_host, PFX "failed %s status %d\n",
|
if (!target->qp_in_error) {
|
||||||
wc_opcode & IB_WC_RECV ? "receive" : "send", wc_status);
|
shost_printk(KERN_ERR, target->scsi_host,
|
||||||
|
PFX "failed %s status %d\n",
|
||||||
|
wc_opcode & IB_WC_RECV ? "receive" : "send",
|
||||||
|
wc_status);
|
||||||
|
}
|
||||||
target->qp_in_error = true;
|
target->qp_in_error = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1290,7 +1294,6 @@ static void srp_recv_completion(struct ib_cq *cq, void *target_ptr)
|
|||||||
srp_handle_recv(target, &wc);
|
srp_handle_recv(target, &wc);
|
||||||
} else {
|
} else {
|
||||||
srp_handle_qp_err(wc.status, wc.opcode, target);
|
srp_handle_qp_err(wc.status, wc.opcode, target);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1307,7 +1310,6 @@ static void srp_send_completion(struct ib_cq *cq, void *target_ptr)
|
|||||||
list_add(&iu->list, &target->free_tx);
|
list_add(&iu->list, &target->free_tx);
|
||||||
} else {
|
} else {
|
||||||
srp_handle_qp_err(wc.status, wc.opcode, target);
|
srp_handle_qp_err(wc.status, wc.opcode, target);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user