Non IDE series:
- Fix some "header magic" related to IDE code in blk.h.
- Fix blk_clear to remove knowlenge about blk_dev[] about the device from the
kernel as well.
- Fix mtd read only block device.
- Remove LOCAL_END_REQUEST alltogether from the places where it was "used".
diff -ur linux-2.5.12/drivers/block/cpqarray.c linux/drivers/block/cpqarray.c
--- linux-2.5.12/drivers/block/cpqarray.c 2002-05-01 02:08:48.000000000 +0200
+++ linux/drivers/block/cpqarray.c 2002-05-02 03:32:42.000000000 +0200
@@ -52,7 +52,6 @@
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 -ur linux-2.5.12/drivers/block/floppy.c linux/drivers/block/floppy.c
--- linux-2.5.12/drivers/block/floppy.c 2002-05-01 02:08:48.000000000 +0200
+++ linux/drivers/block/floppy.c 2002-05-02 03:31:23.000000000 +0200
@@ -230,9 +230,7 @@
static int irqdma_allocated;
-#define LOCAL_END_REQUEST
#define MAJOR_NR FLOPPY_MAJOR
-
#include <linux/blk.h>
#include <linux/blkpg.h>
#include <linux/cdrom.h> /* for the compatibility eject ioctl */
@@ -2275,7 +2273,7 @@
* =============================
*/
-static inline void end_request(struct request *req, int uptodate)
+static inline void fd_end_request(struct request *req, int uptodate)
{
kdev_t dev = req->rq_dev;
@@ -2320,7 +2318,7 @@
current_count_sectors -= req->current_nr_sectors;
req->nr_sectors -= req->current_nr_sectors;
req->sector += req->current_nr_sectors;
- end_request(req, 1);
+ fd_end_request(req, 1);
}
spin_unlock_irqrestore(q->queue_lock, flags);
@@ -2348,7 +2346,7 @@
DRWE->last_error_generation = DRS->generation;
}
spin_lock_irqsave(q->queue_lock, flags);
- end_request(req, 0);
+ fd_end_request(req, 0);
spin_unlock_irqrestore(q->queue_lock, flags);
}
}
diff -ur linux-2.5.12/drivers/ide/ide.c linux/drivers/ide/ide.c
--- linux-2.5.12/drivers/ide/ide.c 2002-05-01 02:08:56.000000000 +0200
+++ linux/drivers/ide/ide.c 2002-05-02 03:20:40.000000000 +0200
@@ -135,13 +135,14 @@
#endif
#include <linux/pci.h>
#include <linux/delay.h>
-#include <linux/ide.h>
+#include <linux/blk.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/completion.h>
#include <linux/reboot.h>
#include <linux/cdrom.h>
#include <linux/device.h>
#include <linux/kmod.h>
+#include <linux/ide.h>
#include <asm/byteorder.h>
#include <asm/irq.h>
@@ -1781,7 +1780,7 @@
for (h = 0; h < MAX_HWIFS; ++h) {
struct ata_channel *ch = &ide_hwifs[h];
if (ch->present && major == ch->major) {
- int unit = DEVICE_NR(i_rdev);
+ int unit = minor(i_rdev) >> PARTN_BITS;
if (unit < MAX_DRIVES) {
struct ata_device *drive = &ch->drives[unit];
if (drive->present)
@@ -2201,8 +2187,6 @@
*/
unregister_blkdev(ch->major, ch->name);
kfree(blksize_size[ch->major]);
- blk_dev[ch->major].data = NULL;
- blk_dev[ch->major].queue = NULL;
blk_clear(ch->major);
gd = ch->gd;
if (gd) {
diff -ur linux-2.5.12/drivers/ide/ide-cd.c linux/drivers/ide/ide-cd.c
--- linux-2.5.12/drivers/ide/ide-cd.c 2002-05-01 02:08:56.000000000 +0200
+++ linux/drivers/ide/ide-cd.c 2002-05-02 03:22:13.000000000 +0200
@@ -304,9 +304,10 @@
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/errno.h>
+#include <linux/blk.h>
#include <linux/cdrom.h>
-#include <linux/ide.h>
#include <linux/completion.h>
+#include <linux/ide.h>
#include <asm/irq.h>
#include <asm/io.h>
diff -ur linux-2.5.12/drivers/ide/ide-probe.c linux/drivers/ide/ide-probe.c
--- linux-2.5.12/drivers/ide/ide-probe.c 2002-05-01 02:08:44.000000000 +0200
+++ linux/drivers/ide/ide-probe.c 2002-05-02 03:15:06.000000000 +0200
@@ -840,7 +840,7 @@
struct ata_channel *ch = (struct ata_channel *)blk_dev[major(dev)].data;
/* FIXME: ALLERT: This discriminates between master and slave! */
- return &ch->drives[DEVICE_NR(dev) & 1].queue;
+ return &ch->drives[(minor(dev) >> PARTN_BITS) & 1].queue;
}
static void channel_init(struct ata_channel *ch)
diff -ur linux-2.5.12/drivers/md/lvm.c linux/drivers/md/lvm.c
--- linux-2.5.12/drivers/md/lvm.c 2002-05-01 02:08:46.000000000 +0200
+++ linux/drivers/md/lvm.c 2002-05-02 03:55:34.000000000 +0200
@@ -192,7 +192,6 @@
#define MAJOR_NR LVM_BLK_MAJOR
#define DEVICE_OFF(device)
-#define LOCAL_END_REQUEST
/* lvm_do_lv_create calls fsync_dev_lockfs()/unlockfs() */
/* #define LVM_VFS_ENHANCEMENT */
diff -ur linux-2.5.12/drivers/md/md.c linux/drivers/md/md.c
--- linux-2.5.12/drivers/md/md.c 2002-05-01 02:08:51.000000000 +0200
+++ linux/drivers/md/md.c 2002-05-02 02:55:39.000000000 +0200
@@ -4004,9 +4004,8 @@
#endif
del_gendisk(&md_gendisk);
- blk_dev[MAJOR_NR].queue = NULL;
blk_clear(MAJOR_NR);
-
+
free_device_names();
}
#endif
diff -ur linux-2.5.12/drivers/mtd/mtdblock.c linux/drivers/mtd/mtdblock.c
--- linux-2.5.12/drivers/mtd/mtdblock.c 2002-05-01 02:08:55.000000000 +0200
+++ linux/drivers/mtd/mtdblock.c 2002-05-02 03:57:14.000000000 +0200
@@ -23,11 +23,7 @@
#ifndef QUEUE_EMPTY
#define QUEUE_EMPTY (!CURRENT)
#endif
-#if LINUX_VERSION_CODE < 0x20300
-#define QUEUE_PLUGGED (blk_dev[MAJOR_NR].plug_tq.sync)
-#else
#define QUEUE_PLUGGED (blk_queue_plugged(QUEUE))
-#endif
#ifdef CONFIG_DEVFS_FS
#include <linux/devfs_fs_kernel.h>
diff -ur linux-2.5.12/drivers/mtd/mtdblock_ro.c linux/drivers/mtd/mtdblock_ro.c
--- linux-2.5.12/drivers/mtd/mtdblock_ro.c 2002-05-01 02:08:57.000000000 +0200
+++ linux/drivers/mtd/mtdblock_ro.c 2002-05-02 04:09:00.000000000 +0200
@@ -7,7 +7,7 @@
#ifdef MTDBLOCK_DEBUG
#define DEBUGLVL debug
-#endif
+#endif
#include <linux/module.h>
@@ -16,7 +16,6 @@
#include <linux/mtd/mtd.h>
#include <linux/mtd/compatmac.h>
-#define LOCAL_END_REQUEST
#define MAJOR_NR MTD_BLOCK_MAJOR
#define DEVICE_NAME "mtdblock"
#define DEVICE_NR(device) (device)
@@ -34,6 +33,7 @@
MODULE_PARM(debug, "i");
#endif
+static spinlock_t mtdro_lock;
static int mtd_sizes[MAX_MTD_DEVICES];
@@ -106,7 +106,7 @@
static void mtdblock_request(RQFUNC_ARG)
{
- struct request *current_request;
+ struct request *req;
unsigned int res = 0;
struct mtd_info *mtd;
@@ -115,50 +115,48 @@
/* Grab the Request and unlink it from the request list, INIT_REQUEST
will execute a return if we are done. */
INIT_REQUEST;
- current_request = CURRENT;
+ req = CURRENT;
- if (minor(current_request->rq_dev) >= MAX_MTD_DEVICES)
+ if (minor(req->rq_dev) >= MAX_MTD_DEVICES)
{
printk("mtd: Unsupported device!\n");
- mtdblock_end_request(current_request, 0);
+ mtdblock_end_request(req, 0);
continue;
}
// Grab our MTD structure
- mtd = __get_mtd_device(NULL, minor(current_request->rq_dev));
+ mtd = __get_mtd_device(NULL, minor(req->rq_dev));
if (!mtd) {
printk("MTD device %d doesn't appear to exist any more\n", CURRENT_DEV);
- mtdblock_end_request(current_request, 0);
+ mtdblock_end_request(req, 0);
}
- if (current_request->sector << 9 > mtd->size ||
- (current_request->sector + current_request->nr_sectors) << 9 > mtd->size)
+ if (req->sector << 9 > mtd->size ||
+ (req->sector + req->nr_sectors) << 9 > mtd->size)
{
printk("mtd: Attempt to read past end of device!\n");
- printk("size: %x, sector: %lx, nr_sectors %lx\n", mtd->size, current_request->sector, current_request->nr_sectors);
- mtdblock_end_request(current_request, 0);
+ printk("size: %x, sector: %lx, nr_sectors %lx\n", mtd->size, req->sector, req->nr_sectors);
+ mtdblock_end_request(req, 0);
continue;
}
/* Remove the request we are handling from the request list so nobody messes
with it */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
/* Now drop the lock that the ll_rw_blk functions grabbed for us
and process the request. This is necessary due to the extreme time
we spend processing it. */
- spin_unlock_irq(&io_request_lock);
-#endif
+ spin_unlock_irq(&mtdro_lock);
// Handle the request
- switch (current_request->cmd)
+ switch (rq_data_dir(req))
{
size_t retlen;
case READ:
- if (MTD_READ(mtd,current_request->sector<<9,
- current_request->nr_sectors << 9,
- &retlen, current_request->buffer) == 0)
+ if (MTD_READ(mtd,req->sector<<9,
+ req->nr_sectors << 9,
+ &retlen, req->buffer) == 0)
res = 1;
else
res = 0;
@@ -166,8 +164,8 @@
case WRITE:
- /* printk("mtdblock_request WRITE sector=%d(%d)\n",current_request->sector,
- current_request->nr_sectors);
+ /* printk("mtdblock_request WRITE sector=%d(%d)\n",req->sector,
+ req->nr_sectors);
*/
// Read only device
@@ -178,9 +176,9 @@
}
// Do the write
- if (MTD_WRITE(mtd,current_request->sector<<9,
- current_request->nr_sectors << 9,
- &retlen, current_request->buffer) == 0)
+ if (MTD_WRITE(mtd,req->sector<<9,
+ req->nr_sectors << 9,
+ &retlen, req->buffer) == 0)
res = 1;
else
res = 0;
@@ -193,10 +191,8 @@
}
// Grab the lock and re-thread the item onto the linked list
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
- spin_lock_irq(&io_request_lock);
-#endif
- mtdblock_end_request(current_request, res);
+ spin_lock_irq(&mtdro_lock);
+ mtdblock_end_request(req, res);
}
}
@@ -255,6 +251,7 @@
{
int i;
+ spin_lock_init(&mtdro_lock);
if (register_blkdev(MAJOR_NR,DEVICE_NAME,&mtd_fops)) {
printk(KERN_NOTICE "Can't allocate major number %d for Memory Technology Devices.\n",
MTD_BLOCK_MAJOR);
@@ -270,7 +267,7 @@
blksize_size[MAJOR_NR] = NULL;
blk_size[MAJOR_NR] = mtd_sizes;
- blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), &mtdblock_request);
+ blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), &mtdblock_request, &mtdro_lock);
return 0;
}
diff -ur linux-2.5.12/drivers/s390/block/dasd_int.h linux/drivers/s390/block/dasd_int.h
--- linux-2.5.12/drivers/s390/block/dasd_int.h 2002-05-01 02:09:00.000000000 +0200
+++ linux/drivers/s390/block/dasd_int.h 2002-05-02 02:46:23.000000000 +0200
@@ -61,47 +61,6 @@
#include <asm/todclk.h>
#include <asm/debug.h>
-/* Kernel Version Compatibility section */
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,98))
-typedef struct request *request_queue_t;
-#define block_device_operations file_operations
-#define __setup(x,y) struct dasd_device_t
-#define devfs_register_blkdev(major,name,ops) register_blkdev(major,name,ops)
-#define register_disk(dd,dev,partn,ops,size) \
-do { \
- dd->sizes[MINOR(dev)] = size >> 1; \
- resetup_one_dev(dd,MINOR(dev)>>DASD_PARTN_BITS); \
-} while(0)
-#define init_waitqueue_head(x) do { *x = NULL; } while(0)
-#define blk_cleanup_queue(x) do {} while(0)
-#define blk_init_queue(x...) do {} while(0)
-#define blk_queue_headactive(x...) do {} while(0)
-#define blk_queue_make_request(x) do {} while(0)
-#define list_empty(x) (0)
-#define INIT_BLK_DEV(d_major,d_request_fn,d_queue_fn,d_current) \
-do { \
- blk_dev[d_major].request_fn = d_request_fn; \
- blk_dev[d_major].queue = d_queue_fn; \
- blk_dev[d_major].current_request = d_current; \
-} while(0)
-#define INIT_GENDISK(D_MAJOR,D_NAME,D_PARTN_BITS,D_PER_MAJOR) \
- major:D_MAJOR, \
- major_name:D_NAME, \
- minor_shift:D_PARTN_BITS, \
- max_nr:D_PER_MAJOR, \
- nr_real:D_PER_MAJOR,
-static inline struct request *
-dasd_next_request( request_queue_t *queue )
-{
- return *queue;
-}
-static inline void
-dasd_dequeue_request( request_queue_t * q, struct request *req )
-{
- *q = req->next;
- req->next = NULL;
-}
-#else
#define INIT_BLK_DEV(d_major,d_request_fn,d_queue_fn,d_current) \
do { \
blk_dev[d_major].queue = d_queue_fn; \
@@ -111,18 +70,17 @@
major_name:D_NAME, \
minor_shift:D_PARTN_BITS, \
nr_real:D_PER_MAJOR, \
- fops:&dasd_device_operations,
-static inline struct request *
-dasd_next_request( request_queue_t *queue )
+ fops:&dasd_device_operations,
+static inline struct request *
+dasd_next_request( request_queue_t *queue )
{
return elv_next_request(queue);
}
-static inline void
+static inline void
dasd_dequeue_request( request_queue_t * q, struct request *req )
{
blkdev_dequeue_request (req);
}
-#endif
/* dasd_range_t are used for dynamic device att-/detachment */
typedef struct dasd_devreg_t {
diff -ur linux-2.5.12/drivers/s390/block/xpram.c linux/drivers/s390/block/xpram.c
--- linux-2.5.12/drivers/s390/block/xpram.c 2002-05-01 02:09:00.000000000 +0200
+++ linux/drivers/s390/block/xpram.c 2002-05-02 02:48:12.000000000 +0200
@@ -1016,13 +1016,9 @@
* arrays if it uses the default values.
*/
-#if (XPRAM_VERSION == 22)
- blk_dev[major].request_fn = xpram_request;
-#elif (XPRAM_VERSION == 24)
q = BLK_DEFAULT_QUEUE (major);
blk_init_queue (q, xpram_request);
blk_queue_hardsect_size(q, xpram_hardsect);
-#endif /* V22/V24 */
/* we want to have XPRAM_UNUSED blocks security buffer between devices */
mem_usable=xpram_mem_avail-(XPRAM_UNUSED*(xpram_devs-1));
@@ -1148,9 +1144,6 @@
blksize_size[major] = NULL;
fail_malloc_devices:
fail_malloc:
-#if (XPRAM_VERSION == 22)
- blk_dev[major].request_fn = NULL;
-#endif /* V22 */
/* ??? unregister_chrdev(major, "xpram"); */
unregister_blkdev(major, "xpram");
return result;
@@ -1180,9 +1173,6 @@
/* first of all, reset all the data structures */
-#if (XPRAM_VERSION == 22)
- blk_dev[major].request_fn = NULL;
-#endif /* V22 */
kfree(blksize_size[major]);
kfree(xpram_offsets);
blk_clear(major);
diff -ur linux-2.5.12/drivers/s390/char/tapedefs.h linux/drivers/s390/char/tapedefs.h
--- linux-2.5.12/drivers/s390/char/tapedefs.h 2002-05-01 02:08:47.000000000 +0200
+++ linux/drivers/s390/char/tapedefs.h 2002-05-02 02:42:19.000000000 +0200
@@ -33,44 +33,17 @@
#define TAPEBLOCK_RETRIES 20 // number of retries, when a block-dev request fails.
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,3,98))
#define INIT_BLK_DEV(d_major,d_request_fn,d_queue_fn,d_current) \
do { \
blk_dev[d_major].queue = d_queue_fn; \
} while(0)
-static inline struct request *
-tape_next_request( request_queue_t *queue )
+static inline struct request *
+tape_next_request( request_queue_t *queue )
{
return elv_next_request(queue);
}
-static inline void
+static inline void
tape_dequeue_request( request_queue_t * q, struct request *req )
{
blkdev_dequeue_request (req);
}
-#else
-#define s390_dev_info_t dev_info_t
-typedef struct request *request_queue_t;
-#ifndef init_waitqueue_head
-#define init_waitqueue_head(x) do { *x = NULL; } while(0)
-#endif
-#define blk_init_queue(x,y) do {} while(0)
-#define blk_queue_headactive(x,y) do {} while(0)
-#define INIT_BLK_DEV(d_major,d_request_fn,d_queue_fn,d_current) \
-do { \
- blk_dev[d_major].request_fn = d_request_fn; \
- blk_dev[d_major].queue = d_queue_fn; \
- blk_dev[d_major].current_request = d_current; \
-} while(0)
-static inline struct request *
-tape_next_request( request_queue_t *queue )
-{
- return *queue;
-}
-static inline void
-tape_dequeue_request( request_queue_t * q, struct request *req )
-{
- *q = req->next;
- req->next = NULL;
-}
-#endif
diff -ur linux-2.5.12/drivers/scsi/sr.c linux/drivers/scsi/sr.c
--- linux-2.5.12/drivers/scsi/sr.c 2002-05-01 02:08:50.000000000 +0200
+++ linux/drivers/scsi/sr.c 2002-05-02 03:26:11.000000000 +0200
@@ -49,7 +49,6 @@
#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 -ur linux-2.5.12/include/linux/blkdev.h linux/include/linux/blkdev.h
--- linux-2.5.12/include/linux/blkdev.h 2002-05-01 02:08:49.000000000 +0200
+++ linux/include/linux/blkdev.h 2002-05-02 02:55:24.000000000 +0200
@@ -336,6 +336,8 @@
blk_size_in_bytes[major] = NULL;
#endif
blksize_size[major] = NULL;
+ blk_dev[major].queue = NULL;
+
}
extern inline int queue_hardsect_size(request_queue_t *q)
diff -ur linux-2.5.12/include/linux/blk.h linux/include/linux/blk.h
--- linux-2.5.12/include/linux/blk.h 2002-05-01 02:08:51.000000000 +0200
+++ linux/include/linux/blk.h 2002-05-02 04:17:46.000000000 +0200
@@ -97,19 +97,14 @@
} while (0)
#define elv_add_request(q, rq, back) _elv_add_request((q), (rq), (back), 1)
-
-#if defined(MAJOR_NR) || defined(IDE_DRIVER)
+
+#if defined(MAJOR_NR)
/*
* Add entries as needed.
*/
-#ifdef IDE_DRIVER
-
-#define DEVICE_NR(device) (minor(device) >> PARTN_BITS)
-#define DEVICE_NAME "ide"
-
-#elif (MAJOR_NR == RAMDISK_MAJOR)
+#if (MAJOR_NR == RAMDISK_MAJOR)
/* ram disk */
#define DEVICE_NAME "ramdisk"
@@ -291,7 +286,6 @@
#endif /* MAJOR_NR == whatever */
#if (MAJOR_NR != SCSI_TAPE_MAJOR) && (MAJOR_NR != OSST_MAJOR)
-#if !defined(IDE_DRIVER)
#ifndef CURRENT
#define CURRENT elv_next_request(&blk_dev[MAJOR_NR].request_queue)
@@ -330,12 +324,9 @@
if (!CURRENT->bio) \
panic(DEVICE_NAME ": no bio"); \
-#endif /* !defined(IDE_DRIVER) */
-
/*
- * If we have our own end_request, we do not want to include this mess
+ * Default end request handler for "legacy" drivers.
*/
-#ifndef LOCAL_END_REQUEST
static inline void end_request(int uptodate)
{
struct request *req = CURRENT;
@@ -347,8 +338,7 @@
blkdev_dequeue_request(req);
end_that_request_last(req);
}
-#endif /* !LOCAL_END_REQUEST */
#endif /* (MAJOR_NR != SCSI_TAPE_MAJOR) */
-#endif /* defined(MAJOR_NR) || defined(IDE_DRIVER) */
+#endif /* defined(MAJOR_NR) */
#endif /* _BLK_H */
diff -ur linux-2.5.12/include/linux/ide.h linux/include/linux/ide.h
--- linux-2.5.12/include/linux/ide.h 2002-05-01 02:08:49.000000000 +0200
+++ linux/include/linux/ide.h 2002-05-02 04:18:23.000000000 +0200
@@ -642,13 +640,6 @@
extern struct ata_channel ide_hwifs[]; /* master data repository */
extern int noautodma;
-/*
- * We need blk.h, but we replace its end_request by our own version.
- */
-#define IDE_DRIVER /* Toggle some magic bits in blk.h */
-#define LOCAL_END_REQUEST /* Don't generate end_request in blk.h */
-#include <linux/blk.h>
-
extern int __ide_end_request(struct ata_device *, struct request *, int, int);
extern int ide_end_request(struct ata_device *drive, struct request *, int);
diff -ur linux-2.5.12/include/linux/nbd.h linux/include/linux/nbd.h
--- linux-2.5.12/include/linux/nbd.h 2002-05-01 02:09:01.000000000 +0200
+++ linux/include/linux/nbd.h 2002-05-02 04:22:03.000000000 +0200
@@ -25,8 +25,6 @@
#include <linux/locks.h>
#include <asm/semaphore.h>
-#define LOCAL_END_REQUEST
-
#include <linux/blk.h>
#ifdef PARANOIA
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Tue May 07 2002 - 22:00:12 EST