9 #define KMSG_COMPONENT "dasd-eckd"
14 #define PRINTK_HEADER "dasd_erp(3990): "
52 dasd_3990_erp_cleanup(
struct dasd_ccw_req * erp,
char final_status)
57 cqr->
status = final_status;
77 "blocking request queue for %is", expires/
HZ);
110 if (erp->
function != dasd_3990_erp_int_req) {
113 erp->
function = dasd_3990_erp_int_req;
119 "is offline or not installed - "
120 "INTERVENTION REQUIRED!!\n");
122 dasd_3990_erp_block_queue(erp, 60*
HZ);
156 ~(erp->
irb.esw.esw0.sublog.lpum);
158 erp->
lpm &= ~(erp->
irb.esw.esw0.sublog.lpum);
160 if ((erp->
lpm & opm) != 0x00) {
163 "try alternate lpm=%x (lpum=%x / opm=%x)",
164 erp->
lpm, erp->
irb.esw.esw0.sublog.lpum, opm);
171 "The DASD cannot be reached on any path (lpum=%x"
172 "/opm=%x)\n", erp->
irb.esw.esw0.sublog.lpum, opm);
204 sizeof(
struct DCTL_data),
206 if (IS_ERR(dctl_cqr)) {
208 "Unable to allocate DCTL-CQR\n");
213 DCTL_data = dctl_cqr->
data;
224 dctl_cqr->
function = dasd_3990_erp_DCTL;
227 dctl_cqr->
memdev = device;
263 erp->
function = dasd_3990_erp_action_1_sec;
264 dasd_3990_erp_alternate_path(erp);
270 erp->
function = dasd_3990_erp_action_1;
271 dasd_3990_erp_alternate_path(erp);
277 erp->
function = dasd_3990_erp_action_1_sec;
309 if (erp->
function != dasd_3990_erp_action_4) {
312 "dasd_3990_erp_action_4: first time retry");
315 erp->
function = dasd_3990_erp_action_4;
318 if (sense && (sense[25] == 0x1D)) {
321 "waiting for state change pending "
322 "interrupt, %d retries left",
325 dasd_3990_erp_block_queue(erp, 30*
HZ);
327 }
else if (sense && (sense[25] == 0x1E)) {
329 "busy - redriving request later, "
332 dasd_3990_erp_block_queue(erp,
HZ);
336 "redriving request immediately, "
373 erp->
function = dasd_3990_erp_action_5;
394 dasd_3990_handle_env_data(
struct dasd_ccw_req * erp,
char *sense)
398 char msg_format = (sense[7] & 0xF0);
399 char msg_no = (sense[7] & 0x0F);
402 switch (msg_format) {
405 if (sense[1] & 0x10) {
412 "FORMAT 0 - Invalid Command\n");
416 "FORMAT 0 - Invalid Command "
421 "FORMAT 0 - CCW Count less than "
426 "FORMAT 0 - Invalid Parameter\n");
430 "FORMAT 0 - Diagnostic of Special"
431 " Command Violates File Mask\n");
435 "FORMAT 0 - Channel Returned with "
436 "Incorrect retry CCW\n");
440 "FORMAT 0 - Reset Notification\n");
444 "FORMAT 0 - Storage Path Restart\n");
448 "FORMAT 0 - Channel requested "
449 "... %02x\n", sense[8]);
453 "FORMAT 0 - Invalid Defective/"
454 "Alternate Track Pointer\n");
458 "FORMAT 0 - DPS Installation "
463 "FORMAT 0 - Command Invalid on "
464 "Secondary Address\n");
468 "FORMAT 0 - Status Not As "
469 "Required: reason %02x\n",
474 "FORMAT 0 - Reserved\n");
482 "FORMAT 0 - Device Error "
487 "FORMAT 0 - Reserved\n");
491 "FORMAT 0 - Device Fenced - "
492 "device = %02x\n", sense[4]);
496 "FORMAT 0 - Data Pinned for "
501 "FORMAT 0 - Reserved\n");
512 "FORMAT 1 - Device Status 1 not as "
517 "FORMAT 1 - Index missing\n");
521 "FORMAT 1 - Interruption cannot be "
526 "FORMAT 1 - Device did not respond to "
531 "FORMAT 1 - Device check-2 error or Set "
532 "Sector is not complete\n");
536 "FORMAT 1 - Head address does not "
541 "FORMAT 1 - Device status 1 not valid\n");
545 "FORMAT 1 - Device not ready\n");
549 "FORMAT 1 - Track physical address did "
554 "FORMAT 1 - Missing device address bit\n");
558 "FORMAT 1 - Drive motor switch is off\n");
562 "FORMAT 1 - Seek incomplete\n");
566 "FORMAT 1 - Cylinder address did not "
571 "FORMAT 1 - Offset active cannot be "
576 "FORMAT 1 - Reserved\n");
584 "FORMAT 2 - 3990 check-2 error\n");
588 "FORMAT 2 - Support facility errors\n");
592 "FORMAT 2 - Microcode detected error "
598 "FORMAT 2 - Reserved\n");
606 "FORMAT 3 - Allegiance terminated\n");
610 "FORMAT 3 - Reserved\n");
618 "FORMAT 4 - Home address area error\n");
622 "FORMAT 4 - Count area error\n");
626 "FORMAT 4 - Key area error\n");
630 "FORMAT 4 - Data area error\n");
634 "FORMAT 4 - No sync byte in home address "
639 "FORMAT 4 - No sync byte in count address "
644 "FORMAT 4 - No sync byte in key area\n");
648 "FORMAT 4 - No sync byte in data area\n");
652 "FORMAT 4 - Home address area error; "
657 "FORMAT 4 - Count area error; offset "
662 "FORMAT 4 - Key area error; offset "
667 "FORMAT 4 - Data area error; "
672 "FORMAT 4 - No sync byte in home "
673 "address area; offset active\n");
677 "FORMAT 4 - No syn byte in count "
678 "address area; offset active\n");
682 "FORMAT 4 - No sync byte in key area; "
687 "FORMAT 4 - No syn byte in data area; "
692 "FORMAT 4 - Reserved\n");
700 "FORMAT 5 - Data Check in the "
701 "home address area\n");
705 "FORMAT 5 - Data Check in the count "
710 "FORMAT 5 - Data Check in the key area\n");
714 "FORMAT 5 - Data Check in the data "
719 "FORMAT 5 - Data Check in the "
720 "home address area; offset active\n");
724 "FORMAT 5 - Data Check in the count area; "
729 "FORMAT 5 - Data Check in the key area; "
734 "FORMAT 5 - Data Check in the data area; "
739 "FORMAT 5 - Reserved\n");
747 "FORMAT 6 - Overrun on channel A\n");
751 "FORMAT 6 - Overrun on channel B\n");
755 "FORMAT 6 - Overrun on channel C\n");
759 "FORMAT 6 - Overrun on channel D\n");
763 "FORMAT 6 - Overrun on channel E\n");
767 "FORMAT 6 - Overrun on channel F\n");
771 "FORMAT 6 - Overrun on channel G\n");
775 "FORMAT 6 - Overrun on channel H\n");
779 "FORMAT 6 - Reserved\n");
787 "FORMAT 7 - RCC initiated by a connection "
792 "FORMAT 7 - RCC 1 sequence not "
797 "FORMAT 7 - RCC 1 and RCC 2 sequences not "
802 "FORMAT 7 - Invalid tag-in during "
803 "selection sequence\n");
807 "FORMAT 7 - extra RCC required\n");
811 "FORMAT 7 - Invalid DCC selection "
812 "response or timeout\n");
816 "FORMAT 7 - Missing end operation; device "
817 "transfer complete\n");
821 "FORMAT 7 - Missing end operation; device "
822 "transfer incomplete\n");
826 "FORMAT 7 - Invalid tag-in for an "
827 "immediate command sequence\n");
831 "FORMAT 7 - Invalid tag-in for an "
832 "extended command sequence\n");
836 "FORMAT 7 - 3990 microcode time out when "
837 "stopping selection\n");
841 "FORMAT 7 - No response to selection "
842 "after a poll interruption\n");
846 "FORMAT 7 - Permanent path error (DASD "
847 "controller not available)\n");
851 "FORMAT 7 - DASD controller not available"
852 " on disconnected command chain\n");
856 "FORMAT 7 - Reserved\n");
865 "FORMAT 8 - Error correction code "
870 "FORMAT 8 - Unexpected end operation "
875 "FORMAT 8 - End operation with transfer "
880 "FORMAT 8 - End operation with transfer "
885 "FORMAT 8 - DPS checks after a system "
886 "reset or selective reset\n");
890 "FORMAT 8 - DPS cannot be filled\n");
894 "FORMAT 8 - Short busy time-out during "
895 "device selection\n");
899 "FORMAT 8 - DASD controller failed to "
900 "set or reset the long busy latch\n");
904 "FORMAT 8 - No interruption from device "
905 "during a command chain\n");
909 "FORMAT 8 - Reserved\n");
919 "FORMAT 9 - Device check-2 error\n");
923 "FORMAT 9 - Head address did not "
928 "FORMAT 9 - Track physical address did "
929 "not compare while oriented\n");
933 "FORMAT 9 - Cylinder address did not "
938 "FORMAT 9 - Reserved\n");
946 "FORMAT F - Operation Terminated\n");
950 "FORMAT F - Subsystem Processing Error\n");
954 "FORMAT F - Cache or nonvolatile storage "
955 "equipment failure\n");
959 "FORMAT F - Caching terminated\n");
963 "FORMAT F - Cache fast write access not "
968 "FORMAT F - Track format incorrect\n");
972 "FORMAT F - Caching reinitiated\n");
976 "FORMAT F - Nonvolatile storage "
981 "FORMAT F - Volume is suspended duplex\n");
988 "FORMAT F - Subsystem status cannot be "
993 "FORMAT F - Caching status reset to "
998 "FORMAT F - DASD Fast Write inhibited\n");
1002 "FORMAT D - Reserved\n");
1010 "An error occurred in the DASD device driver, "
1011 "reason=%s\n", errorstring);
1031 dasd_3990_erp_com_rej(
struct dasd_ccw_req * erp,
char *sense)
1036 erp->
function = dasd_3990_erp_com_rej;
1042 "Command Reject - environmental data present");
1044 dasd_3990_handle_env_data(erp, sense);
1049 dev_err(&device->
cdev->dev,
"An I/O request was rejected"
1050 " because writing is inhibited\n");
1055 dev_err(&device->
cdev->dev,
"An error occurred in the DASD "
1056 "device driver, reason=%s\n",
"09");
1085 if (erp->
function != dasd_3990_erp_bus_out) {
1087 erp->
function = dasd_3990_erp_bus_out;
1093 "bus out parity error or BOPC requested by "
1096 dasd_3990_erp_block_queue(erp, 60*
HZ);
1116 dasd_3990_erp_equip_check(
struct dasd_ccw_req * erp,
char *sense)
1121 erp->
function = dasd_3990_erp_equip_check;
1125 "Write inhibited path encountered\n");
1129 dev_err(&device->
cdev->dev,
"An error occurred in the DASD "
1130 "device driver, reason=%s\n",
"04");
1132 erp = dasd_3990_erp_action_1(erp);
1134 }
else if (sense[2] & SNS2_ENV_DATA_PRESENT) {
1137 "Equipment Check - " "environmental data present");
1139 dasd_3990_handle_env_data(erp, sense);
1141 erp = dasd_3990_erp_action_4(erp, sense);
1146 "Equipment Check - retry exhausted or "
1149 erp = dasd_3990_erp_action_1(erp);
1155 "Equipment check or processing error");
1157 erp = dasd_3990_erp_action_5(erp);
1175 dasd_3990_erp_data_check(
struct dasd_ccw_req * erp,
char *sense)
1180 erp->
function = dasd_3990_erp_data_check;
1185 dev_emerg(&device->
cdev->dev,
1186 "Data recovered during retry with PCI "
1187 "fetch mode active\n");
1190 panic(
"No way to inform application about the possibly "
1193 }
else if (sense[2] & SNS2_ENV_DATA_PRESENT) {
1196 "Uncorrectable data check recovered secondary "
1197 "addr of duplex pair");
1199 erp = dasd_3990_erp_action_4(erp, sense);
1204 "Uncorrectable data check with internal "
1207 erp = dasd_3990_erp_action_1(erp);
1212 "Uncorrectable data check with retry count "
1215 erp = dasd_3990_erp_action_5(erp);
1234 dasd_3990_erp_overrun(
struct dasd_ccw_req * erp,
char *sense)
1239 erp->
function = dasd_3990_erp_overrun;
1242 "Overrun - service overrun or overrun"
1243 " error requested by channel");
1245 erp = dasd_3990_erp_action_5(erp);
1263 dasd_3990_erp_inv_format(
struct dasd_ccw_req * erp,
char *sense)
1268 erp->
function = dasd_3990_erp_inv_format;
1270 if (sense[2] & SNS2_ENV_DATA_PRESENT) {
1273 "Track format error when destaging or "
1276 dasd_3990_handle_env_data(erp, sense);
1278 erp = dasd_3990_erp_action_4(erp, sense);
1283 "An error occurred in the DASD device driver, "
1284 "reason=%s\n",
"06");
1305 dasd_3990_erp_EOC(
struct dasd_ccw_req * default_erp,
char *sense)
1311 "The cylinder data for accessing the DASD is inconsistent\n");
1330 dasd_3990_erp_env_data(
struct dasd_ccw_req * erp,
char *sense)
1335 erp->
function = dasd_3990_erp_env_data;
1339 dasd_3990_handle_env_data(erp, sense);
1342 if (sense[7] != 0x0F) {
1343 erp = dasd_3990_erp_action_4(erp, sense);
1365 dasd_3990_erp_no_rec(
struct dasd_ccw_req * default_erp,
char *sense)
1371 "The specified record was not found\n");
1396 dev_err(&device->
cdev->dev,
"Accessing the DASD failed because of "
1397 "a hardware error\n");
1418 static struct dasd_ccw_req *dasd_3990_erp_inspect_alias(
1432 && (sense[0] == 0x10) && (sense[7] == 0x0F)
1433 && (sense[8] == 0x67)) {
1447 "ERP on alias device for request %p,"
1448 " recover on base device %s", cqr,
1449 dev_name(&cqr->
block->base->cdev->dev));
1453 erp->
function = dasd_3990_erp_inspect_alias;
1475 dasd_3990_erp_inspect_24(
struct dasd_ccw_req * erp,
char *sense)
1483 erp_filled = dasd_3990_erp_com_rej(erp, sense);
1487 erp_filled = dasd_3990_erp_int_req(erp);
1491 erp_filled = dasd_3990_erp_bus_out(erp);
1495 erp_filled = dasd_3990_erp_equip_check(erp, sense);
1499 erp_filled = dasd_3990_erp_data_check(erp, sense);
1503 erp_filled = dasd_3990_erp_overrun(erp, sense);
1507 erp_filled = dasd_3990_erp_inv_format(erp, sense);
1511 erp_filled = dasd_3990_erp_EOC(erp, sense);
1514 if ((erp_filled ==
NULL) && (sense[2] & SNS2_ENV_DATA_PRESENT)) {
1515 erp_filled = dasd_3990_erp_env_data(erp, sense);
1519 erp_filled = dasd_3990_erp_no_rec(erp, sense);
1523 erp_filled = dasd_3990_erp_file_prot(erp);
1526 if (erp_filled ==
NULL) {
1555 dasd_3990_erp_action_10_32(
struct dasd_ccw_req * erp,
char *sense)
1561 erp->
function = dasd_3990_erp_action_10_32;
1589 dasd_3990_erp_action_1B_32(
struct dasd_ccw_req * default_erp,
char *sense)
1602 "Write not finished because of unexpected condition");
1604 default_erp->
function = dasd_3990_erp_action_1B_32;
1613 if (scsw_is_tm(&cqr->
irb.scsw)) {
1615 "32 bit sense, action 1B is not defined"
1616 " in transport mode - just retry");
1621 if (sense[1] & 0x01) {
1623 "Imprecise ending is set - just retry");
1630 cpa = default_erp->
refers->irb.scsw.cmd.cpa;
1634 "Unable to determine address of the CCW "
1648 dev_err(&device->
cdev->dev,
"An error occurred in the DASD "
1649 "device driver, reason=%s\n",
"01");
1654 DE_data = erp->
data;
1657 PFX_data = cqr->
data;
1666 if ((sense[3] == 0x01) && (LO_data[1] & 0x01)) {
1671 if ((sense[7] & 0x3F) == 0x01) {
1675 }
else if ((sense[7] & 0x3F) == 0x03) {
1680 LO_data[0] = sense[7];
1683 LO_data[1] = sense[8];
1684 LO_data[2] = sense[9];
1685 LO_data[3] = sense[3];
1686 LO_data[4] = sense[29];
1687 LO_data[5] = sense[30];
1688 LO_data[7] = sense[31];
1690 memcpy(&(LO_data[8]), &(sense[11]), 8);
1715 erp->
function = dasd_3990_erp_action_1B_32;
1748 dasd_3990_update_1B(
struct dasd_ccw_req * previous_erp,
char *sense)
1759 "Write not finished because of unexpected condition"
1769 if (scsw_is_tm(&cqr->
irb.scsw)) {
1771 "32 bit sense, action 1B, update,"
1772 " in transport mode - just retry");
1773 return previous_erp;
1777 if (sense[1] & 0x01) {
1779 "Imprecise ending is set - just retry");
1783 return previous_erp;
1788 cpa = previous_erp->
irb.scsw.cmd.cpa;
1793 dev_err(&device->
cdev->dev,
"An error occurred in the DASD "
1794 "device driver, reason=%s\n",
"02");
1798 return previous_erp;
1806 if ((sense[3] == 0x01) && (LO_data[1] & 0x01)) {
1810 return previous_erp;
1813 if ((sense[7] & 0x3F) == 0x01) {
1817 }
else if ((sense[7] & 0x3F) == 0x03) {
1822 LO_data[0] = sense[7];
1825 LO_data[1] = sense[8];
1826 LO_data[2] = sense[9];
1827 LO_data[3] = sense[3];
1828 LO_data[4] = sense[29];
1829 LO_data[5] = sense[30];
1830 LO_data[7] = sense[31];
1832 memcpy(&(LO_data[8]), &(sense[11]), 8);
1864 dasd_3990_erp_compound_retry(
struct dasd_ccw_req * erp,
char *sense)
1867 switch (sense[25] & 0x03) {
1888 erp->
function = dasd_3990_erp_compound_retry;
1908 dasd_3990_erp_compound_path(
struct dasd_ccw_req * erp,
char *sense)
1911 dasd_3990_erp_alternate_path(erp);
1922 erp->
function = dasd_3990_erp_compound_path;
1941 dasd_3990_erp_compound_code(
struct dasd_ccw_req * erp,
char *sense)
1946 switch (sense[28]) {
1950 erp = dasd_3990_erp_DCTL(erp, 0x20);
1957 dasd_3990_erp_block_queue (erp, 5*
HZ);
1966 erp->
function = dasd_3990_erp_compound_code;
1989 dasd_3990_erp_compound_config(
struct dasd_ccw_req * erp,
char *sense)
1999 "An error occurred in the DASD device driver, "
2000 "reason=%s\n",
"05");
2004 erp->
function = dasd_3990_erp_compound_config;
2024 dasd_3990_erp_compound(
struct dasd_ccw_req * erp,
char *sense)
2027 if ((erp->
function == dasd_3990_erp_compound_retry) &&
2030 dasd_3990_erp_compound_path(erp, sense);
2033 if ((erp->
function == dasd_3990_erp_compound_path) &&
2036 erp = dasd_3990_erp_compound_code(erp, sense);
2039 if ((erp->
function == dasd_3990_erp_compound_code) &&
2042 dasd_3990_erp_compound_config(erp, sense);
2072 "%02x%02x%02x%02x\n", sense[22],
2073 sense[23], sense[11], sense[12]);
2077 "%02x%02x%02x%02x\n", sense[22],
2078 sense[23], sense[11], sense[12]);
2098 dasd_3990_erp_inspect_32(
struct dasd_ccw_req * erp,
char *sense)
2103 erp->
function = dasd_3990_erp_inspect_32;
2112 dasd_3990_erp_compound_retry(erp, sense);
2117 switch (sense[25]) {
2121 "ERP called for successful request"
2127 "ERP failed for the DASD\n");
2134 erp = dasd_3990_erp_int_req(erp);
2139 dev_err(&device->
cdev->dev,
"An error occurred in the "
2140 "DASD device driver, reason=%s\n",
"08");
2146 erp = dasd_3990_erp_action_10_32(erp, sense);
2153 "An error occurred in the DASD device driver, "
2154 "reason=%s\n",
"07");
2161 erp = dasd_3990_erp_action_1B_32(erp, sense);
2165 dev_emerg(&device->
cdev->dev,
2166 "Data recovered during retry with PCI "
2167 "fetch mode active\n");
2171 (
"Invalid data - No way to inform application "
2172 "about the possibly incorrect data");
2177 "A State change pending condition exists "
2178 "for the subsystem or device");
2180 erp = dasd_3990_erp_action_4(erp, sense);
2185 "Busy condition exists "
2186 "for the subsystem or device");
2187 erp = dasd_3990_erp_action_4(erp, sense);
2227 "channel or interface control check");
2228 erp = dasd_3990_erp_action_4(erp,
NULL);
2253 erp_new = dasd_3990_erp_inspect_alias(erp);
2263 erp_new = dasd_3990_erp_control_check(erp);
2265 else if (sense[27] & DASD_SENSE_BIT_0) {
2268 erp_new = dasd_3990_erp_inspect_24(erp, sense);
2273 erp_new = dasd_3990_erp_inspect_32(erp, sense);
2304 int cplength, datasize;
2311 datasize = 64 +
sizeof(
struct tcw) +
sizeof(
struct tsb);
2319 cplength, datasize, device);
2323 "Unable to allocate ERP request");
2328 "Unable to allocate ERP request "
2329 "(%i retries left)",
2342 tsb = (
struct tsb *) &tcw[1];
2343 *tcw = *((
struct tcw *)cqr->
cpaddr);
2359 erp->
function = dasd_3990_erp_add_erp;
2389 dasd_3990_erp_additional_erp(
struct dasd_ccw_req * cqr)
2395 erp = dasd_3990_erp_add_erp(cqr);
2403 erp = dasd_3990_erp_inspect(erp);
2428 static int dasd_3990_erp_error_match(
struct dasd_ccw_req *cqr1,
2431 char *sense1, *sense2;
2440 if (!sense1 != !sense2)
2443 if (!sense1 && !sense2) {
2451 if (!(sense1 && sense2 &&
2452 (
memcmp(sense1, sense2, 3) == 0) &&
2453 (sense1[27] == sense2[27]) &&
2454 (sense1[25] == sense2[25]))) {
2492 match = dasd_3990_erp_error_match(erp_head, cqr->
refers);
2530 if ((erp->
function == dasd_3990_erp_bus_out) ||
2531 (erp->
function == dasd_3990_erp_action_1) ||
2532 (erp->
function == dasd_3990_erp_action_4)) {
2534 erp = dasd_3990_erp_action_1(erp);
2536 }
else if (erp->
function == dasd_3990_erp_action_1_sec) {
2537 erp = dasd_3990_erp_action_1_sec(erp);
2538 }
else if (erp->
function == dasd_3990_erp_action_5) {
2542 erp = dasd_3990_erp_action_1(erp);
2544 if (sense && !(sense[2] & DASD_SENSE_BIT_0)) {
2549 switch (sense[25]) {
2552 erp = dasd_3990_erp_DCTL(erp, 0x20);
2557 erp = dasd_3990_erp_DCTL(erp, 0x40);
2562 erp = dasd_3990_erp_DCTL(erp, 0x80);
2567 "invalid subcommand modifier 0x%x "
2568 "for Diagnostic Control Command",
2575 ((erp->
function == dasd_3990_erp_compound_retry) ||
2576 (erp->
function == dasd_3990_erp_compound_path) ||
2577 (erp->
function == dasd_3990_erp_compound_code) ||
2578 (erp->
function == dasd_3990_erp_compound_config))) {
2580 erp = dasd_3990_erp_compound(erp, sense);
2588 "ERP %p has run out of retries and failed\n", erp);
2617 dasd_3990_erp_handle_match_erp(
struct dasd_ccw_req *erp_head,
2626 while (erp_done != erp) {
2628 if (erp_done ==
NULL)
2630 "original request was lost\n");
2635 erp_free = erp_done;
2636 erp_done = erp_done->
refers;
2648 if (sense && erp->
function == dasd_3990_erp_action_4) {
2650 erp = dasd_3990_erp_action_4(erp, sense);
2653 erp->
function == dasd_3990_erp_action_1B_32) {
2655 erp = dasd_3990_update_1B(erp, sense);
2657 }
else if (sense && erp->
function == dasd_3990_erp_int_req) {
2659 erp = dasd_3990_erp_int_req(erp);
2664 "%i retries left for erp %p",
2674 erp = dasd_3990_erp_further_erp(erp);
2708 "ERP chain at BEGINNING of ERP-ACTION\n");
2709 for (temp_erp = cqr;
2710 temp_erp !=
NULL; temp_erp = temp_erp->
refers) {
2713 "ERP %p (%02x) refers to %p\n",
2714 temp_erp, temp_erp->
status,
2720 if ((scsw_cstat(&cqr->
irb.scsw) == 0x00) &&
2721 (scsw_dstat(&cqr->
irb.scsw) ==
2725 "ERP called for successful request %p"
2726 " - NO ERP necessary", cqr);
2734 erp = dasd_3990_erp_in_erp(cqr);
2738 erp = dasd_3990_erp_additional_erp(cqr);
2743 erp = dasd_3990_erp_handle_match_erp(cqr, erp);
2749 "ERP chain at END of ERP-ACTION\n");
2750 for (temp_erp = erp;
2751 temp_erp !=
NULL; temp_erp = temp_erp->
refers) {
2754 "ERP %p (%02x) refers to %p\n",
2755 temp_erp, temp_erp->
status,