dasd_int.h (ebf8889bd1fe3615991ff4494635d237280652a2) | dasd_int.h (8e09f21574ea3028d5629e5de759e0b196c690c5) |
---|---|
1/* 2 * File...........: linux/drivers/s390/block/dasd_int.h 3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 4 * Horst Hummel <Horst.Hummel@de.ibm.com> 5 * Martin Schwidefsky <schwidefsky@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com> 7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 8 * --- 50 unchanged lines hidden (view full) --- 59#include <asm/debug.h> 60#include <asm/dasd.h> 61#include <asm/idals.h> 62 63/* 64 * SECTION: Type definitions 65 */ 66struct dasd_device; | 1/* 2 * File...........: linux/drivers/s390/block/dasd_int.h 3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 4 * Horst Hummel <Horst.Hummel@de.ibm.com> 5 * Martin Schwidefsky <schwidefsky@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com> 7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 8 * --- 50 unchanged lines hidden (view full) --- 59#include <asm/debug.h> 60#include <asm/dasd.h> 61#include <asm/idals.h> 62 63/* 64 * SECTION: Type definitions 65 */ 66struct dasd_device; |
67struct dasd_block; |
|
67 | 68 |
68typedef enum { 69 dasd_era_fatal = -1, /* no chance to recover */ 70 dasd_era_none = 0, /* don't recover, everything alright */ 71 dasd_era_msg = 1, /* don't recover, just report... */ 72 dasd_era_recover = 2 /* recovery action recommended */ 73} dasd_era_t; 74 | |
75/* BIT DEFINITIONS FOR SENSE DATA */ 76#define DASD_SENSE_BIT_0 0x80 77#define DASD_SENSE_BIT_1 0x40 78#define DASD_SENSE_BIT_2 0x20 79#define DASD_SENSE_BIT_3 0x10 80 81/* 82 * SECTION: MACROs for klogd and s390 debug feature (dbf) --- 63 unchanged lines hidden (view full) --- 146 147#define MESSAGE_LOG(d_loglevel,d_string,d_args...)\ 148do { \ 149 printk(d_loglevel PRINTK_HEADER " " d_string "\n", d_args); \ 150} while(0) 151 152struct dasd_ccw_req { 153 unsigned int magic; /* Eye catcher */ | 69/* BIT DEFINITIONS FOR SENSE DATA */ 70#define DASD_SENSE_BIT_0 0x80 71#define DASD_SENSE_BIT_1 0x40 72#define DASD_SENSE_BIT_2 0x20 73#define DASD_SENSE_BIT_3 0x10 74 75/* 76 * SECTION: MACROs for klogd and s390 debug feature (dbf) --- 63 unchanged lines hidden (view full) --- 140 141#define MESSAGE_LOG(d_loglevel,d_string,d_args...)\ 142do { \ 143 printk(d_loglevel PRINTK_HEADER " " d_string "\n", d_args); \ 144} while(0) 145 146struct dasd_ccw_req { 147 unsigned int magic; /* Eye catcher */ |
154 struct list_head list; /* list_head for request queueing. */ | 148 struct list_head devlist; /* for dasd_device request queue */ 149 struct list_head blocklist; /* for dasd_block request queue */ |
155 156 /* Where to execute what... */ | 150 151 /* Where to execute what... */ |
157 struct dasd_device *device; /* device the request is for */ | 152 struct dasd_block *block; /* the originating block device */ 153 struct dasd_device *memdev; /* the device used to allocate this */ 154 struct dasd_device *startdev; /* device the request is started on */ |
158 struct ccw1 *cpaddr; /* address of channel program */ | 155 struct ccw1 *cpaddr; /* address of channel program */ |
159 char status; /* status of this request */ | 156 char status; /* status of this request */ |
160 short retries; /* A retry counter */ 161 unsigned long flags; /* flags of this request */ 162 163 /* ... and how */ 164 unsigned long starttime; /* jiffies time of request start */ 165 int expires; /* expiration period in jiffies */ | 157 short retries; /* A retry counter */ 158 unsigned long flags; /* flags of this request */ 159 160 /* ... and how */ 161 unsigned long starttime; /* jiffies time of request start */ 162 int expires; /* expiration period in jiffies */ |
166 char lpm; /* logical path mask */ | 163 char lpm; /* logical path mask */ |
167 void *data; /* pointer to data area */ 168 169 /* these are important for recovering erroneous requests */ 170 struct irb irb; /* device status in case of an error */ 171 struct dasd_ccw_req *refers; /* ERP-chain queueing. */ 172 void *function; /* originating ERP action */ 173 174 /* these are for statistics only */ 175 unsigned long long buildclk; /* TOD-clock of request generation */ 176 unsigned long long startclk; /* TOD-clock of request start */ 177 unsigned long long stopclk; /* TOD-clock of request interrupt */ 178 unsigned long long endclk; /* TOD-clock of request termination */ 179 180 /* Callback that is called after reaching final status. */ | 164 void *data; /* pointer to data area */ 165 166 /* these are important for recovering erroneous requests */ 167 struct irb irb; /* device status in case of an error */ 168 struct dasd_ccw_req *refers; /* ERP-chain queueing. */ 169 void *function; /* originating ERP action */ 170 171 /* these are for statistics only */ 172 unsigned long long buildclk; /* TOD-clock of request generation */ 173 unsigned long long startclk; /* TOD-clock of request start */ 174 unsigned long long stopclk; /* TOD-clock of request interrupt */ 175 unsigned long long endclk; /* TOD-clock of request termination */ 176 177 /* Callback that is called after reaching final status. */ |
181 void (*callback)(struct dasd_ccw_req *, void *data); 182 void *callback_data; | 178 void (*callback)(struct dasd_ccw_req *, void *data); 179 void *callback_data; |
183}; 184 185/* 186 * dasd_ccw_req -> status can be: 187 */ | 180}; 181 182/* 183 * dasd_ccw_req -> status can be: 184 */ |
188#define DASD_CQR_FILLED 0x00 /* request is ready to be processed */ 189#define DASD_CQR_QUEUED 0x01 /* request is queued to be processed */ 190#define DASD_CQR_IN_IO 0x02 /* request is currently in IO */ 191#define DASD_CQR_DONE 0x03 /* request is completed successfully */ 192#define DASD_CQR_ERROR 0x04 /* request is completed with error */ 193#define DASD_CQR_FAILED 0x05 /* request is finally failed */ 194#define DASD_CQR_CLEAR 0x06 /* request is clear pending */ | 185#define DASD_CQR_FILLED 0x00 /* request is ready to be processed */ 186#define DASD_CQR_DONE 0x01 /* request is completed successfully */ 187#define DASD_CQR_NEED_ERP 0x02 /* request needs recovery action */ 188#define DASD_CQR_IN_ERP 0x03 /* request is in recovery */ 189#define DASD_CQR_FAILED 0x04 /* request is finally failed */ 190#define DASD_CQR_TERMINATED 0x05 /* request was stopped by driver */ |
195 | 191 |
192#define DASD_CQR_QUEUED 0x80 /* request is queued to be processed */ 193#define DASD_CQR_IN_IO 0x81 /* request is currently in IO */ 194#define DASD_CQR_ERROR 0x82 /* request is completed with error */ 195#define DASD_CQR_CLEAR_PENDING 0x83 /* request is clear pending */ 196#define DASD_CQR_CLEARED 0x84 /* request was cleared */ 197#define DASD_CQR_SUCCESS 0x85 /* request was successfull */ 198 199 |
|
196/* per dasd_ccw_req flags */ 197#define DASD_CQR_FLAGS_USE_ERP 0 /* use ERP for this request */ 198#define DASD_CQR_FLAGS_FAILFAST 1 /* FAILFAST */ 199 200/* Signature for error recovery functions. */ 201typedef struct dasd_ccw_req *(*dasd_erp_fn_t) (struct dasd_ccw_req *); 202 203/* --- 5 unchanged lines hidden (view full) --- 209struct dasd_discipline { 210 struct module *owner; 211 char ebcname[8]; /* a name used for tagging and printks */ 212 char name[8]; /* a name used for tagging and printks */ 213 int max_blocks; /* maximum number of blocks to be chained */ 214 215 struct list_head list; /* used for list of disciplines */ 216 | 200/* per dasd_ccw_req flags */ 201#define DASD_CQR_FLAGS_USE_ERP 0 /* use ERP for this request */ 202#define DASD_CQR_FLAGS_FAILFAST 1 /* FAILFAST */ 203 204/* Signature for error recovery functions. */ 205typedef struct dasd_ccw_req *(*dasd_erp_fn_t) (struct dasd_ccw_req *); 206 207/* --- 5 unchanged lines hidden (view full) --- 213struct dasd_discipline { 214 struct module *owner; 215 char ebcname[8]; /* a name used for tagging and printks */ 216 char name[8]; /* a name used for tagging and printks */ 217 int max_blocks; /* maximum number of blocks to be chained */ 218 219 struct list_head list; /* used for list of disciplines */ 220 |
217 /* 218 * Device recognition functions. check_device is used to verify 219 * the sense data and the information returned by read device 220 * characteristics. It returns 0 if the discipline can be used 221 * for the device in question. 222 * do_analysis is used in the step from device state "basic" to 223 * state "accept". It returns 0 if the device can be made ready, 224 * it returns -EMEDIUMTYPE if the device can't be made ready or 225 * -EAGAIN if do_analysis started a ccw that needs to complete 226 * before the analysis may be repeated. 227 */ 228 int (*check_device)(struct dasd_device *); 229 int (*do_analysis) (struct dasd_device *); | 221 /* 222 * Device recognition functions. check_device is used to verify 223 * the sense data and the information returned by read device 224 * characteristics. It returns 0 if the discipline can be used 225 * for the device in question. uncheck_device is called during 226 * device shutdown to deregister a device from its discipline. 227 */ 228 int (*check_device) (struct dasd_device *); 229 void (*uncheck_device) (struct dasd_device *); |
230 | 230 |
231 /* 232 * Device operation functions. build_cp creates a ccw chain for 233 * a block device request, start_io starts the request and 234 * term_IO cancels it (e.g. in case of a timeout). format_device 235 * returns a ccw chain to be used to format the device. 236 */ | 231 /* 232 * do_analysis is used in the step from device state "basic" to 233 * state "accept". It returns 0 if the device can be made ready, 234 * it returns -EMEDIUMTYPE if the device can't be made ready or 235 * -EAGAIN if do_analysis started a ccw that needs to complete 236 * before the analysis may be repeated. 237 */ 238 int (*do_analysis) (struct dasd_block *); 239 240 /* 241 * Last things to do when a device is set online, and first things 242 * when it is set offline. 243 */ 244 int (*ready_to_online) (struct dasd_device *); 245 int (*online_to_ready) (struct dasd_device *); 246 247 /* 248 * Device operation functions. build_cp creates a ccw chain for 249 * a block device request, start_io starts the request and 250 * term_IO cancels it (e.g. in case of a timeout). format_device 251 * returns a ccw chain to be used to format the device. 252 * handle_terminated_request allows to examine a cqr and prepare 253 * it for retry. 254 */ |
237 struct dasd_ccw_req *(*build_cp) (struct dasd_device *, | 255 struct dasd_ccw_req *(*build_cp) (struct dasd_device *, |
256 struct dasd_block *, |
|
238 struct request *); 239 int (*start_IO) (struct dasd_ccw_req *); 240 int (*term_IO) (struct dasd_ccw_req *); | 257 struct request *); 258 int (*start_IO) (struct dasd_ccw_req *); 259 int (*term_IO) (struct dasd_ccw_req *); |
260 void (*handle_terminated_request) (struct dasd_ccw_req *); |
|
241 struct dasd_ccw_req *(*format_device) (struct dasd_device *, 242 struct format_data_t *); 243 int (*free_cp) (struct dasd_ccw_req *, struct request *); | 261 struct dasd_ccw_req *(*format_device) (struct dasd_device *, 262 struct format_data_t *); 263 int (*free_cp) (struct dasd_ccw_req *, struct request *); |
244 /* 245 * Error recovery functions. examine_error() returns a value that 246 * indicates what to do for an error condition. If examine_error() | 264 265 /* 266 * Error recovery functions. examine_error() returns a value that 267 * indicates what to do for an error condition. If examine_error() |
247 * returns 'dasd_era_recover' erp_action() is called to create a | 268 * returns 'dasd_era_recover' erp_action() is called to create a |
248 * special error recovery ccw. erp_postaction() is called after 249 * an error recovery ccw has finished its execution. dump_sense 250 * is called for every error condition to print the sense data 251 * to the console. 252 */ 253 dasd_era_t(*examine_error) (struct dasd_ccw_req *, struct irb *); | 269 * special error recovery ccw. erp_postaction() is called after 270 * an error recovery ccw has finished its execution. dump_sense 271 * is called for every error condition to print the sense data 272 * to the console. 273 */ |
254 dasd_erp_fn_t(*erp_action) (struct dasd_ccw_req *); 255 dasd_erp_fn_t(*erp_postaction) (struct dasd_ccw_req *); 256 void (*dump_sense) (struct dasd_device *, struct dasd_ccw_req *, 257 struct irb *); 258 | 274 dasd_erp_fn_t(*erp_action) (struct dasd_ccw_req *); 275 dasd_erp_fn_t(*erp_postaction) (struct dasd_ccw_req *); 276 void (*dump_sense) (struct dasd_device *, struct dasd_ccw_req *, 277 struct irb *); 278 |
279 void (*handle_unsolicited_interrupt) (struct dasd_device *, 280 struct irb *); 281 |
|
259 /* i/o control functions. */ | 282 /* i/o control functions. */ |
260 int (*fill_geometry) (struct dasd_device *, struct hd_geometry *); | 283 int (*fill_geometry) (struct dasd_block *, struct hd_geometry *); |
261 int (*fill_info) (struct dasd_device *, struct dasd_information2_t *); | 284 int (*fill_info) (struct dasd_device *, struct dasd_information2_t *); |
262 int (*ioctl) (struct dasd_device *, unsigned int, void __user *); | 285 int (*ioctl) (struct dasd_block *, unsigned int, void __user *); |
263}; 264 265extern struct dasd_discipline *dasd_diag_discipline_pointer; 266 267/* 268 * Unique identifier for dasd device. 269 */ | 286}; 287 288extern struct dasd_discipline *dasd_diag_discipline_pointer; 289 290/* 291 * Unique identifier for dasd device. 292 */ |
293#define UA_NOT_CONFIGURED 0x00 294#define UA_BASE_DEVICE 0x01 295#define UA_BASE_PAV_ALIAS 0x02 296#define UA_HYPER_PAV_ALIAS 0x03 297 |
|
270struct dasd_uid { | 298struct dasd_uid { |
271 __u8 alias; | 299 __u8 type; |
272 char vendor[4]; 273 char serial[15]; 274 __u16 ssid; | 300 char vendor[4]; 301 char serial[15]; 302 __u16 ssid; |
275 __u8 unit_addr; | 303 __u8 real_unit_addr; 304 __u8 base_unit_addr; |
276}; 277 278/* 279 * Notification numbers for extended error reporting notifications: 280 * The DASD_EER_DISABLE notification is sent before a dasd_device (and it's 281 * eer pointer) is freed. The error reporting module needs to do all necessary 282 * cleanup steps. 283 * The DASD_EER_TRIGGER notification sends the actual error reports (triggers). --- 4 unchanged lines hidden (view full) --- 288/* Trigger IDs for extended error reporting DASD_EER_TRIGGER notification */ 289#define DASD_EER_FATALERROR 1 290#define DASD_EER_NOPATH 2 291#define DASD_EER_STATECHANGE 3 292#define DASD_EER_PPRCSUSPEND 4 293 294struct dasd_device { 295 /* Block device stuff. */ | 305}; 306 307/* 308 * Notification numbers for extended error reporting notifications: 309 * The DASD_EER_DISABLE notification is sent before a dasd_device (and it's 310 * eer pointer) is freed. The error reporting module needs to do all necessary 311 * cleanup steps. 312 * The DASD_EER_TRIGGER notification sends the actual error reports (triggers). --- 4 unchanged lines hidden (view full) --- 317/* Trigger IDs for extended error reporting DASD_EER_TRIGGER notification */ 318#define DASD_EER_FATALERROR 1 319#define DASD_EER_NOPATH 2 320#define DASD_EER_STATECHANGE 3 321#define DASD_EER_PPRCSUSPEND 4 322 323struct dasd_device { 324 /* Block device stuff. */ |
296 struct gendisk *gdp; 297 struct request_queue *request_queue; 298 spinlock_t request_queue_lock; 299 struct block_device *bdev; | 325 struct dasd_block *block; 326 |
300 unsigned int devindex; | 327 unsigned int devindex; |
301 unsigned long blocks; /* size of volume in blocks */ 302 unsigned int bp_block; /* bytes per block */ 303 unsigned int s2b_shift; /* log2 (bp_block/512) */ | |
304 unsigned long flags; /* per device flags */ 305 unsigned short features; /* copy of devmap-features (read-only!) */ 306 307 /* extended error reporting stuff (eer) */ 308 struct dasd_ccw_req *eer_cqr; 309 310 /* Device discipline stuff. */ 311 struct dasd_discipline *discipline; 312 struct dasd_discipline *base_discipline; 313 char *private; 314 315 /* Device state and target state. */ 316 int state, target; 317 int stopped; /* device (ccw_device_start) was stopped */ 318 | 328 unsigned long flags; /* per device flags */ 329 unsigned short features; /* copy of devmap-features (read-only!) */ 330 331 /* extended error reporting stuff (eer) */ 332 struct dasd_ccw_req *eer_cqr; 333 334 /* Device discipline stuff. */ 335 struct dasd_discipline *discipline; 336 struct dasd_discipline *base_discipline; 337 char *private; 338 339 /* Device state and target state. */ 340 int state, target; 341 int stopped; /* device (ccw_device_start) was stopped */ 342 |
319 /* Open and reference count. */ | 343 /* reference count. */ |
320 atomic_t ref_count; | 344 atomic_t ref_count; |
321 atomic_t open_count; | |
322 323 /* ccw queue and memory for static ccw/erp buffers. */ 324 struct list_head ccw_queue; 325 spinlock_t mem_lock; 326 void *ccw_mem; 327 void *erp_mem; 328 struct list_head ccw_chunks; 329 struct list_head erp_chunks; 330 331 atomic_t tasklet_scheduled; 332 struct tasklet_struct tasklet; 333 struct work_struct kick_work; 334 struct timer_list timer; 335 336 debug_info_t *debug_area; 337 338 struct ccw_device *cdev; 339 | 345 346 /* ccw queue and memory for static ccw/erp buffers. */ 347 struct list_head ccw_queue; 348 spinlock_t mem_lock; 349 void *ccw_mem; 350 void *erp_mem; 351 struct list_head ccw_chunks; 352 struct list_head erp_chunks; 353 354 atomic_t tasklet_scheduled; 355 struct tasklet_struct tasklet; 356 struct work_struct kick_work; 357 struct timer_list timer; 358 359 debug_info_t *debug_area; 360 361 struct ccw_device *cdev; 362 |
363 /* hook for alias management */ 364 struct list_head alias_list; 365}; 366 367struct dasd_block { 368 /* Block device stuff. */ 369 struct gendisk *gdp; 370 struct request_queue *request_queue; 371 spinlock_t request_queue_lock; 372 struct block_device *bdev; 373 atomic_t open_count; 374 375 unsigned long blocks; /* size of volume in blocks */ 376 unsigned int bp_block; /* bytes per block */ 377 unsigned int s2b_shift; /* log2 (bp_block/512) */ 378 379 struct dasd_device *base; 380 struct list_head ccw_queue; 381 spinlock_t queue_lock; 382 383 atomic_t tasklet_scheduled; 384 struct tasklet_struct tasklet; 385 struct timer_list timer; 386 |
|
340#ifdef CONFIG_DASD_PROFILE 341 struct dasd_profile_info_t profile; 342#endif 343}; 344 | 387#ifdef CONFIG_DASD_PROFILE 388 struct dasd_profile_info_t profile; 389#endif 390}; 391 |
392 393 |
|
345/* reasons why device (ccw_device_start) was stopped */ 346#define DASD_STOPPED_NOT_ACC 1 /* not accessible */ 347#define DASD_STOPPED_QUIESCE 2 /* Quiesced */ 348#define DASD_STOPPED_PENDING 4 /* long busy */ 349#define DASD_STOPPED_DC_WAIT 8 /* disconnected, wait */ | 394/* reasons why device (ccw_device_start) was stopped */ 395#define DASD_STOPPED_NOT_ACC 1 /* not accessible */ 396#define DASD_STOPPED_QUIESCE 2 /* Quiesced */ 397#define DASD_STOPPED_PENDING 4 /* long busy */ 398#define DASD_STOPPED_DC_WAIT 8 /* disconnected, wait */ |
350#define DASD_STOPPED_DC_EIO 16 /* disconnected, return -EIO */ | 399#define DASD_STOPPED_SU 16 /* summary unit check handling */ |
351 352/* per device flags */ | 400 401/* per device flags */ |
353#define DASD_FLAG_DSC_ERROR 2 /* return -EIO when disconnected */ | |
354#define DASD_FLAG_OFFLINE 3 /* device is in offline processing */ 355#define DASD_FLAG_EER_SNSS 4 /* A SNSS is required */ 356#define DASD_FLAG_EER_IN_USE 5 /* A SNSS request is running */ 357 358void dasd_put_device_wake(struct dasd_device *); 359 360/* 361 * Reference count inliners --- 122 unchanged lines hidden (view full) --- 484dasd_kmalloc_set_cda(struct ccw1 *ccw, void *cda, struct dasd_device *device) 485{ 486 return set_normalized_cda(ccw, cda); 487} 488 489struct dasd_device *dasd_alloc_device(void); 490void dasd_free_device(struct dasd_device *); 491 | 402#define DASD_FLAG_OFFLINE 3 /* device is in offline processing */ 403#define DASD_FLAG_EER_SNSS 4 /* A SNSS is required */ 404#define DASD_FLAG_EER_IN_USE 5 /* A SNSS request is running */ 405 406void dasd_put_device_wake(struct dasd_device *); 407 408/* 409 * Reference count inliners --- 122 unchanged lines hidden (view full) --- 532dasd_kmalloc_set_cda(struct ccw1 *ccw, void *cda, struct dasd_device *device) 533{ 534 return set_normalized_cda(ccw, cda); 535} 536 537struct dasd_device *dasd_alloc_device(void); 538void dasd_free_device(struct dasd_device *); 539 |
540struct dasd_block *dasd_alloc_block(void); 541void dasd_free_block(struct dasd_block *); 542 |
|
492void dasd_enable_device(struct dasd_device *); 493void dasd_set_target_state(struct dasd_device *, int); 494void dasd_kick_device(struct dasd_device *); 495 496void dasd_add_request_head(struct dasd_ccw_req *); 497void dasd_add_request_tail(struct dasd_ccw_req *); 498int dasd_start_IO(struct dasd_ccw_req *); 499int dasd_term_IO(struct dasd_ccw_req *); | 543void dasd_enable_device(struct dasd_device *); 544void dasd_set_target_state(struct dasd_device *, int); 545void dasd_kick_device(struct dasd_device *); 546 547void dasd_add_request_head(struct dasd_ccw_req *); 548void dasd_add_request_tail(struct dasd_ccw_req *); 549int dasd_start_IO(struct dasd_ccw_req *); 550int dasd_term_IO(struct dasd_ccw_req *); |
500void dasd_schedule_bh(struct dasd_device *); | 551void dasd_schedule_device_bh(struct dasd_device *); 552void dasd_schedule_block_bh(struct dasd_block *); |
501int dasd_sleep_on(struct dasd_ccw_req *); 502int dasd_sleep_on_immediatly(struct dasd_ccw_req *); 503int dasd_sleep_on_interruptible(struct dasd_ccw_req *); | 553int dasd_sleep_on(struct dasd_ccw_req *); 554int dasd_sleep_on_immediatly(struct dasd_ccw_req *); 555int dasd_sleep_on_interruptible(struct dasd_ccw_req *); |
504void dasd_set_timer(struct dasd_device *, int); 505void dasd_clear_timer(struct dasd_device *); | 556void dasd_device_set_timer(struct dasd_device *, int); 557void dasd_device_clear_timer(struct dasd_device *); 558void dasd_block_set_timer(struct dasd_block *, int); 559void dasd_block_clear_timer(struct dasd_block *); |
506int dasd_cancel_req(struct dasd_ccw_req *); | 560int dasd_cancel_req(struct dasd_ccw_req *); |
561int dasd_flush_device_queue(struct dasd_device *); |
|
507int dasd_generic_probe (struct ccw_device *, struct dasd_discipline *); 508void dasd_generic_remove (struct ccw_device *cdev); 509int dasd_generic_set_online(struct ccw_device *, struct dasd_discipline *); 510int dasd_generic_set_offline (struct ccw_device *cdev); 511int dasd_generic_notify(struct ccw_device *, int); | 562int dasd_generic_probe (struct ccw_device *, struct dasd_discipline *); 563void dasd_generic_remove (struct ccw_device *cdev); 564int dasd_generic_set_online(struct ccw_device *, struct dasd_discipline *); 565int dasd_generic_set_offline (struct ccw_device *cdev); 566int dasd_generic_notify(struct ccw_device *, int); |
567void dasd_generic_handle_state_change(struct dasd_device *); |
|
512 513int dasd_generic_read_dev_chars(struct dasd_device *, char *, void **, int); 514 515/* externals in dasd_devmap.c */ 516extern int dasd_max_devindex; 517extern int dasd_probeonly; 518extern int dasd_autodetect; 519extern int dasd_nopav; --- 17 unchanged lines hidden (view full) --- 537struct dasd_device *dasd_device_from_devindex(int); 538 539int dasd_parse(void); 540int dasd_busid_known(char *); 541 542/* externals in dasd_gendisk.c */ 543int dasd_gendisk_init(void); 544void dasd_gendisk_exit(void); | 568 569int dasd_generic_read_dev_chars(struct dasd_device *, char *, void **, int); 570 571/* externals in dasd_devmap.c */ 572extern int dasd_max_devindex; 573extern int dasd_probeonly; 574extern int dasd_autodetect; 575extern int dasd_nopav; --- 17 unchanged lines hidden (view full) --- 593struct dasd_device *dasd_device_from_devindex(int); 594 595int dasd_parse(void); 596int dasd_busid_known(char *); 597 598/* externals in dasd_gendisk.c */ 599int dasd_gendisk_init(void); 600void dasd_gendisk_exit(void); |
545int dasd_gendisk_alloc(struct dasd_device *); 546void dasd_gendisk_free(struct dasd_device *); 547int dasd_scan_partitions(struct dasd_device *); 548void dasd_destroy_partitions(struct dasd_device *); | 601int dasd_gendisk_alloc(struct dasd_block *); 602void dasd_gendisk_free(struct dasd_block *); 603int dasd_scan_partitions(struct dasd_block *); 604void dasd_destroy_partitions(struct dasd_block *); |
549 550/* externals in dasd_ioctl.c */ 551int dasd_ioctl(struct inode *, struct file *, unsigned int, unsigned long); 552long dasd_compat_ioctl(struct file *, unsigned int, unsigned long); 553 554/* externals in dasd_proc.c */ 555int dasd_proc_init(void); 556void dasd_proc_exit(void); 557 558/* externals in dasd_erp.c */ 559struct dasd_ccw_req *dasd_default_erp_action(struct dasd_ccw_req *); 560struct dasd_ccw_req *dasd_default_erp_postaction(struct dasd_ccw_req *); 561struct dasd_ccw_req *dasd_alloc_erp_request(char *, int, int, 562 struct dasd_device *); 563void dasd_free_erp_request(struct dasd_ccw_req *, struct dasd_device *); 564void dasd_log_sense(struct dasd_ccw_req *, struct irb *); 565 | 605 606/* externals in dasd_ioctl.c */ 607int dasd_ioctl(struct inode *, struct file *, unsigned int, unsigned long); 608long dasd_compat_ioctl(struct file *, unsigned int, unsigned long); 609 610/* externals in dasd_proc.c */ 611int dasd_proc_init(void); 612void dasd_proc_exit(void); 613 614/* externals in dasd_erp.c */ 615struct dasd_ccw_req *dasd_default_erp_action(struct dasd_ccw_req *); 616struct dasd_ccw_req *dasd_default_erp_postaction(struct dasd_ccw_req *); 617struct dasd_ccw_req *dasd_alloc_erp_request(char *, int, int, 618 struct dasd_device *); 619void dasd_free_erp_request(struct dasd_ccw_req *, struct dasd_device *); 620void dasd_log_sense(struct dasd_ccw_req *, struct irb *); 621 |
566/* externals in dasd_3370_erp.c */ 567dasd_era_t dasd_3370_erp_examine(struct dasd_ccw_req *, struct irb *); 568 | |
569/* externals in dasd_3990_erp.c */ | 622/* externals in dasd_3990_erp.c */ |
570dasd_era_t dasd_3990_erp_examine(struct dasd_ccw_req *, struct irb *); | |
571struct dasd_ccw_req *dasd_3990_erp_action(struct dasd_ccw_req *); 572 | 623struct dasd_ccw_req *dasd_3990_erp_action(struct dasd_ccw_req *); 624 |
573/* externals in dasd_9336_erp.c */ 574dasd_era_t dasd_9336_erp_examine(struct dasd_ccw_req *, struct irb *); 575 576/* externals in dasd_9336_erp.c */ 577dasd_era_t dasd_9343_erp_examine(struct dasd_ccw_req *, struct irb *); 578struct dasd_ccw_req *dasd_9343_erp_action(struct dasd_ccw_req *); 579 | |
580/* externals in dasd_eer.c */ 581#ifdef CONFIG_DASD_EER 582int dasd_eer_init(void); 583void dasd_eer_exit(void); 584int dasd_eer_enable(struct dasd_device *); 585void dasd_eer_disable(struct dasd_device *); 586void dasd_eer_write(struct dasd_device *, struct dasd_ccw_req *cqr, 587 unsigned int id); --- 19 unchanged lines hidden --- | 625/* externals in dasd_eer.c */ 626#ifdef CONFIG_DASD_EER 627int dasd_eer_init(void); 628void dasd_eer_exit(void); 629int dasd_eer_enable(struct dasd_device *); 630void dasd_eer_disable(struct dasd_device *); 631void dasd_eer_write(struct dasd_device *, struct dasd_ccw_req *cqr, 632 unsigned int id); --- 19 unchanged lines hidden --- |