esp: don't reset async_len directly in esp_select() if cancelling request
Instead let the SCSI layer invoke the .cancel callback itself to cancel and reset the request state. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Tested-by: Alexander Bulekov <alxndr@bu.edu> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20210407195801.685-11-mark.cave-ayland@ilande.co.uk>
This commit is contained in:
parent
0ebb5fd805
commit
324c880989
@ -95,6 +95,7 @@ void esp_request_cancelled(SCSIRequest *req)
|
|||||||
scsi_req_unref(s->current_req);
|
scsi_req_unref(s->current_req);
|
||||||
s->current_req = NULL;
|
s->current_req = NULL;
|
||||||
s->current_dev = NULL;
|
s->current_dev = NULL;
|
||||||
|
s->async_len = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,7 +207,6 @@ static int esp_select(ESPState *s)
|
|||||||
if (s->current_req) {
|
if (s->current_req) {
|
||||||
/* Started a new command before the old one finished. Cancel it. */
|
/* Started a new command before the old one finished. Cancel it. */
|
||||||
scsi_req_cancel(s->current_req);
|
scsi_req_cancel(s->current_req);
|
||||||
s->async_len = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
s->current_dev = scsi_device_find(&s->bus, 0, target, 0);
|
s->current_dev = scsi_device_find(&s->bus, 0, target, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user