Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f276730f8da0e8136d8491b6ef44fc719d450a1b
Commit:     f276730f8da0e8136d8491b6ef44fc719d450a1b
Parent:     23eb68c569cdbaad1a88015be1d69c565cd3926a
Author:     Klaus D. Wacker <[EMAIL PROTECTED]>
AuthorDate: Wed Aug 22 13:51:38 2007 +0200
Committer:  Martin Schwidefsky <[EMAIL PROTECTED]>
CommitDate: Wed Aug 22 13:51:47 2007 +0200

    [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: Klaus D. Wacker <[EMAIL PROTECTED]>
    Signed-off-by: Martin Schwidefsky <[EMAIL PROTECTED]>
    Signed-off-by: Heiko Carstens <[EMAIL PROTECTED]>
---
 drivers/s390/cio/qdio.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/s390/cio/qdio.c b/drivers/s390/cio/qdio.c
index 03347ae..badfb5b 100644
--- a/drivers/s390/cio/qdio.c
+++ b/drivers/s390/cio/qdio.c
@@ -195,6 +195,8 @@ qdio_do_eqbs(struct qdio_q *q, unsigned char *state,
 again:
        ccq = do_eqbs(irq->sch_token, state, q_no, start, cnt);
        rc = qdio_check_ccq(q, ccq);
+       if ((ccq == 96) && (tmp_cnt != *cnt))
+               rc = 0;
        if (rc == 1) {
                QDIO_DBF_TEXT5(1,trace,"eqAGAIN");
                goto again;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to