diff options
| -rw-r--r-- | drivers/acorn/block/fd1772.c | 5 | ||||
| -rw-r--r-- | drivers/acorn/block/mfmhd.c | 2 | ||||
| -rw-r--r-- | drivers/block/acsi.c | 2 | ||||
| -rw-r--r-- | drivers/block/amiflop.c | 2 | ||||
| -rw-r--r-- | drivers/block/ataflop.c | 2 | ||||
| -rw-r--r-- | drivers/block/cpqarray.c | 1 | ||||
| -rw-r--r-- | drivers/block/floppy.c | 62 | ||||
| -rw-r--r-- | drivers/block/paride/pcd.c | 4 | ||||
| -rw-r--r-- | drivers/block/paride/pd.c | 6 | ||||
| -rw-r--r-- | drivers/block/paride/pf.c | 6 | ||||
| -rw-r--r-- | drivers/block/ps2esdi.c | 3 | ||||
| -rw-r--r-- | drivers/block/swim3.c | 3 | ||||
| -rw-r--r-- | drivers/block/swim_iop.c | 3 | ||||
| -rw-r--r-- | drivers/block/xd.c | 2 | ||||
| -rw-r--r-- | drivers/cdrom/aztcd.c | 2 | ||||
| -rw-r--r-- | drivers/cdrom/cdu31a.c | 2 | ||||
| -rw-r--r-- | drivers/cdrom/cm206.c | 2 | ||||
| -rw-r--r-- | drivers/cdrom/gscd.c | 2 | ||||
| -rw-r--r-- | drivers/cdrom/mcd.c | 2 | ||||
| -rw-r--r-- | drivers/cdrom/mcdx.c | 2 | ||||
| -rw-r--r-- | drivers/cdrom/optcd.c | 2 | ||||
| -rw-r--r-- | drivers/cdrom/sbpcd.c | 2 | ||||
| -rw-r--r-- | drivers/cdrom/sjcd.c | 2 | ||||
| -rw-r--r-- | drivers/cdrom/sonycd535.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/ftl.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/nftlcore.c | 1 | ||||
| -rw-r--r-- | drivers/scsi/sr.c | 1 | ||||
| -rw-r--r-- | include/linux/blk.h | 70 |
28 files changed, 77 insertions, 122 deletions
diff --git a/drivers/acorn/block/fd1772.c b/drivers/acorn/block/fd1772.c index 1667797e2662..180211441424 100644 --- a/drivers/acorn/block/fd1772.c +++ b/drivers/acorn/block/fd1772.c @@ -373,6 +373,7 @@ static int fd_test_drive_present(int drive); static void config_types(void); static int floppy_open(struct inode *inode, struct file *filp); static int floppy_release(struct inode *inode, struct file *filp); +static void do_fd_request(request_queue_t *); /************************* End of Prototypes **************************/ @@ -1302,7 +1303,7 @@ static void fd1772_checkint(void) } } -void do_fd_request(request_queue_t* q) +static void do_fd_request(request_queue_t* q) { unsigned long flags; @@ -1614,7 +1615,7 @@ int fd1772_init(void) blk_size[MAJOR_NR] = floppy_sizes; blksize_size[MAJOR_NR] = floppy_blocksizes; - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request); config_types(); diff --git a/drivers/acorn/block/mfmhd.c b/drivers/acorn/block/mfmhd.c index eee5a3068d8b..b5346338879f 100644 --- a/drivers/acorn/block/mfmhd.c +++ b/drivers/acorn/block/mfmhd.c @@ -1427,7 +1427,7 @@ int mfm_init (void) hdc63463_irqpolladdress = mfm_IRQPollLoc; hdc63463_irqpollmask = irqmask; - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_mfm_request); add_gendisk(&mfm_gendisk); diff --git a/drivers/block/acsi.c b/drivers/block/acsi.c index 85224abc2bfe..a90054a7389d 100644 --- a/drivers/block/acsi.c +++ b/drivers/block/acsi.c @@ -1784,7 +1784,7 @@ int acsi_init( void ) phys_acsi_buffer = virt_to_phys( acsi_buffer ); STramMask = ATARIHW_PRESENT(EXTD_DMA) ? 0x00000000 : 0xff000000; - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &acsi_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_acsi_request, &acsi_lock); add_gendisk(&acsi_gendisk); #ifdef CONFIG_ATARI_SLM diff --git a/drivers/block/amiflop.c b/drivers/block/amiflop.c index 125bd19d0d45..3aad1ba8052c 100644 --- a/drivers/block/amiflop.c +++ b/drivers/block/amiflop.c @@ -1857,7 +1857,7 @@ int __init amiga_floppy_init(void) post_write_timer.data = 0; post_write_timer.function = post_write; - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &amiflop_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request, &amiflop_lock); blksize_size[MAJOR_NR] = floppy_blocksizes; blk_size[MAJOR_NR] = floppy_sizes; diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c index 7f18fca76d08..f73bcb9b30f6 100644 --- a/drivers/block/ataflop.c +++ b/drivers/block/ataflop.c @@ -2013,7 +2013,7 @@ int __init atari_floppy_init (void) blk_size[MAJOR_NR] = floppy_sizes; blksize_size[MAJOR_NR] = floppy_blocksizes; - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &ataflop_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request, &ataflop_lock); printk(KERN_INFO "Atari floppy driver: max. %cD, %strack buffering\n", DriveType == 0 ? 'D' : DriveType == 1 ? 'H' : 'E', diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c index c8cf5871273b..f5c2d25c66b2 100644 --- a/drivers/block/cpqarray.c +++ b/drivers/block/cpqarray.c @@ -52,6 +52,7 @@ MODULE_DESCRIPTION("Driver for Compaq Smart2 Array Controllers"); MODULE_LICENSE("GPL"); #define MAJOR_NR COMPAQ_SMART2_MAJOR +#define LOCAL_END_REQUEST #include <linux/blk.h> #include <linux/blkdev.h> #include <linux/genhd.h> diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 052d2a6b8f60..8fda784f0e7f 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -230,6 +230,7 @@ static int allowed_drive_mask = 0x33; static int irqdma_allocated; +#define LOCAL_END_REQUEST #define MAJOR_NR FLOPPY_MAJOR #include <linux/blk.h> @@ -2274,17 +2275,32 @@ static int do_format(kdev_t device, struct format_descr *tmp_format_req) * ============================= */ +static inline void end_request(struct request *req, int uptodate) +{ + kdev_t dev = req->rq_dev; + + if (end_that_request_first(req, uptodate, req->hard_cur_sectors)) + return; + add_blkdev_randomness(major(dev)); + floppy_off(DEVICE_NR(dev)); + blkdev_dequeue_request(req); + end_that_request_last(req); +} + + /* new request_done. Can handle physical sectors which are smaller than a * logical buffer */ static void request_done(int uptodate) { + struct request_queue *q = QUEUE; + struct request *req = elv_next_request(q); unsigned long flags; int block; probing = 0; reschedule_timeout(MAXTIMEOUT, "request done %d", uptodate); - if (QUEUE_EMPTY){ + if (blk_queue_empty(q)) { DPRINT("request list destroyed in floppy request done\n"); return; } @@ -2292,48 +2308,48 @@ static void request_done(int uptodate) if (uptodate){ /* maintain values for invalidation on geometry * change */ - block = current_count_sectors + CURRENT->sector; + block = current_count_sectors + req->sector; INFBOUND(DRS->maxblock, block); if (block > _floppy->sect) DRS->maxtrack = 1; /* unlock chained buffers */ - spin_lock_irqsave(QUEUE->queue_lock, flags); - while (current_count_sectors && !QUEUE_EMPTY && - current_count_sectors >= CURRENT->current_nr_sectors){ - current_count_sectors -= CURRENT->current_nr_sectors; - CURRENT->nr_sectors -= CURRENT->current_nr_sectors; - CURRENT->sector += CURRENT->current_nr_sectors; - end_request(1); + spin_lock_irqsave(q->queue_lock, flags); + while (current_count_sectors && !blk_queue_empty(q) && + current_count_sectors >= req->current_nr_sectors){ + current_count_sectors -= req->current_nr_sectors; + req->nr_sectors -= req->current_nr_sectors; + req->sector += req->current_nr_sectors; + end_request(req, 1); } - spin_unlock_irqrestore(QUEUE->queue_lock, flags); + spin_unlock_irqrestore(q->queue_lock, flags); - if (current_count_sectors && !QUEUE_EMPTY){ + if (current_count_sectors && !blk_queue_empty(q)) { /* "unlock" last subsector */ - CURRENT->buffer += current_count_sectors <<9; - CURRENT->current_nr_sectors -= current_count_sectors; - CURRENT->nr_sectors -= current_count_sectors; - CURRENT->sector += current_count_sectors; + req->buffer += current_count_sectors <<9; + req->current_nr_sectors -= current_count_sectors; + req->nr_sectors -= current_count_sectors; + req->sector += current_count_sectors; return; } - if (current_count_sectors && QUEUE_EMPTY) + if (current_count_sectors && blk_queue_empty(q)) DPRINT("request list destroyed in floppy request done\n"); } else { - if (rq_data_dir(CURRENT) == WRITE) { + if (rq_data_dir(req) == WRITE) { /* record write error information */ DRWE->write_errors++; if (DRWE->write_errors == 1) { - DRWE->first_error_sector = CURRENT->sector; + DRWE->first_error_sector = req->sector; DRWE->first_error_generation = DRS->generation; } - DRWE->last_error_sector = CURRENT->sector; + DRWE->last_error_sector = req->sector; DRWE->last_error_generation = DRS->generation; } - spin_lock_irqsave(QUEUE->queue_lock, flags); - end_request(0); - spin_unlock_irqrestore(QUEUE->queue_lock, flags); + spin_lock_irqsave(q->queue_lock, flags); + end_request(req, 0); + spin_unlock_irqrestore(q->queue_lock, flags); } } @@ -4168,7 +4184,7 @@ int __init floppy_init(void) blk_size[MAJOR_NR] = floppy_sizes; blksize_size[MAJOR_NR] = floppy_blocksizes; - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &floppy_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request, &floppy_lock); reschedule_timeout(MAXTIMEOUT, "floppy init", MAXTIMEOUT); config_types(); diff --git a/drivers/block/paride/pcd.c b/drivers/block/paride/pcd.c index 8520bbeda5de..126443216dd1 100644 --- a/drivers/block/paride/pcd.c +++ b/drivers/block/paride/pcd.c @@ -181,9 +181,7 @@ MODULE_PARM(drive3,"1-6i"); #define MAJOR_NR major #define DEVICE_NAME "PCD" -#define DEVICE_REQUEST do_pcd_request #define DEVICE_NR(device) (minor(device)) -#define DEVICE_ON(device) #define DEVICE_OFF(device) #include <linux/blk.h> @@ -357,7 +355,7 @@ int pcd_init (void) /* preliminary initialisation */ } } - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &pcd_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_pcd_request, &pcd_lock); for (i=0;i<PCD_UNITS;i++) pcd_blocksizes[i] = 1024; blksize_size[MAJOR_NR] = pcd_blocksizes; diff --git a/drivers/block/paride/pd.c b/drivers/block/paride/pd.c index 91cc8e3eac35..a54e4fbca49c 100644 --- a/drivers/block/paride/pd.c +++ b/drivers/block/paride/pd.c @@ -205,9 +205,7 @@ MODULE_PARM(drive3,"1-8i"); #define MAJOR_NR major #define DEVICE_NAME "PD" -#define DEVICE_REQUEST do_pd_request #define DEVICE_NR(device) (minor(device)>>PD_BITS) -#define DEVICE_ON(device) #define DEVICE_OFF(device) #include <linux/blk.h> @@ -395,9 +393,9 @@ int pd_init (void) return -1; } q = BLK_DEFAULT_QUEUE(MAJOR_NR); - blk_init_queue(q, DEVICE_REQUEST, &pd_lock); + blk_init_queue(q, do_pd_request, &pd_lock); blk_queue_max_sectors(q, cluster); - + pd_gendisk.major = major; pd_gendisk.major_name = name; add_gendisk(&pd_gendisk); diff --git a/drivers/block/paride/pf.c b/drivers/block/paride/pf.c index be857543c111..ae5ac1934e63 100644 --- a/drivers/block/paride/pf.c +++ b/drivers/block/paride/pf.c @@ -201,9 +201,7 @@ MODULE_PARM(drive3,"1-7i"); #define MAJOR_NR major #define DEVICE_NAME "PF" -#define DEVICE_REQUEST do_pf_request #define DEVICE_NR(device) minor(device) -#define DEVICE_ON(device) #define DEVICE_OFF(device) #include <linux/blk.h> @@ -360,10 +358,10 @@ int pf_init (void) /* preliminary initialisation */ return -1; } q = BLK_DEFAULT_QUEUE(MAJOR_NR); - blk_init_queue(q, DEVICE_REQUEST, &pf_spin_lock); + blk_init_queue(q, do_pf_request, &pf_spin_lock); blk_queue_max_phys_segments(q, cluster); blk_queue_max_hw_segments(q, cluster); - + for (i=0;i<PF_UNITS;i++) pf_blocksizes[i] = 1024; blksize_size[MAJOR_NR] = pf_blocksizes; for (i=0;i<PF_UNITS;i++) diff --git a/drivers/block/ps2esdi.c b/drivers/block/ps2esdi.c index 79370ff00905..d75890d4bc91 100644 --- a/drivers/block/ps2esdi.c +++ b/drivers/block/ps2esdi.c @@ -176,7 +176,8 @@ int __init ps2esdi_init(void) return -1; } /* set up some global information - indicating device specific info */ - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &ps2esdi_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_ps2esdi_request, + &ps2esdi_lock); /* some minor housekeeping - setup the global gendisk structure */ add_gendisk(&ps2esdi_gendisk); diff --git a/drivers/block/swim3.c b/drivers/block/swim3.c index ad3ead3611b5..9a309d1c37af 100644 --- a/drivers/block/swim3.c +++ b/drivers/block/swim3.c @@ -1032,7 +1032,8 @@ int swim3_init(void) MAJOR_NR); return -EBUSY; } - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST,&swim3_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request, + &swim3_lock); blksize_size[MAJOR_NR] = floppy_blocksizes; blk_size[MAJOR_NR] = floppy_sizes; } diff --git a/drivers/block/swim_iop.c b/drivers/block/swim_iop.c index 0fbe21e39986..6033898f7dc3 100644 --- a/drivers/block/swim_iop.c +++ b/drivers/block/swim_iop.c @@ -149,7 +149,8 @@ int swimiop_init(void) MAJOR_NR); return -EBUSY; } - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &swim_iop_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_fd_request, + &swim_iop_lock); blksize_size[MAJOR_NR] = floppy_blocksizes; blk_size[MAJOR_NR] = floppy_sizes; diff --git a/drivers/block/xd.c b/drivers/block/xd.c index 76e87ad39cfd..46fe35af7d74 100644 --- a/drivers/block/xd.c +++ b/drivers/block/xd.c @@ -170,7 +170,7 @@ int __init xd_init (void) return -1; } devfs_handle = devfs_mk_dir (NULL, xd_gendisk.major_name, NULL); - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &xd_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_xd_request, &xd_lock); add_gendisk(&xd_gendisk); xd_geninit(); diff --git a/drivers/cdrom/aztcd.c b/drivers/cdrom/aztcd.c index 486081bc379f..410279f4b1b7 100644 --- a/drivers/cdrom/aztcd.c +++ b/drivers/cdrom/aztcd.c @@ -1925,7 +1925,7 @@ int __init aztcd_init(void) MAJOR_NR); return -EIO; } - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &aztSpin); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_aztcd_request, &aztSpin); blksize_size[MAJOR_NR] = aztcd_blocksizes; register_disk(NULL, mk_kdev(MAJOR_NR, 0), 1, &azt_fops, 0); diff --git a/drivers/cdrom/cdu31a.c b/drivers/cdrom/cdu31a.c index 86bf0c25aa8f..5d4846f7bd37 100644 --- a/drivers/cdrom/cdu31a.c +++ b/drivers/cdrom/cdu31a.c @@ -3440,7 +3440,7 @@ int __init cdu31a_init(void) strcmp("CD-ROM CDU31A", drive_config.product_id) == 0; blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), - DEVICE_REQUEST, + do_cdu31a_request, &cdu31a_lock); cdu31a_block_size = 1024; /* 1kB default block size */ /* use 'mount -o block=2048' */ diff --git a/drivers/cdrom/cm206.c b/drivers/cdrom/cm206.c index 08a0530d370c..112357b85f15 100644 --- a/drivers/cdrom/cm206.c +++ b/drivers/cdrom/cm206.c @@ -1500,7 +1500,7 @@ int __init cm206_init(void) return -EIO; } devfs_plain_cdrom(&cm206_info, &cm206_bdops); - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_cm206_request, &cm206_lock); blksize_size[MAJOR_NR] = cm206_blocksizes; init_bh(CM206_BH, cm206_bh); diff --git a/drivers/cdrom/gscd.c b/drivers/cdrom/gscd.c index da119977668e..0809a79fd97c 100644 --- a/drivers/cdrom/gscd.c +++ b/drivers/cdrom/gscd.c @@ -1020,7 +1020,7 @@ int __init my_gscd_init(void) devfs_register(NULL, "gscd", DEVFS_FL_DEFAULT, MAJOR_NR, 0, S_IFBLK | S_IRUGO | S_IWUGO, &gscd_fops, NULL); - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &gscd_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_gscd_request, &gscd_lock); blksize_size[MAJOR_NR] = gscd_blocksizes; disk_state = 0; diff --git a/drivers/cdrom/mcd.c b/drivers/cdrom/mcd.c index 4db2a7954d7f..4d5cf1bd95a4 100644 --- a/drivers/cdrom/mcd.c +++ b/drivers/cdrom/mcd.c @@ -1073,7 +1073,7 @@ int __init mcd_init(void) } blksize_size[MAJOR_NR] = mcd_blocksizes; - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_mcd_request, &mcd_spinlock); /* check for card */ diff --git a/drivers/cdrom/mcdx.c b/drivers/cdrom/mcdx.c index 30f555fa3023..332a05132284 100644 --- a/drivers/cdrom/mcdx.c +++ b/drivers/cdrom/mcdx.c @@ -1182,7 +1182,7 @@ int __init mcdx_init_drive(int drive) return 1; } - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_mcdx_request, &mcdx_lock); blksize_size[MAJOR_NR] = mcdx_blocksizes; diff --git a/drivers/cdrom/optcd.c b/drivers/cdrom/optcd.c index 858a9d697c30..afbf0611cb51 100644 --- a/drivers/cdrom/optcd.c +++ b/drivers/cdrom/optcd.c @@ -2060,7 +2060,7 @@ int __init optcd_init(void) devfs_register (NULL, "optcd", DEVFS_FL_DEFAULT, MAJOR_NR, 0, S_IFBLK | S_IRUGO | S_IWUGO, &opt_fops, NULL); blksize_size[MAJOR_NR] = &blksize; - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_optcd_request, &optcd_lock); request_region(optcd_port, 4, "optcd"); register_disk(NULL, mk_kdev(MAJOR_NR,0), 1, &opt_fops, 0); diff --git a/drivers/cdrom/sbpcd.c b/drivers/cdrom/sbpcd.c index dba54758f639..f213a70f417e 100644 --- a/drivers/cdrom/sbpcd.c +++ b/drivers/cdrom/sbpcd.c @@ -5858,7 +5858,7 @@ int __init SBPCD_INIT(void) goto init_done; #endif /* MODULE */ } - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DO_SBPCD_REQUEST, &sbpcd_lock); #ifdef DONT_MERGE_REQUESTS (BLK_DEFAULT_QUEUE(MAJOR_NR))->back_merge_fn = dont_bh_merge_fn; (BLK_DEFAULT_QUEUE(MAJOR_NR))->front_merge_fn = dont_bh_merge_fn; diff --git a/drivers/cdrom/sjcd.c b/drivers/cdrom/sjcd.c index d1f0b9c4d58a..ad1d65b681ea 100644 --- a/drivers/cdrom/sjcd.c +++ b/drivers/cdrom/sjcd.c @@ -1694,7 +1694,7 @@ int __init sjcd_init(void) return (-EIO); } - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST,&sjcd_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_sjcd_request, &sjcd_lock); register_disk(NULL, mk_kdev(MAJOR_NR, 0), 1, &sjcd_fops, 0); if (check_region(sjcd_base, 4)) { diff --git a/drivers/cdrom/sonycd535.c b/drivers/cdrom/sonycd535.c index b19a356f8e00..7f88b99efcf6 100644 --- a/drivers/cdrom/sonycd535.c +++ b/drivers/cdrom/sonycd535.c @@ -1596,7 +1596,9 @@ sony535_init(void) MAJOR_NR, CDU535_MESSAGE_NAME); return -EIO; } - blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST, &sonycd535_lock); + blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), + do_cdu535_request, + &sonycd535_lock); blksize_size[MAJOR_NR] = &sonycd535_block_size; sony_toc = (struct s535_sony_toc *) diff --git a/drivers/mtd/ftl.c b/drivers/mtd/ftl.c index 947b797d19f2..bda917c7f4ee 100644 --- a/drivers/mtd/ftl.c +++ b/drivers/mtd/ftl.c @@ -95,8 +95,6 @@ MODULE_PARM(shuffle_freq, "i"); /* Funky stuff for setting up a block device */ #define MAJOR_NR FTL_MAJOR #define DEVICE_NAME "ftl" -#define DEVICE_REQUEST do_ftl_request -#define DEVICE_ON(device) #define DEVICE_OFF(device) #define DEVICE_NR(minor) ((minor)>>5) diff --git a/drivers/mtd/nftlcore.c b/drivers/mtd/nftlcore.c index 8fdf2171aa7a..ae0b5bec47e1 100644 --- a/drivers/mtd/nftlcore.c +++ b/drivers/mtd/nftlcore.c @@ -40,7 +40,6 @@ /* NFTL block device stuff */ #define MAJOR_NR NFTL_MAJOR -#define DEVICE_REQUEST nftl_request #define DEVICE_OFF(device) diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c index c2e6ce5de12b..6a07030fd27a 100644 --- a/drivers/scsi/sr.c +++ b/drivers/scsi/sr.c @@ -49,6 +49,7 @@ #include <asm/uaccess.h> #define MAJOR_NR SCSI_CDROM_MAJOR +#define LOCAL_END_REQUEST #include <linux/blk.h> #include "scsi.h" #include "hosts.h" diff --git a/include/linux/blk.h b/include/linux/blk.h index 7818fe10dd65..9be0913f6069 100644 --- a/include/linux/blk.h +++ b/include/linux/blk.h @@ -100,9 +100,6 @@ extern inline struct request *elv_next_request(request_queue_t *q) #if defined(MAJOR_NR) || defined(IDE_DRIVER) -#undef DEVICE_ON -#undef DEVICE_OFF - /* * Add entries as needed. */ @@ -117,13 +114,11 @@ extern inline struct request *elv_next_request(request_queue_t *q) /* ram disk */ #define DEVICE_NAME "ramdisk" #define DEVICE_NR(device) (minor(device)) -#define DEVICE_NO_RANDOM #elif (MAJOR_NR == Z2RAM_MAJOR) /* Zorro II Ram */ #define DEVICE_NAME "Z2RAM" -#define DEVICE_REQUEST do_z2_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == FLOPPY_MAJOR) @@ -132,30 +127,24 @@ static void floppy_off(unsigned int nr); #define DEVICE_NAME "floppy" #define DEVICE_INTR do_floppy -#define DEVICE_REQUEST do_fd_request #define DEVICE_NR(device) ( (minor(device) & 3) | ((minor(device) & 0x80 ) >> 5 )) -#define DEVICE_OFF(device) floppy_off(DEVICE_NR(device)) #elif (MAJOR_NR == HD_MAJOR) /* Hard disk: timeout is 6 seconds. */ #define DEVICE_NAME "hard disk" #define DEVICE_INTR do_hd -#define TIMEOUT_VALUE (6*HZ) -#define DEVICE_REQUEST do_hd_request #define DEVICE_NR(device) (minor(device)>>6) #elif (SCSI_DISK_MAJOR(MAJOR_NR)) #define DEVICE_NAME "scsidisk" -#define TIMEOUT_VALUE (2*HZ) #define DEVICE_NR(device) (((major(device) & SD_MAJOR_MASK) << (8 - 4)) + (minor(device) >> 4)) /* Kludge to use the same number for both char and block major numbers */ #elif (MAJOR_NR == MD_MAJOR) && defined(MD_DRIVER) #define DEVICE_NAME "Multiple devices driver" -#define DEVICE_REQUEST do_md_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == SCSI_TAPE_MAJOR) @@ -169,8 +158,6 @@ static void floppy_off(unsigned int nr); #define DEVICE_NAME "onstream" #define DEVICE_INTR do_osst #define DEVICE_NR(device) (minor(device) & 0x7f) -#define DEVICE_ON(device) -#define DEVICE_OFF(device) #elif (MAJOR_NR == SCSI_CDROM_MAJOR) @@ -180,163 +167,129 @@ static void floppy_off(unsigned int nr); #elif (MAJOR_NR == XT_DISK_MAJOR) #define DEVICE_NAME "xt disk" -#define DEVICE_REQUEST do_xd_request #define DEVICE_NR(device) (minor(device) >> 6) #elif (MAJOR_NR == PS2ESDI_MAJOR) #define DEVICE_NAME "PS/2 ESDI" -#define DEVICE_REQUEST do_ps2esdi_request #define DEVICE_NR(device) (minor(device) >> 6) #elif (MAJOR_NR == CDU31A_CDROM_MAJOR) #define DEVICE_NAME "CDU31A" -#define DEVICE_REQUEST do_cdu31a_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == ACSI_MAJOR) && (defined(CONFIG_ATARI_ACSI) || defined(CONFIG_ATARI_ACSI_MODULE)) #define DEVICE_NAME "ACSI" #define DEVICE_INTR do_acsi -#define DEVICE_REQUEST do_acsi_request #define DEVICE_NR(device) (minor(device) >> 4) #elif (MAJOR_NR == MITSUMI_CDROM_MAJOR) #define DEVICE_NAME "Mitsumi CD-ROM" /* #define DEVICE_INTR do_mcd */ -#define DEVICE_REQUEST do_mcd_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == MITSUMI_X_CDROM_MAJOR) #define DEVICE_NAME "Mitsumi CD-ROM" /* #define DEVICE_INTR do_mcdx */ -#define DEVICE_REQUEST do_mcdx_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == MATSUSHITA_CDROM_MAJOR) #define DEVICE_NAME "Matsushita CD-ROM controller #1" -#define DEVICE_REQUEST do_sbpcd_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == MATSUSHITA_CDROM2_MAJOR) #define DEVICE_NAME "Matsushita CD-ROM controller #2" -#define DEVICE_REQUEST do_sbpcd2_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == MATSUSHITA_CDROM3_MAJOR) #define DEVICE_NAME "Matsushita CD-ROM controller #3" -#define DEVICE_REQUEST do_sbpcd3_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == MATSUSHITA_CDROM4_MAJOR) #define DEVICE_NAME "Matsushita CD-ROM controller #4" -#define DEVICE_REQUEST do_sbpcd4_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == AZTECH_CDROM_MAJOR) #define DEVICE_NAME "Aztech CD-ROM" -#define DEVICE_REQUEST do_aztcd_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == CDU535_CDROM_MAJOR) #define DEVICE_NAME "SONY-CDU535" #define DEVICE_INTR do_cdu535 -#define DEVICE_REQUEST do_cdu535_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == GOLDSTAR_CDROM_MAJOR) #define DEVICE_NAME "Goldstar R420" -#define DEVICE_REQUEST do_gscd_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == CM206_CDROM_MAJOR) #define DEVICE_NAME "Philips/LMS CD-ROM cm206" -#define DEVICE_REQUEST do_cm206_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == OPTICS_CDROM_MAJOR) #define DEVICE_NAME "DOLPHIN 8000AT CD-ROM" -#define DEVICE_REQUEST do_optcd_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == SANYO_CDROM_MAJOR) #define DEVICE_NAME "Sanyo H94A CD-ROM" -#define DEVICE_REQUEST do_sjcd_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == APBLOCK_MAJOR) #define DEVICE_NAME "apblock" -#define DEVICE_REQUEST ap_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == DDV_MAJOR) #define DEVICE_NAME "ddv" -#define DEVICE_REQUEST ddv_request #define DEVICE_NR(device) (minor(device)>>PARTN_BITS) #elif (MAJOR_NR == MFM_ACORN_MAJOR) #define DEVICE_NAME "mfm disk" #define DEVICE_INTR do_mfm -#define DEVICE_REQUEST do_mfm_request #define DEVICE_NR(device) (minor(device) >> 6) #elif (MAJOR_NR == NBD_MAJOR) #define DEVICE_NAME "nbd" -#define DEVICE_REQUEST do_nbd_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == MDISK_MAJOR) #define DEVICE_NAME "mdisk" -#define DEVICE_REQUEST mdisk_request #define DEVICE_NR(device) (minor(device)) #elif (MAJOR_NR == DASD_MAJOR) #define DEVICE_NAME "dasd" -#define DEVICE_REQUEST do_dasd_request #define DEVICE_NR(device) (minor(device) >> PARTN_BITS) #elif (MAJOR_NR == I2O_MAJOR) #define DEVICE_NAME "I2O block" -#define DEVICE_REQUEST i2ob_request #define DEVICE_NR(device) (minor(device)>>4) #elif (MAJOR_NR == COMPAQ_SMART2_MAJOR) #define DEVICE_NAME "ida" -#define TIMEOUT_VALUE (25*HZ) -#define DEVICE_REQUEST do_ida_request #define DEVICE_NR(device) (minor(device) >> 4) #endif /* MAJOR_NR == whatever */ -/* provide DEVICE_xxx defaults, if not explicitly defined - * above in the MAJOR_NR==xxx if-elif tree */ -#ifndef DEVICE_ON -#define DEVICE_ON(device) do {} while (0) -#endif -#ifndef DEVICE_OFF -#define DEVICE_OFF(device) do {} while (0) -#endif - #if (MAJOR_NR != SCSI_TAPE_MAJOR) && (MAJOR_NR != OSST_MAJOR) #if !defined(IDE_DRIVER) @@ -349,8 +302,6 @@ static void floppy_off(unsigned int nr); #ifndef QUEUE_EMPTY #define QUEUE_EMPTY blk_queue_empty(QUEUE) #endif - - #ifndef DEVICE_NAME #define DEVICE_NAME "unknown" #endif @@ -363,10 +314,6 @@ static void (*DEVICE_INTR)(void) = NULL; #define SET_INTR(x) (DEVICE_INTR = (x)) -#ifdef DEVICE_REQUEST -static void (DEVICE_REQUEST)(request_queue_t *); -#endif - #ifdef DEVICE_INTR #define CLEAR_INTR SET_INTR(NULL) #else @@ -385,11 +332,10 @@ static void (DEVICE_REQUEST)(request_queue_t *); #endif /* !defined(IDE_DRIVER) */ - -#ifndef LOCAL_END_REQUEST /* If we have our own end_request, we do not want to include this mess */ - -#if ! SCSI_BLK_MAJOR(MAJOR_NR) && (MAJOR_NR != COMPAQ_SMART2_MAJOR) - +/* + * If we have our own end_request, we do not want to include this mess + */ +#ifndef LOCAL_END_REQUEST static inline void end_request(int uptodate) { struct request *req = CURRENT; @@ -397,17 +343,11 @@ static inline void end_request(int uptodate) if (end_that_request_first(req, uptodate, CURRENT->hard_cur_sectors)) return; -#ifndef DEVICE_NO_RANDOM add_blkdev_randomness(major(req->rq_dev)); -#endif - DEVICE_OFF(req->rq_dev); blkdev_dequeue_request(req); end_that_request_last(req); } - -#endif /* ! SCSI_BLK_MAJOR(MAJOR_NR) */ -#endif /* LOCAL_END_REQUEST */ - +#endif /* !LOCAL_END_REQUEST */ #endif /* (MAJOR_NR != SCSI_TAPE_MAJOR) */ #endif /* defined(MAJOR_NR) || defined(IDE_DRIVER) */ |
