aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/block/dasd_eckd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/block/dasd_eckd.c')
-rw-r--r--drivers/s390/block/dasd_eckd.c196
1 files changed, 124 insertions, 72 deletions
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index 1e4c89b8b304..21254793c604 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -11,6 +11,8 @@
11 * 11 *
12 */ 12 */
13 13
14#define KMSG_COMPONENT "dasd"
15
14#include <linux/stddef.h> 16#include <linux/stddef.h>
15#include <linux/kernel.h> 17#include <linux/kernel.h>
16#include <linux/slab.h> 18#include <linux/slab.h>
@@ -87,7 +89,7 @@ dasd_eckd_probe (struct ccw_device *cdev)
87 /* set ECKD specific ccw-device options */ 89 /* set ECKD specific ccw-device options */
88 ret = ccw_device_set_options(cdev, CCWDEV_ALLOW_FORCE); 90 ret = ccw_device_set_options(cdev, CCWDEV_ALLOW_FORCE);
89 if (ret) { 91 if (ret) {
90 printk(KERN_WARNING 92 DBF_EVENT(DBF_WARNING,
91 "dasd_eckd_probe: could not set ccw-device options " 93 "dasd_eckd_probe: could not set ccw-device options "
92 "for %s\n", dev_name(&cdev->dev)); 94 "for %s\n", dev_name(&cdev->dev));
93 return ret; 95 return ret;
@@ -248,8 +250,8 @@ define_extent(struct ccw1 *ccw, struct DE_eckd_data *data, unsigned int trk,
248 rc = check_XRC (ccw, data, device); 250 rc = check_XRC (ccw, data, device);
249 break; 251 break;
250 default: 252 default:
251 DBF_DEV_EVENT(DBF_ERR, device, 253 dev_err(&device->cdev->dev,
252 "PFX LRE unknown opcode 0x%x", cmd); 254 "0x%x is not a known command\n", cmd);
253 break; 255 break;
254 } 256 }
255 257
@@ -647,7 +649,8 @@ locate_record(struct ccw1 *ccw, struct LO_eckd_data *data, unsigned int trk,
647 data->operation.operation = 0x0b; 649 data->operation.operation = 0x0b;
648 break; 650 break;
649 default: 651 default:
650 DEV_MESSAGE(KERN_ERR, device, "unknown opcode 0x%x", cmd); 652 DBF_DEV_EVENT(DBF_ERR, device, "unknown locate record "
653 "opcode 0x%x", cmd);
651 } 654 }
652 set_ch_t(&data->seek_addr, 655 set_ch_t(&data->seek_addr,
653 trk / private->rdc_data.trk_per_cyl, 656 trk / private->rdc_data.trk_per_cyl,
@@ -742,8 +745,8 @@ static struct dasd_ccw_req *dasd_eckd_build_rcd_lpm(struct dasd_device *device,
742 cqr = dasd_smalloc_request("ECKD", 1 /* RCD */, ciw->count, device); 745 cqr = dasd_smalloc_request("ECKD", 1 /* RCD */, ciw->count, device);
743 746
744 if (IS_ERR(cqr)) { 747 if (IS_ERR(cqr)) {
745 DEV_MESSAGE(KERN_WARNING, device, "%s", 748 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
746 "Could not allocate RCD request"); 749 "Could not allocate RCD request");
747 return cqr; 750 return cqr;
748 } 751 }
749 752
@@ -893,14 +896,16 @@ static int dasd_eckd_read_conf(struct dasd_device *device)
893 rc = dasd_eckd_read_conf_lpm(device, &conf_data, 896 rc = dasd_eckd_read_conf_lpm(device, &conf_data,
894 &conf_len, lpm); 897 &conf_len, lpm);
895 if (rc && rc != -EOPNOTSUPP) { /* -EOPNOTSUPP is ok */ 898 if (rc && rc != -EOPNOTSUPP) { /* -EOPNOTSUPP is ok */
896 MESSAGE(KERN_WARNING, 899 DBF_EVENT(DBF_WARNING,
897 "Read configuration data returned " 900 "Read configuration data returned "
898 "error %d", rc); 901 "error %d for device: %s", rc,
902 dev_name(&device->cdev->dev));
899 return rc; 903 return rc;
900 } 904 }
901 if (conf_data == NULL) { 905 if (conf_data == NULL) {
902 MESSAGE(KERN_WARNING, "%s", "No configuration " 906 DBF_EVENT(DBF_WARNING, "No configuration "
903 "data retrieved"); 907 "data retrieved for device: %s",
908 dev_name(&device->cdev->dev));
904 continue; /* no error */ 909 continue; /* no error */
905 } 910 }
906 /* save first valid configuration data */ 911 /* save first valid configuration data */
@@ -947,8 +952,9 @@ static int dasd_eckd_read_features(struct dasd_device *device)
947 sizeof(struct dasd_rssd_features)), 952 sizeof(struct dasd_rssd_features)),
948 device); 953 device);
949 if (IS_ERR(cqr)) { 954 if (IS_ERR(cqr)) {
950 DEV_MESSAGE(KERN_WARNING, device, "%s", 955 DBF_EVENT(DBF_WARNING, "Could not allocate initialization "
951 "Could not allocate initialization request"); 956 "request for device: %s",
957 dev_name(&device->cdev->dev));
952 return PTR_ERR(cqr); 958 return PTR_ERR(cqr);
953 } 959 }
954 cqr->startdev = device; 960 cqr->startdev = device;
@@ -1009,7 +1015,7 @@ static struct dasd_ccw_req *dasd_eckd_build_psf_ssc(struct dasd_device *device,
1009 device); 1015 device);
1010 1016
1011 if (IS_ERR(cqr)) { 1017 if (IS_ERR(cqr)) {
1012 DEV_MESSAGE(KERN_WARNING, device, "%s", 1018 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
1013 "Could not allocate PSF-SSC request"); 1019 "Could not allocate PSF-SSC request");
1014 return cqr; 1020 return cqr;
1015 } 1021 }
@@ -1074,10 +1080,10 @@ static int dasd_eckd_validate_server(struct dasd_device *device)
1074 /* may be requested feature is not available on server, 1080 /* may be requested feature is not available on server,
1075 * therefore just report error and go ahead */ 1081 * therefore just report error and go ahead */
1076 private = (struct dasd_eckd_private *) device->private; 1082 private = (struct dasd_eckd_private *) device->private;
1077 DEV_MESSAGE(KERN_INFO, device, 1083 DBF_EVENT(DBF_WARNING, "PSF-SSC on storage subsystem %s.%s.%04x "
1078 "PSF-SSC on storage subsystem %s.%s.%04x returned rc=%d", 1084 "returned rc=%d for device: %s",
1079 private->uid.vendor, private->uid.serial, 1085 private->uid.vendor, private->uid.serial,
1080 private->uid.ssid, rc); 1086 private->uid.ssid, rc, dev_name(&device->cdev->dev));
1081 /* RE-Read Configuration Data */ 1087 /* RE-Read Configuration Data */
1082 return dasd_eckd_read_conf(device); 1088 return dasd_eckd_read_conf(device);
1083} 1089}
@@ -1099,9 +1105,9 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
1099 private = kzalloc(sizeof(struct dasd_eckd_private), 1105 private = kzalloc(sizeof(struct dasd_eckd_private),
1100 GFP_KERNEL | GFP_DMA); 1106 GFP_KERNEL | GFP_DMA);
1101 if (private == NULL) { 1107 if (private == NULL) {
1102 DEV_MESSAGE(KERN_WARNING, device, "%s", 1108 dev_warn(&device->cdev->dev,
1103 "memory allocation failed for private " 1109 "Allocating memory for private DASD data "
1104 "data"); 1110 "failed\n");
1105 return -ENOMEM; 1111 return -ENOMEM;
1106 } 1112 }
1107 device->private = (void *) private; 1113 device->private = (void *) private;
@@ -1126,8 +1132,9 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
1126 if (private->uid.type == UA_BASE_DEVICE) { 1132 if (private->uid.type == UA_BASE_DEVICE) {
1127 block = dasd_alloc_block(); 1133 block = dasd_alloc_block();
1128 if (IS_ERR(block)) { 1134 if (IS_ERR(block)) {
1129 DEV_MESSAGE(KERN_WARNING, device, "%s", 1135 DBF_EVENT(DBF_WARNING, "could not allocate dasd "
1130 "could not allocate dasd block structure"); 1136 "block structure for device: %s",
1137 dev_name(&device->cdev->dev));
1131 rc = PTR_ERR(block); 1138 rc = PTR_ERR(block);
1132 goto out_err1; 1139 goto out_err1;
1133 } 1140 }
@@ -1158,9 +1165,9 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
1158 memset(rdc_data, 0, sizeof(rdc_data)); 1165 memset(rdc_data, 0, sizeof(rdc_data));
1159 rc = dasd_generic_read_dev_chars(device, "ECKD", &rdc_data, 64); 1166 rc = dasd_generic_read_dev_chars(device, "ECKD", &rdc_data, 64);
1160 if (rc) { 1167 if (rc) {
1161 DEV_MESSAGE(KERN_WARNING, device, 1168 DBF_EVENT(DBF_WARNING,
1162 "Read device characteristics returned " 1169 "Read device characteristics failed, rc=%d for "
1163 "rc=%d", rc); 1170 "device: %s", rc, dev_name(&device->cdev->dev));
1164 goto out_err3; 1171 goto out_err3;
1165 } 1172 }
1166 /* find the vaild cylinder size */ 1173 /* find the vaild cylinder size */
@@ -1170,15 +1177,15 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
1170 else 1177 else
1171 private->real_cyl = private->rdc_data.no_cyl; 1178 private->real_cyl = private->rdc_data.no_cyl;
1172 1179
1173 DEV_MESSAGE(KERN_INFO, device, 1180 dev_info(&device->cdev->dev, "New DASD %04X/%02X (CU %04X/%02X) "
1174 "%04X/%02X(CU:%04X/%02X) Cyl:%d Head:%d Sec:%d", 1181 "with %d cylinders, %d heads, %d sectors\n",
1175 private->rdc_data.dev_type, 1182 private->rdc_data.dev_type,
1176 private->rdc_data.dev_model, 1183 private->rdc_data.dev_model,
1177 private->rdc_data.cu_type, 1184 private->rdc_data.cu_type,
1178 private->rdc_data.cu_model.model, 1185 private->rdc_data.cu_model.model,
1179 private->real_cyl, 1186 private->real_cyl,
1180 private->rdc_data.trk_per_cyl, 1187 private->rdc_data.trk_per_cyl,
1181 private->rdc_data.sec_per_trk); 1188 private->rdc_data.sec_per_trk);
1182 return 0; 1189 return 0;
1183 1190
1184out_err3: 1191out_err3:
@@ -1319,8 +1326,8 @@ dasd_eckd_end_analysis(struct dasd_block *block)
1319 status = private->init_cqr_status; 1326 status = private->init_cqr_status;
1320 private->init_cqr_status = -1; 1327 private->init_cqr_status = -1;
1321 if (status != DASD_CQR_DONE) { 1328 if (status != DASD_CQR_DONE) {
1322 DEV_MESSAGE(KERN_WARNING, device, "%s", 1329 dev_warn(&device->cdev->dev,
1323 "volume analysis returned unformatted disk"); 1330 "The DASD is not formatted\n");
1324 return -EMEDIUMTYPE; 1331 return -EMEDIUMTYPE;
1325 } 1332 }
1326 1333
@@ -1348,8 +1355,8 @@ dasd_eckd_end_analysis(struct dasd_block *block)
1348 count_area = &private->count_area[0]; 1355 count_area = &private->count_area[0];
1349 } else { 1356 } else {
1350 if (private->count_area[3].record == 1) 1357 if (private->count_area[3].record == 1)
1351 DEV_MESSAGE(KERN_WARNING, device, "%s", 1358 dev_warn(&device->cdev->dev,
1352 "Trk 0: no records after VTOC!"); 1359 "Track 0 has no records following the VTOC\n");
1353 } 1360 }
1354 if (count_area != NULL && count_area->kl == 0) { 1361 if (count_area != NULL && count_area->kl == 0) {
1355 /* we found notthing violating our disk layout */ 1362 /* we found notthing violating our disk layout */
@@ -1357,8 +1364,8 @@ dasd_eckd_end_analysis(struct dasd_block *block)
1357 block->bp_block = count_area->dl; 1364 block->bp_block = count_area->dl;
1358 } 1365 }
1359 if (block->bp_block == 0) { 1366 if (block->bp_block == 0) {
1360 DEV_MESSAGE(KERN_WARNING, device, "%s", 1367 dev_warn(&device->cdev->dev,
1361 "Volume has incompatible disk layout"); 1368 "The disk layout of the DASD is not supported\n");
1362 return -EMEDIUMTYPE; 1369 return -EMEDIUMTYPE;
1363 } 1370 }
1364 block->s2b_shift = 0; /* bits to shift 512 to get a block */ 1371 block->s2b_shift = 0; /* bits to shift 512 to get a block */
@@ -1370,15 +1377,15 @@ dasd_eckd_end_analysis(struct dasd_block *block)
1370 private->rdc_data.trk_per_cyl * 1377 private->rdc_data.trk_per_cyl *
1371 blk_per_trk); 1378 blk_per_trk);
1372 1379
1373 DEV_MESSAGE(KERN_INFO, device, 1380 dev_info(&device->cdev->dev,
1374 "(%dkB blks): %dkB at %dkB/trk %s", 1381 "DASD with %d KB/block, %d KB total size, %d KB/track, "
1375 (block->bp_block >> 10), 1382 "%s\n", (block->bp_block >> 10),
1376 ((private->real_cyl * 1383 ((private->real_cyl *
1377 private->rdc_data.trk_per_cyl * 1384 private->rdc_data.trk_per_cyl *
1378 blk_per_trk * (block->bp_block >> 9)) >> 1), 1385 blk_per_trk * (block->bp_block >> 9)) >> 1),
1379 ((blk_per_trk * block->bp_block) >> 10), 1386 ((blk_per_trk * block->bp_block) >> 10),
1380 private->uses_cdl ? 1387 private->uses_cdl ?
1381 "compatible disk layout" : "linux disk layout"); 1388 "compatible disk layout" : "linux disk layout");
1382 1389
1383 return 0; 1390 return 0;
1384} 1391}
@@ -1444,19 +1451,19 @@ dasd_eckd_format_device(struct dasd_device * device,
1444 /* Sanity checks. */ 1451 /* Sanity checks. */
1445 if (fdata->start_unit >= 1452 if (fdata->start_unit >=
1446 (private->real_cyl * private->rdc_data.trk_per_cyl)) { 1453 (private->real_cyl * private->rdc_data.trk_per_cyl)) {
1447 DEV_MESSAGE(KERN_INFO, device, "Track no %u too big!", 1454 dev_warn(&device->cdev->dev, "Start track number %d used in "
1448 fdata->start_unit); 1455 "formatting is too big\n", fdata->start_unit);
1449 return ERR_PTR(-EINVAL); 1456 return ERR_PTR(-EINVAL);
1450 } 1457 }
1451 if (fdata->start_unit > fdata->stop_unit) { 1458 if (fdata->start_unit > fdata->stop_unit) {
1452 DEV_MESSAGE(KERN_INFO, device, "Track %u reached! ending.", 1459 dev_warn(&device->cdev->dev, "Start track %d used in "
1453 fdata->start_unit); 1460 "formatting exceeds end track\n", fdata->start_unit);
1454 return ERR_PTR(-EINVAL); 1461 return ERR_PTR(-EINVAL);
1455 } 1462 }
1456 if (dasd_check_blocksize(fdata->blksize) != 0) { 1463 if (dasd_check_blocksize(fdata->blksize) != 0) {
1457 DEV_MESSAGE(KERN_WARNING, device, 1464 dev_warn(&device->cdev->dev,
1458 "Invalid blocksize %u...terminating!", 1465 "The DASD cannot be formatted with block size %d\n",
1459 fdata->blksize); 1466 fdata->blksize);
1460 return ERR_PTR(-EINVAL); 1467 return ERR_PTR(-EINVAL);
1461 } 1468 }
1462 1469
@@ -1500,8 +1507,8 @@ dasd_eckd_format_device(struct dasd_device * device,
1500 sizeof(struct eckd_count); 1507 sizeof(struct eckd_count);
1501 break; 1508 break;
1502 default: 1509 default:
1503 DEV_MESSAGE(KERN_WARNING, device, "Invalid flags 0x%x.", 1510 dev_warn(&device->cdev->dev, "An I/O control call used "
1504 fdata->intensity); 1511 "incorrect flags 0x%x\n", fdata->intensity);
1505 return ERR_PTR(-EINVAL); 1512 return ERR_PTR(-EINVAL);
1506 } 1513 }
1507 /* Allocate the format ccw request. */ 1514 /* Allocate the format ccw request. */
@@ -1696,13 +1703,14 @@ static void dasd_eckd_handle_unsolicited_interrupt(struct dasd_device *device,
1696 1703
1697 if (!sense) { 1704 if (!sense) {
1698 /* just report other unsolicited interrupts */ 1705 /* just report other unsolicited interrupts */
1699 DEV_MESSAGE(KERN_ERR, device, "%s", 1706 DBF_DEV_EVENT(DBF_ERR, device, "%s",
1700 "unsolicited interrupt received"); 1707 "unsolicited interrupt received");
1701 } else { 1708 } else {
1702 DEV_MESSAGE(KERN_ERR, device, "%s", 1709 DBF_DEV_EVENT(DBF_ERR, device, "%s",
1703 "unsolicited interrupt received " 1710 "unsolicited interrupt received "
1704 "(sense available)"); 1711 "(sense available)");
1705 device->discipline->dump_sense(device, NULL, irb); 1712 device->discipline->dump_sense_dbf(device, NULL, irb,
1713 "unsolicited");
1706 } 1714 }
1707 1715
1708 dasd_schedule_device_bh(device); 1716 dasd_schedule_device_bh(device);
@@ -2553,7 +2561,7 @@ dasd_eckd_release(struct dasd_device *device)
2553 cqr = dasd_smalloc_request(dasd_eckd_discipline.name, 2561 cqr = dasd_smalloc_request(dasd_eckd_discipline.name,
2554 1, 32, device); 2562 1, 32, device);
2555 if (IS_ERR(cqr)) { 2563 if (IS_ERR(cqr)) {
2556 DEV_MESSAGE(KERN_WARNING, device, "%s", 2564 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
2557 "Could not allocate initialization request"); 2565 "Could not allocate initialization request");
2558 return PTR_ERR(cqr); 2566 return PTR_ERR(cqr);
2559 } 2567 }
@@ -2596,7 +2604,7 @@ dasd_eckd_reserve(struct dasd_device *device)
2596 cqr = dasd_smalloc_request(dasd_eckd_discipline.name, 2604 cqr = dasd_smalloc_request(dasd_eckd_discipline.name,
2597 1, 32, device); 2605 1, 32, device);
2598 if (IS_ERR(cqr)) { 2606 if (IS_ERR(cqr)) {
2599 DEV_MESSAGE(KERN_WARNING, device, "%s", 2607 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
2600 "Could not allocate initialization request"); 2608 "Could not allocate initialization request");
2601 return PTR_ERR(cqr); 2609 return PTR_ERR(cqr);
2602 } 2610 }
@@ -2638,7 +2646,7 @@ dasd_eckd_steal_lock(struct dasd_device *device)
2638 cqr = dasd_smalloc_request(dasd_eckd_discipline.name, 2646 cqr = dasd_smalloc_request(dasd_eckd_discipline.name,
2639 1, 32, device); 2647 1, 32, device);
2640 if (IS_ERR(cqr)) { 2648 if (IS_ERR(cqr)) {
2641 DEV_MESSAGE(KERN_WARNING, device, "%s", 2649 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
2642 "Could not allocate initialization request"); 2650 "Could not allocate initialization request");
2643 return PTR_ERR(cqr); 2651 return PTR_ERR(cqr);
2644 } 2652 }
@@ -2680,7 +2688,7 @@ dasd_eckd_performance(struct dasd_device *device, void __user *argp)
2680 sizeof(struct dasd_rssd_perf_stats_t)), 2688 sizeof(struct dasd_rssd_perf_stats_t)),
2681 device); 2689 device);
2682 if (IS_ERR(cqr)) { 2690 if (IS_ERR(cqr)) {
2683 DEV_MESSAGE(KERN_WARNING, device, "%s", 2691 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
2684 "Could not allocate initialization request"); 2692 "Could not allocate initialization request");
2685 return PTR_ERR(cqr); 2693 return PTR_ERR(cqr);
2686 } 2694 }
@@ -2770,9 +2778,9 @@ dasd_eckd_set_attrib(struct dasd_device *device, void __user *argp)
2770 return -EFAULT; 2778 return -EFAULT;
2771 private->attrib = attrib; 2779 private->attrib = attrib;
2772 2780
2773 DEV_MESSAGE(KERN_INFO, device, 2781 dev_info(&device->cdev->dev,
2774 "cache operation mode set to %x (%i cylinder prestage)", 2782 "The DASD cache mode was set to %x (%i cylinder prestage)\n",
2775 private->attrib.operation, private->attrib.nr_cyl); 2783 private->attrib.operation, private->attrib.nr_cyl);
2776 return 0; 2784 return 0;
2777} 2785}
2778 2786
@@ -2823,7 +2831,7 @@ static int dasd_symm_io(struct dasd_device *device, void __user *argp)
2823 /* setup CCWs for PSF + RSSD */ 2831 /* setup CCWs for PSF + RSSD */
2824 cqr = dasd_smalloc_request("ECKD", 2 , 0, device); 2832 cqr = dasd_smalloc_request("ECKD", 2 , 0, device);
2825 if (IS_ERR(cqr)) { 2833 if (IS_ERR(cqr)) {
2826 DEV_MESSAGE(KERN_WARNING, device, "%s", 2834 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
2827 "Could not allocate initialization request"); 2835 "Could not allocate initialization request");
2828 rc = PTR_ERR(cqr); 2836 rc = PTR_ERR(cqr);
2829 goto out_free; 2837 goto out_free;
@@ -2932,6 +2940,49 @@ dasd_eckd_dump_ccw_range(struct ccw1 *from, struct ccw1 *to, char *page)
2932 return len; 2940 return len;
2933} 2941}
2934 2942
2943static void
2944dasd_eckd_dump_sense_dbf(struct dasd_device *device, struct dasd_ccw_req *req,
2945 struct irb *irb, char *reason)
2946{
2947 u64 *sense;
2948 int sl;
2949 struct tsb *tsb;
2950
2951 sense = NULL;
2952 tsb = NULL;
2953 if (req && scsw_is_tm(&req->irb.scsw)) {
2954 if (irb->scsw.tm.tcw)
2955 tsb = tcw_get_tsb(
2956 (struct tcw *)(unsigned long)irb->scsw.tm.tcw);
2957 if (tsb && (irb->scsw.tm.fcxs == 0x01)) {
2958 switch (tsb->flags & 0x07) {
2959 case 1: /* tsa_iostat */
2960 sense = (u64 *)tsb->tsa.iostat.sense;
2961 break;
2962 case 2: /* ts_ddpc */
2963 sense = (u64 *)tsb->tsa.ddpc.sense;
2964 break;
2965 case 3: /* tsa_intrg */
2966 break;
2967 }
2968 }
2969 } else {
2970 if (irb->esw.esw0.erw.cons)
2971 sense = (u64 *)irb->ecw;
2972 }
2973 if (sense) {
2974 for (sl = 0; sl < 4; sl++) {
2975 DBF_DEV_EVENT(DBF_EMERG, device,
2976 "%s: %016llx %016llx %016llx %016llx",
2977 reason, sense[0], sense[1], sense[2],
2978 sense[3]);
2979 }
2980 } else {
2981 DBF_DEV_EVENT(DBF_EMERG, device, "%s",
2982 "SORRY - NO VALID SENSE AVAILABLE\n");
2983 }
2984}
2985
2935/* 2986/*
2936 * Print sense data and related channel program. 2987 * Print sense data and related channel program.
2937 * Parts are printed because printk buffer is only 1024 bytes. 2988 * Parts are printed because printk buffer is only 1024 bytes.
@@ -2945,8 +2996,8 @@ static void dasd_eckd_dump_sense_ccw(struct dasd_device *device,
2945 2996
2946 page = (char *) get_zeroed_page(GFP_ATOMIC); 2997 page = (char *) get_zeroed_page(GFP_ATOMIC);
2947 if (page == NULL) { 2998 if (page == NULL) {
2948 DEV_MESSAGE(KERN_ERR, device, " %s", 2999 DBF_DEV_EVENT(DBF_WARNING, device, "%s",
2949 "No memory to dump sense data"); 3000 "No memory to dump sense data\n");
2950 return; 3001 return;
2951 } 3002 }
2952 /* dump the sense data */ 3003 /* dump the sense data */
@@ -3047,7 +3098,7 @@ static void dasd_eckd_dump_sense_tcw(struct dasd_device *device,
3047 3098
3048 page = (char *) get_zeroed_page(GFP_ATOMIC); 3099 page = (char *) get_zeroed_page(GFP_ATOMIC);
3049 if (page == NULL) { 3100 if (page == NULL) {
3050 DEV_MESSAGE(KERN_ERR, device, " %s", 3101 DBF_DEV_EVENT(DBF_WARNING, device, " %s",
3051 "No memory to dump sense data"); 3102 "No memory to dump sense data");
3052 return; 3103 return;
3053 } 3104 }
@@ -3206,6 +3257,7 @@ static struct dasd_discipline dasd_eckd_discipline = {
3206 .build_cp = dasd_eckd_build_alias_cp, 3257 .build_cp = dasd_eckd_build_alias_cp,
3207 .free_cp = dasd_eckd_free_alias_cp, 3258 .free_cp = dasd_eckd_free_alias_cp,
3208 .dump_sense = dasd_eckd_dump_sense, 3259 .dump_sense = dasd_eckd_dump_sense,
3260 .dump_sense_dbf = dasd_eckd_dump_sense_dbf,
3209 .fill_info = dasd_eckd_fill_info, 3261 .fill_info = dasd_eckd_fill_info,
3210 .ioctl = dasd_eckd_ioctl, 3262 .ioctl = dasd_eckd_ioctl,
3211}; 3263};