mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-20 00:11:22 +00:00
[S390] dasd: prevent IO error during reserve/release loop
The termination of running CQR caused by reserve/release operations may lead to an IO error if reserve/release is done in a tight loop. Prevent this by increasing the retry counter after termination. Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
fdb1bb1575
commit
aade6c0dfb
@ -1742,11 +1742,20 @@ int dasd_sleep_on_interruptible(struct dasd_ccw_req *cqr)
|
||||
static inline int _dasd_term_running_cqr(struct dasd_device *device)
|
||||
{
|
||||
struct dasd_ccw_req *cqr;
|
||||
int rc;
|
||||
|
||||
if (list_empty(&device->ccw_queue))
|
||||
return 0;
|
||||
cqr = list_entry(device->ccw_queue.next, struct dasd_ccw_req, devlist);
|
||||
return device->discipline->term_IO(cqr);
|
||||
rc = device->discipline->term_IO(cqr);
|
||||
if (!rc)
|
||||
/*
|
||||
* CQR terminated because a more important request is pending.
|
||||
* Undo decreasing of retry counter because this is
|
||||
* not an error case.
|
||||
*/
|
||||
cqr->retries++;
|
||||
return rc;
|
||||
}
|
||||
|
||||
int dasd_sleep_on_immediatly(struct dasd_ccw_req *cqr)
|
||||
|
Loading…
Reference in New Issue
Block a user