|
Miroslav Franc |
2dbe87 |
From: Stefan Haberland <sth@linux.ibm.com>
|
|
Miroslav Franc |
2dbe87 |
Date: Wed, 5 Apr 2023 16:20:17 +0200
|
|
Miroslav Franc |
2dbe87 |
Subject: s390/dasd: fix hanging blockdevice after request requeue
|
|
Miroslav Franc |
2dbe87 |
Git-commit: d8898ee50edecacdf0141f26fd90acf43d7e9cd7
|
|
Miroslav Franc |
2dbe87 |
Patch-mainline: v6.4-rc1
|
|
Miroslav Franc |
2dbe87 |
References: git-fixes bsc#1211687
|
|
Miroslav Franc |
2dbe87 |
|
|
Miroslav Franc |
2dbe87 |
The DASD driver does not kick the requeue list when requeuing IO requests
|
|
Miroslav Franc |
2dbe87 |
to the blocklayer. This might lead to hanging blockdevice when there is
|
|
Miroslav Franc |
2dbe87 |
no other trigger for this.
|
|
Miroslav Franc |
2dbe87 |
|
|
Miroslav Franc |
2dbe87 |
Fix by automatically kick the requeue list when requeuing DASD requests
|
|
Miroslav Franc |
2dbe87 |
to the blocklayer.
|
|
Miroslav Franc |
2dbe87 |
|
|
Miroslav Franc |
2dbe87 |
Fixes: e443343e509a ("s390/dasd: blk-mq conversion")
|
|
Miroslav Franc |
2dbe87 |
CC: stable@vger.kernel.org # 4.14+
|
|
Miroslav Franc |
2dbe87 |
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
|
|
Miroslav Franc |
2dbe87 |
Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
|
|
Miroslav Franc |
2dbe87 |
Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
|
|
Miroslav Franc |
2dbe87 |
Link: https://lore.kernel.org/r/20230405142017.2446986-8-sth@linux.ibm.com
|
|
Miroslav Franc |
2dbe87 |
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
Miroslav Franc |
2dbe87 |
Acked-by: Miroslav Franc <mfranc@suse.cz>
|
|
Miroslav Franc |
2dbe87 |
---
|
|
Miroslav Franc |
2dbe87 |
drivers/s390/block/dasd.c | 2 +-
|
|
Miroslav Franc |
2dbe87 |
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
Miroslav Franc |
2dbe87 |
|
|
Miroslav Franc |
2dbe87 |
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
|
|
Miroslav Franc |
2dbe87 |
index 3696931f8015..9fbfce735d56 100644
|
|
Miroslav Franc |
2dbe87 |
--- a/drivers/s390/block/dasd.c
|
|
Miroslav Franc |
2dbe87 |
+++ b/drivers/s390/block/dasd.c
|
|
Miroslav Franc |
2dbe87 |
@@ -2953,7 +2953,7 @@ static int _dasd_requeue_request(struct dasd_ccw_req *cqr)
|
|
Miroslav Franc |
2dbe87 |
return 0;
|
|
Miroslav Franc |
2dbe87 |
spin_lock_irq(&cqr->dq->lock);
|
|
Miroslav Franc |
2dbe87 |
req = (struct request *) cqr->callback_data;
|
|
Miroslav Franc |
2dbe87 |
- blk_mq_requeue_request(req, false);
|
|
Miroslav Franc |
2dbe87 |
+ blk_mq_requeue_request(req, true);
|
|
Miroslav Franc |
2dbe87 |
spin_unlock_irq(&cqr->dq->lock);
|
|
Miroslav Franc |
2dbe87 |
|
|
Miroslav Franc |
2dbe87 |
return 0;
|
|
Miroslav Franc |
2dbe87 |
|