Hi James, Today's linux-next merge of the scsi tree got a conflict in drivers/s390/cio/qdio_main.c between commit 9c20b3dd8479 ("[S390] qdio: EQBS retry after CCQ 96") from the s390 tree and commit dfe5bb506172 ("[SCSI] qdio: base support for hardware data router with zfcp") from the scsi tree. I fixed it up (see below) and can carry the fix as necessary. -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx diff --cc drivers/s390/cio/qdio_main.c index a108e28,d2c1f1b..0000000 --- a/drivers/s390/cio/qdio_main.c +++ b/drivers/s390/cio/qdio_main.c @@@ -145,26 -151,16 +145,28 @@@ again goto again; } - if (rc < 0) { - DBF_ERROR("%4x EQBS ERROR", SCH_NO(q)); - DBF_ERROR("%3d%3d%2d", count, tmp_count, nr); - q->handler(q->irq_ptr->cdev, - QDIO_ERROR_ACTIVATE_CHECK_CONDITION, - q->nr, q->first_to_kick, count, - q->irq_ptr->int_parm); - return 0; + if (rc == 2) { + BUG_ON(tmp_count == count); + qperf_inc(q, eqbs_partial); + DBF_DEV_EVENT(DBF_WARN, q->irq_ptr, "EQBS part:%02x", + tmp_count); + /* + * Retry once, if that fails bail out and process the + * extracted buffers before trying again. + */ + if (!retried++) + goto again; + else + return count - tmp_count; } - return count - tmp_count; + + DBF_ERROR("%4x EQBS ERROR", SCH_NO(q)); + DBF_ERROR("%3d%3d%2d", count, tmp_count, nr); - q->handler(q->irq_ptr->cdev, QDIO_ERROR_ACTIVATE_CHECK_CONDITION, - 0, -1, -1, q->irq_ptr->int_parm); ++ q->handler(q->irq_ptr->cdev, ++ QDIO_ERROR_ACTIVATE_CHECK_CONDITION, ++ q->nr, q->first_to_kick, count, ++ q->irq_ptr->int_parm); + return 0; } /** @@@ -207,12 -198,17 +209,12 @@@ again qperf_inc(q, sqbs_partial); goto again; } - if (rc < 0) { - DBF_ERROR("%4x SQBS ERROR", SCH_NO(q)); - DBF_ERROR("%3d%3d%2d", count, tmp_count, nr); - q->handler(q->irq_ptr->cdev, - QDIO_ERROR_ACTIVATE_CHECK_CONDITION, - q->nr, q->first_to_kick, count, - q->irq_ptr->int_parm); - return 0; - } - WARN_ON(tmp_count); - return count - tmp_count; + + DBF_ERROR("%4x SQBS ERROR", SCH_NO(q)); + DBF_ERROR("%3d%3d%2d", count, tmp_count, nr); + q->handler(q->irq_ptr->cdev, QDIO_ERROR_ACTIVATE_CHECK_CONDITION, - 0, -1, -1, q->irq_ptr->int_parm); ++ q->nr, q->first_to_kick, count, q->irq_ptr->int_parm); + return 0; } /* returns number of examined buffers and their common state in *state */
Attachment:
pgpJvwdUlbaIP.pgp
Description: PGP signature