Commit 9487cfd
s390/dasd: fix handling of internal requests
Internal DASD device driver I/O such as query host access count or
path verification is started using the _sleep_on() function.
To mark a request as started or ended the callback_data is set to either
DASD_SLEEPON_START_TAG or DASD_SLEEPON_END_TAG.
In cases where the request has to be stopped unconditionally the status is
set to DASD_SLEEPON_END_TAG as well which leads to immediate clearing of
the request.
But the request might still be on a device request queue for normal
operation which might lead to a panic because of a BUG() statement in
__dasd_device_process_final_queue() or a list corruption of the device
request queue.
Fix by removing the setting of DASD_SLEEPON_END_TAG in the
dasd_cancel_req() and dasd_generic_requeue_all_requests() functions and
ensure that the request is not deleted in the requeue function.
Trigger the device tasklet in the requeue function and let the normal
processing cleanup the request.
Signed-off-by: Stefan Haberland <[email protected]>
Reviewed-by: Jan Hoeppner <[email protected]>
Signed-off-by: Martin Schwidefsky <[email protected]>1 parent 91ab883 commit 9487cfd
1 file changed
+7
-14
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2581 | 2581 | | |
2582 | 2582 | | |
2583 | 2583 | | |
2584 | | - | |
2585 | | - | |
2586 | 2584 | | |
2587 | 2585 | | |
2588 | 2586 | | |
| |||
3902 | 3900 | | |
3903 | 3901 | | |
3904 | 3902 | | |
3905 | | - | |
3906 | | - | |
3907 | | - | |
| 3903 | + | |
| 3904 | + | |
| 3905 | + | |
| 3906 | + | |
| 3907 | + | |
| 3908 | + | |
3908 | 3909 | | |
3909 | 3910 | | |
3910 | 3911 | | |
| |||
3917 | 3918 | | |
3918 | 3919 | | |
3919 | 3920 | | |
3920 | | - | |
3921 | | - | |
3922 | | - | |
3923 | | - | |
3924 | | - | |
3925 | | - | |
3926 | | - | |
3927 | 3921 | | |
3928 | 3922 | | |
3929 | 3923 | | |
| |||
3940 | 3934 | | |
3941 | 3935 | | |
3942 | 3936 | | |
3943 | | - | |
3944 | | - | |
| 3937 | + | |
3945 | 3938 | | |
3946 | 3939 | | |
3947 | 3940 | | |
| |||
0 commit comments