[SCSI] scsi_transport_fc: Make sure commands are completed when rport is offline
blk_end_request doesn't complete a bidi request successfully The unfinished request eventually triggers a panic in timeout handling routine fc_bsg_job_timeout as req->special is NULL Use blk_end_request_all to end the request unconditionally Signed-off-by: Lalit Chandivade <lalit.chandivade@qlogic.com> Acked-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
4ae0a6c15e
commit
d88a714bfe
1 changed files with 2 additions and 2 deletions
|
@ -3852,7 +3852,7 @@ fc_bsg_request_handler(struct request_queue *q, struct Scsi_Host *shost,
|
|||
if (rport && (rport->port_state != FC_PORTSTATE_ONLINE)) {
|
||||
req->errors = -ENXIO;
|
||||
spin_unlock_irq(q->queue_lock);
|
||||
blk_end_request(req, -ENXIO, blk_rq_bytes(req));
|
||||
blk_end_request_all(req, -ENXIO);
|
||||
spin_lock_irq(q->queue_lock);
|
||||
continue;
|
||||
}
|
||||
|
@ -3862,7 +3862,7 @@ fc_bsg_request_handler(struct request_queue *q, struct Scsi_Host *shost,
|
|||
ret = fc_req_to_bsgjob(shost, rport, req);
|
||||
if (ret) {
|
||||
req->errors = ret;
|
||||
blk_end_request(req, ret, blk_rq_bytes(req));
|
||||
blk_end_request_all(req, ret);
|
||||
spin_lock_irq(q->queue_lock);
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue