ide: don't acquire queue_lock in ide_complete_pm_rq
blk_mq_stop_hw_queues doesn't need any locking, and the ide dev_flags field isn't protected by it either. Reviewed-by: Omar Sandoval <osandov@fb.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>hifive-unleashed-5.1
parent
b2101f655f
commit
f04842734c
|
@ -201,7 +201,6 @@ void ide_complete_pm_rq(ide_drive_t *drive, struct request *rq)
|
||||||
{
|
{
|
||||||
struct request_queue *q = drive->queue;
|
struct request_queue *q = drive->queue;
|
||||||
struct ide_pm_state *pm = ide_req(rq)->special;
|
struct ide_pm_state *pm = ide_req(rq)->special;
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
ide_complete_power_step(drive, rq);
|
ide_complete_power_step(drive, rq);
|
||||||
if (pm->pm_step != IDE_PM_COMPLETED)
|
if (pm->pm_step != IDE_PM_COMPLETED)
|
||||||
|
@ -211,12 +210,10 @@ void ide_complete_pm_rq(ide_drive_t *drive, struct request *rq)
|
||||||
printk("%s: completing PM request, %s\n", drive->name,
|
printk("%s: completing PM request, %s\n", drive->name,
|
||||||
(ide_req(rq)->type == ATA_PRIV_PM_SUSPEND) ? "suspend" : "resume");
|
(ide_req(rq)->type == ATA_PRIV_PM_SUSPEND) ? "suspend" : "resume");
|
||||||
#endif
|
#endif
|
||||||
spin_lock_irqsave(&q->queue_lock, flags);
|
|
||||||
if (ide_req(rq)->type == ATA_PRIV_PM_SUSPEND)
|
if (ide_req(rq)->type == ATA_PRIV_PM_SUSPEND)
|
||||||
blk_mq_stop_hw_queues(q);
|
blk_mq_stop_hw_queues(q);
|
||||||
else
|
else
|
||||||
drive->dev_flags &= ~IDE_DFLAG_BLOCKED;
|
drive->dev_flags &= ~IDE_DFLAG_BLOCKED;
|
||||||
spin_unlock_irqrestore(&q->queue_lock, flags);
|
|
||||||
|
|
||||||
drive->hwif->rq = NULL;
|
drive->hwif->rq = NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue