git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.3
[linux-2.6.git]
/
drivers
/
s390
/
block
/
dasd_diag.c
diff --git
a/drivers/s390/block/dasd_diag.c
b/drivers/s390/block/dasd_diag.c
index
67a896c
..
deaecd0
100644
(file)
--- a/
drivers/s390/block/dasd_diag.c
+++ b/
drivers/s390/block/dasd_diag.c
@@
-6,7
+6,7
@@
* Bugreports.to..: <Linux390@de.ibm.com>
* (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
*
* Bugreports.to..: <Linux390@de.ibm.com>
* (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
*
- * $Revision: 1.3
4
$
+ * $Revision: 1.3
8
$
*/
#include <linux/config.h>
*/
#include <linux/config.h>
@@
-35,6
+35,8
@@
MODULE_LICENSE("GPL");
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;
struct dasd_diag_private {
struct dasd_diag_characteristics rdc_data;
struct dasd_diag_rw_io iob;
@@
-156,7
+158,7
@@
dasd_ext_handler(struct pt_regs *regs, __u16 code)
unsigned long long expires;
unsigned long flags;
char status;
unsigned long long expires;
unsigned long flags;
char status;
- int ip
, cpu
;
+ int ip;
/*
* Get the external interruption subcode. VM stores
/*
* Get the external interruption subcode. VM stores
@@
-169,8
+171,6
@@
dasd_ext_handler(struct pt_regs *regs, __u16 code)
status = *((char *) &S390_lowcore.ext_params + 5);
ip = S390_lowcore.ext_params;
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;
if (!ip) { /* no intparm: unsolicited interrupt */
MESSAGE(KERN_DEBUG, "%s", "caught unsolicited interrupt");
return;
@@
-292,7
+292,7
@@
dasd_diag_check_device(struct dasd_device *device)
mdsk_term_io(device);
}
if (bsize <= PAGE_SIZE && label[3] == bsize &&
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->blocks = label[7];
device->bp_block = bsize;
device->s2b_shift = 0; /* bits to shift 512 to get a block */
@@
-304,8
+304,11
@@
dasd_diag_check_device(struct dasd_device *device)
(device->bp_block >> 10),
(device->blocks << device->s2b_shift) >> 1);
rc = 0;
(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;
rc = -EMEDIUMTYPE;
+ }
free_page((long) label);
return rc;
}
free_page((long) label);
return rc;
}
@@
-489,6
+492,7
@@
dasd_diag_init(void)
ctl_set_bit(0, 9);
register_external_interrupt(0x2603, dasd_ext_handler);
ctl_set_bit(0, 9);
register_external_interrupt(0x2603, dasd_ext_handler);
+ dasd_diag_discipline_pointer = &dasd_diag_discipline;
return 0;
}
return 0;
}
@@
-503,6
+507,7
@@
dasd_diag_cleanup(void)
}
unregister_external_interrupt(0x2603, dasd_ext_handler);
ctl_clear_bit(0, 9);
}
unregister_external_interrupt(0x2603, dasd_ext_handler);
ctl_clear_bit(0, 9);
+ dasd_diag_discipline_pointer = NULL;
}
module_init(dasd_diag_init);
}
module_init(dasd_diag_init);