Commit 39795d65 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

block: don't hold the queue_lock over blk_abort_request

There is nothing it could synchronize against, so don't go through
the pains of acquiring the lock.
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 079076b3
...@@ -75,7 +75,7 @@ ssize_t part_timeout_store(struct device *dev, struct device_attribute *attr, ...@@ -75,7 +75,7 @@ ssize_t part_timeout_store(struct device *dev, struct device_attribute *attr,
* This function requests that the block layer start recovery for the * This function requests that the block layer start recovery for the
* request by deleting the timer and calling the q's timeout function. * request by deleting the timer and calling the q's timeout function.
* LLDDs who implement their own error recovery MAY ignore the timeout * LLDDs who implement their own error recovery MAY ignore the timeout
* event if they generated blk_abort_req. Must hold queue lock. * event if they generated blk_abort_request.
*/ */
void blk_abort_request(struct request *req) void blk_abort_request(struct request *req)
{ {
......
...@@ -919,8 +919,6 @@ static void ata_eh_set_pending(struct ata_port *ap, int fastdrain) ...@@ -919,8 +919,6 @@ static void ata_eh_set_pending(struct ata_port *ap, int fastdrain)
void ata_qc_schedule_eh(struct ata_queued_cmd *qc) void ata_qc_schedule_eh(struct ata_queued_cmd *qc)
{ {
struct ata_port *ap = qc->ap; struct ata_port *ap = qc->ap;
struct request_queue *q = qc->scsicmd->device->request_queue;
unsigned long flags;
WARN_ON(!ap->ops->error_handler); WARN_ON(!ap->ops->error_handler);
...@@ -932,9 +930,7 @@ void ata_qc_schedule_eh(struct ata_queued_cmd *qc) ...@@ -932,9 +930,7 @@ void ata_qc_schedule_eh(struct ata_queued_cmd *qc)
* Note that ATA_QCFLAG_FAILED is unconditionally set after * Note that ATA_QCFLAG_FAILED is unconditionally set after
* this function completes. * this function completes.
*/ */
spin_lock_irqsave(q->queue_lock, flags);
blk_abort_request(qc->scsicmd->request); blk_abort_request(qc->scsicmd->request);
spin_unlock_irqrestore(q->queue_lock, flags);
} }
/** /**
......
...@@ -2770,10 +2770,7 @@ static int mtip_service_thread(void *data) ...@@ -2770,10 +2770,7 @@ static int mtip_service_thread(void *data)
blk_mq_quiesce_queue(dd->queue); blk_mq_quiesce_queue(dd->queue);
spin_lock(dd->queue->queue_lock); blk_mq_tagset_busy_iter(&dd->tags, mtip_queue_cmd, dd);
blk_mq_tagset_busy_iter(&dd->tags,
mtip_queue_cmd, dd);
spin_unlock(dd->queue->queue_lock);
set_bit(MTIP_PF_ISSUE_CMDS_BIT, &dd->port->flags); set_bit(MTIP_PF_ISSUE_CMDS_BIT, &dd->port->flags);
......
...@@ -601,12 +601,7 @@ void sas_ata_task_abort(struct sas_task *task) ...@@ -601,12 +601,7 @@ void sas_ata_task_abort(struct sas_task *task)
/* Bounce SCSI-initiated commands to the SCSI EH */ /* Bounce SCSI-initiated commands to the SCSI EH */
if (qc->scsicmd) { if (qc->scsicmd) {
struct request_queue *q = qc->scsicmd->device->request_queue;
unsigned long flags;
spin_lock_irqsave(q->queue_lock, flags);
blk_abort_request(qc->scsicmd->request); blk_abort_request(qc->scsicmd->request);
spin_unlock_irqrestore(q->queue_lock, flags);
return; return;
} }
......
...@@ -930,16 +930,10 @@ void sas_task_abort(struct sas_task *task) ...@@ -930,16 +930,10 @@ void sas_task_abort(struct sas_task *task)
return; return;
} }
if (dev_is_sata(task->dev)) { if (dev_is_sata(task->dev))
sas_ata_task_abort(task); sas_ata_task_abort(task);
} else { else
struct request_queue *q = sc->device->request_queue;
unsigned long flags;
spin_lock_irqsave(q->queue_lock, flags);
blk_abort_request(sc->request); blk_abort_request(sc->request);
spin_unlock_irqrestore(q->queue_lock, flags);
}
} }
void sas_target_destroy(struct scsi_target *starget) void sas_target_destroy(struct scsi_target *starget)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment