s390 (3/4): block device driver.
Subsystems (2)
PATCH 1/1 s390 (3/4): block device driver.
[PATCH] s390: block device driver.
From: Martin Schwidefsky <[email protected]>
block device driver changes:
- dasd: Fix diag discipline if it is loaded as a module.
- dcssblk: Replace r/w lock with r/w semaphore to be able to call device_register inside a critical section.
- dcssblk: Fix error handling in write function for dcss "add" attribute.
- xpram & dcssblk: Fix sanity check for sector number.
diffstat:
drivers/s390/block/dasd.c | 6 +- drivers/s390/block/dasd_diag.c | 8 ++ drivers/s390/block/dasd_int.h | 9 --- drivers/s390/block/dcssblk.c | 114 +++++++++++++++++++---------------------- drivers/s390/block/xpram.c | 2 5 files changed, 68 insertions(+), 71 deletions(-)
drivers/s390/block/dasd.c +5 -1
@@ -7,7 +7,7 @@* Bugreports.to..: <[email protected]> * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 * -* $Revision: 1.141 $ +* $Revision: 1.142 $ */ #include <linux/config.h>
@@ -37,6 +37,7 @@* SECTION: exported variables of dasd.c */ debug_info_t *dasd_debug_area; +struct dasd_discipline *dasd_diag_discipline_pointer;MODULE_AUTHOR ("Holger Smolinski <[email protected]>" ); MODULE_DESCRIPTION("Linux on S/390 DASD device driver,"
@@ -1990,6 +1991,8 @@DBF_EVENT (DBF_EMERG ,"%s" ,"debug area created" ); + dasd_diag_discipline_pointer =NULL ; + rc =devfs_mk_dir ("dasd" );if (rc) goto failed;
@@ -2022,6 +2025,7 @@module_exit (dasd_exit);EXPORT_SYMBOL (dasd_debug_area); +EXPORT_SYMBOL (dasd_diag_discipline_pointer);EXPORT_SYMBOL (dasd_add_request_head);EXPORT_SYMBOL (dasd_add_request_tail);
drivers/s390/block/dasd_diag.c +6 -2
@@ -6,7 +6,7 @@* Bugreports.to..: <[email protected]> * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 * -* $Revision: 1.34 $ +* $Revision: 1.36 $ */ #include <linux/config.h>
@@ -35,6 +35,8 @@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;
@@ -292,7 +294,7 @@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 */
@@ -489,6 +491,7 @@ctl_set_bit (0 ,9 );register_external_interrupt (0x2603 , dasd_ext_handler); + dasd_diag_discipline_pointer = &dasd_diag_discipline;return 0 ; }
@@ -503,6 +506,7 @@ }unregister_external_interrupt (0x2603 , dasd_ext_handler);ctl_clear_bit (0 ,9 ); + dasd_diag_discipline_pointer =NULL ; }module_init (dasd_diag_init);
drivers/s390/block/dasd_int.h +2 -7
@@ -6,7 +6,7 @@* Bugreports.to..: <[email protected]> * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 * -* $Revision: 1.57 $ +* $Revision: 1.58 $ */ #ifndef DASD_INT_H
@@ -260,12 +260,7 @@int (*fill_info) (struct dasd_device *,struct dasd_information2_t *); }; -extern struct dasd_discipline dasd_diag_discipline; -#ifdef CONFIG_DASD_DIAG -#define dasd_diag_discipline_pointer (&dasd_diag_discipline) -#else -#define dasd_diag_discipline_pointer (0) -#endif +extern struct dasd_discipline *dasd_diag_discipline_pointer;struct dasd_device {/* Block device stuff. */
drivers/s390/block/dcssblk.c +54 -60
286 lines not on this page · raw message
drivers/s390/block/xpram.c +1 -1
@@ -290,7 +290,7 @@unsigned long bytes;int i; -if ((bio->bi_sector &3 ) !=0 || (bio->bi_size &4095 ) !=0 ) +if ((bio->bi_sector &7 ) !=0 || (bio->bi_size &4095 ) !=0 )/* Request is not page-aligned. */ goto fail;if ((bio->bi_size >>12 ) > xdev->size)