Commit f276730f authored by Klaus D. Wacker's avatar Klaus D. Wacker Committed by Martin Schwidefsky

[S390] qdio: fix EQBS handling on CCQ96

QDIO returned from EQBS instruction in any case after return code
CCQ=96 was issued regardless whether buffer states for at least one
buffer were extracted or not.
This caused FCP devices to hang when running under z/VM and having
QIOASSASIST=ON and having high I/O rates.
In order to fix this qdio return code processing of EQBS instruction
after CCQ=96 is changed that buffers are returned and if no buffers
where extracted the instruction is repeated at once.
Signed-off-by: default avatarKlaus D. Wacker <kdwacker@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
parent 23eb68c5
...@@ -195,6 +195,8 @@ qdio_do_eqbs(struct qdio_q *q, unsigned char *state, ...@@ -195,6 +195,8 @@ qdio_do_eqbs(struct qdio_q *q, unsigned char *state,
again: again:
ccq = do_eqbs(irq->sch_token, state, q_no, start, cnt); ccq = do_eqbs(irq->sch_token, state, q_no, start, cnt);
rc = qdio_check_ccq(q, ccq); rc = qdio_check_ccq(q, ccq);
if ((ccq == 96) && (tmp_cnt != *cnt))
rc = 0;
if (rc == 1) { if (rc == 1) {
QDIO_DBF_TEXT5(1,trace,"eqAGAIN"); QDIO_DBF_TEXT5(1,trace,"eqAGAIN");
goto again; goto again;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment