ataflop: implement mq_ops->commit_rqs() hook
authorJens Axboe <axboe@kernel.dk>
Wed, 28 Nov 2018 13:09:07 +0000 (06:09 -0700)
committerJens Axboe <axboe@kernel.dk>
Thu, 29 Nov 2018 17:12:27 +0000 (10:12 -0700)
We need this for blk-mq to kick things into gear, if we told it that
we had more IO coming, but then failed to deliver on that promise.

Reviewed-by: Omar Sandoval <osandov@fb.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/ataflop.c

index 313064b..b0dbbdf 100644 (file)
@@ -1471,6 +1471,15 @@ static void setup_req_params( int drive )
                        ReqTrack, ReqSector, (unsigned long)ReqData ));
 }
 
+static void ataflop_commit_rqs(struct blk_mq_hw_ctx *hctx)
+{
+       spin_lock_irq(&ataflop_lock);
+       atari_disable_irq(IRQ_MFP_FDC);
+       finish_fdc();
+       atari_enable_irq(IRQ_MFP_FDC);
+       spin_unlock_irq(&ataflop_lock);
+}
+
 static blk_status_t ataflop_queue_rq(struct blk_mq_hw_ctx *hctx,
                                     const struct blk_mq_queue_data *bd)
 {
@@ -1947,6 +1956,7 @@ static const struct block_device_operations floppy_fops = {
 
 static const struct blk_mq_ops ataflop_mq_ops = {
        .queue_rq = ataflop_queue_rq,
+       .commit_rqs = ataflop_commit_rqs,
 };
 
 static struct kobject *floppy_find(dev_t dev, int *part, void *data)