* Bugreports.to..: <Linux390@de.ibm.com>
* (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
*
- * $Revision: 1.34 $
+ * $Revision: 1.38 $
*/
#include <linux/config.h>
MODULE_LICENSE("GPL");
+struct dasd_discipline dasd_diag_discipline;
+
struct dasd_diag_private {
struct dasd_diag_characteristics rdc_data;
struct dasd_diag_rw_io iob;
unsigned long long expires;
unsigned long flags;
char status;
- int ip, cpu;
+ int ip;
/*
* Get the external interruption subcode. VM stores
status = *((char *) &S390_lowcore.ext_params + 5);
ip = S390_lowcore.ext_params;
- cpu = smp_processor_id();
-
if (!ip) { /* no intparm: unsolicited interrupt */
MESSAGE(KERN_DEBUG, "%s", "caught unsolicited interrupt");
return;
mdsk_term_io(device);
}
if (bsize <= PAGE_SIZE && label[3] == bsize &&
- label[0] == 0xc3d4e2f1 && label[13] != 0) {
+ label[0] == 0xc3d4e2f1) {
device->blocks = label[7];
device->bp_block = bsize;
device->s2b_shift = 0; /* bits to shift 512 to get a block */
(device->bp_block >> 10),
(device->blocks << device->s2b_shift) >> 1);
rc = 0;
- } else
+ } else {
+ DEV_MESSAGE(KERN_WARNING, device, "%s",
+ "volume has incompatible disk layout");
rc = -EMEDIUMTYPE;
+ }
free_page((long) label);
return rc;
}
ctl_set_bit(0, 9);
register_external_interrupt(0x2603, dasd_ext_handler);
+ dasd_diag_discipline_pointer = &dasd_diag_discipline;
return 0;
}
}
unregister_external_interrupt(0x2603, dasd_ext_handler);
ctl_clear_bit(0, 9);
+ dasd_diag_discipline_pointer = NULL;
}
module_init(dasd_diag_init);