diff options
Diffstat (limited to 'drivers/block')
| -rw-r--r-- | drivers/block/acsi_slm.c | 10 | ||||
| -rw-r--r-- | drivers/block/amiflop.c | 21 | ||||
| -rw-r--r-- | drivers/block/ataflop.c | 23 | ||||
| -rw-r--r-- | drivers/block/cciss.c | 22 | ||||
| -rw-r--r-- | drivers/block/cpqarray.c | 2 | ||||
| -rw-r--r-- | drivers/block/floppy.c | 24 | ||||
| -rw-r--r-- | drivers/block/floppy98.c | 24 | ||||
| -rw-r--r-- | drivers/block/genhd.c | 24 | ||||
| -rw-r--r-- | drivers/block/ioctl.c | 21 | ||||
| -rw-r--r-- | drivers/block/ll_rw_blk.c | 31 | ||||
| -rw-r--r-- | drivers/block/paride/pg.c | 4 | ||||
| -rw-r--r-- | drivers/block/paride/pt.c | 14 | ||||
| -rw-r--r-- | drivers/block/rd.c | 15 | ||||
| -rw-r--r-- | drivers/block/z2ram.c | 4 |
14 files changed, 90 insertions, 149 deletions
diff --git a/drivers/block/acsi_slm.c b/drivers/block/acsi_slm.c index f352b5d111a3..e3be8c31a74c 100644 --- a/drivers/block/acsi_slm.c +++ b/drivers/block/acsi_slm.c @@ -374,7 +374,7 @@ static ssize_t slm_read( struct file *file, char *buf, size_t count, if (!(page = __get_free_page( GFP_KERNEL ))) return( -ENOMEM ); - length = slm_getstats( (char *)page, MINOR(node->i_rdev) ); + length = slm_getstats( (char *)page, iminor(node) ); if (length < 0) { count = length; goto out; @@ -622,7 +622,7 @@ static ssize_t slm_write( struct file *file, const char *buf, size_t count, { struct inode *node = file->f_dentry->d_inode; - int device = MINOR( node->i_rdev ); + int device = iminor(node); int n, filled, w, h; while( SLMState == PRINTING || @@ -694,7 +694,7 @@ static ssize_t slm_write( struct file *file, const char *buf, size_t count, static int slm_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg ) -{ int device = MINOR( inode->i_rdev ), err; +{ int device = iminor(inode), err; /* I can think of setting: * - manual feed @@ -768,7 +768,7 @@ static int slm_open( struct inode *inode, struct file *file ) { int device; struct slm *sip; - device = MINOR(inode->i_rdev); + device = iminor(inode); if (device >= N_SLM_Printers) return( -ENXIO ); sip = &slm_info[device]; @@ -797,7 +797,7 @@ static int slm_release( struct inode *inode, struct file *file ) { int device; struct slm *sip; - device = MINOR(inode->i_rdev); + device = iminor(inode); sip = &slm_info[device]; if (file->f_mode & 2) diff --git a/drivers/block/amiflop.c b/drivers/block/amiflop.c index d9495c1bc4f3..b34ee99f5870 100644 --- a/drivers/block/amiflop.c +++ b/drivers/block/amiflop.c @@ -55,24 +55,15 @@ #include <linux/module.h> -#include <linux/sched.h> -#include <linux/fs.h> -#include <linux/fcntl.h> -#include <linux/kernel.h> -#include <linux/timer.h> #include <linux/fd.h> #include <linux/hdreg.h> -#include <linux/errno.h> -#include <linux/types.h> #include <linux/delay.h> -#include <linux/string.h> -#include <linux/slab.h> #include <linux/init.h> #include <linux/amifdreg.h> #include <linux/amifd.h> -#include <linux/ioport.h> #include <linux/buffer_head.h> -#include <linux/interrupt.h> +#include <linux/blkdev.h> +#include <linux/elevator.h> #include <asm/setup.h> #include <asm/uaccess.h> @@ -1446,7 +1437,7 @@ static void do_fd_request(request_queue_t * q) static int fd_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long param) { - int drive = minor(inode->i_rdev) & 3; + int drive = iminor(inode) & 3; static struct floppy_struct getprm; switch(cmd){ @@ -1570,8 +1561,8 @@ static void fd_probe(int dev) */ static int floppy_open(struct inode *inode, struct file *filp) { - int drive = minor(inode->i_rdev) & 3; - int system = (minor(inode->i_rdev) & 4) >> 2; + int drive = iminor(inode) & 3; + int system = (iminor(inode) & 4) >> 2; int old_dev; unsigned long flags; @@ -1618,7 +1609,7 @@ static int floppy_open(struct inode *inode, struct file *filp) static int floppy_release(struct inode * inode, struct file * filp) { - int drive = minor(inode->i_rdev) & 3; + int drive = iminor(inode) & 3; if (unit[drive].dirty == 1) { del_timer (flush_track_timer + drive); diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c index 803f5638f794..b98fa53f3c3d 100644 --- a/drivers/block/ataflop.c +++ b/drivers/block/ataflop.c @@ -63,35 +63,16 @@ #include <linux/module.h> -#include <linux/sched.h> -#include <linux/string.h> -#include <linux/fs.h> -#include <linux/fcntl.h> -#include <linux/kernel.h> -#include <linux/timer.h> #include <linux/fd.h> -#include <linux/errno.h> -#include <linux/types.h> #include <linux/delay.h> -#include <linux/mm.h> -#include <linux/slab.h> #include <linux/init.h> -#include <linux/buffer_head.h> /* for invalidate_buffers() */ - -#include <asm/setup.h> -#include <asm/system.h> -#include <asm/bitops.h> -#include <asm/irq.h> -#include <asm/pgtable.h> -#include <asm/uaccess.h> +#include <linux/blkdev.h> #include <asm/atafd.h> #include <asm/atafdreg.h> -#include <asm/atarihw.h> #include <asm/atariints.h> #include <asm/atari_stdma.h> #include <asm/atari_stram.h> -#include <linux/blkpg.h> #define FD_MAX_UNITS 2 @@ -1838,7 +1819,7 @@ static void __init config_types( void ) static int floppy_open( struct inode *inode, struct file *filp ) { struct atari_floppy_struct *p = inode->i_bdev->bd_disk->private_data; - int type = minor(inode->i_rdev) >> 2; + int type = iminor(inode) >> 2; DPRINT(("fd_open: type=%d\n",type)); if (p->ref && p->type != type) diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index e16a993f539b..34b490615ce3 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c @@ -356,11 +356,11 @@ static void cmd_free(ctlr_info_t *h, CommandList_struct *c, int got_from_pool) */ static int cciss_open(struct inode *inode, struct file *filep) { - int ctlr = major(inode->i_rdev) - COMPAQ_CISS_MAJOR; - int dsk = minor(inode->i_rdev) >> NWD_SHIFT; + int ctlr = imajor(inode) - COMPAQ_CISS_MAJOR; + int dsk = iminor(inode) >> NWD_SHIFT; #ifdef CCISS_DEBUG - printk(KERN_DEBUG "cciss_open %x (%x:%x)\n", inode->i_rdev, ctlr, dsk); + printk(KERN_DEBUG "cciss_open %s (%x:%x)\n", inode->i_bdev->bd_disk->disk_name, ctlr, dsk); #endif /* CCISS_DEBUG */ if (ctlr >= MAX_CTLR || hba[ctlr] == NULL) @@ -372,7 +372,7 @@ static int cciss_open(struct inode *inode, struct file *filep) * for "raw controller". */ if (hba[ctlr]->drv[dsk].nr_blocks == 0) { - if (minor(inode->i_rdev) != 0) + if (iminor(inode) != 0) return -ENXIO; if (!capable(CAP_SYS_ADMIN)) return -EPERM; @@ -386,11 +386,11 @@ static int cciss_open(struct inode *inode, struct file *filep) */ static int cciss_release(struct inode *inode, struct file *filep) { - int ctlr = major(inode->i_rdev) - COMPAQ_CISS_MAJOR; - int dsk = minor(inode->i_rdev) >> NWD_SHIFT; + int ctlr = imajor(inode) - COMPAQ_CISS_MAJOR; + int dsk = iminor(inode) >> NWD_SHIFT; #ifdef CCISS_DEBUG - printk(KERN_DEBUG "cciss_release %x (%x:%x)\n", inode->i_rdev, ctlr, dsk); + printk(KERN_DEBUG "cciss_release %s (%x:%x)\n", inode->i_bdev->bd_disk->disk_name, ctlr, dsk); #endif /* CCISS_DEBUG */ /* fsync_dev(inode->i_rdev); */ @@ -406,8 +406,8 @@ static int cciss_release(struct inode *inode, struct file *filep) static int cciss_ioctl(struct inode *inode, struct file *filep, unsigned int cmd, unsigned long arg) { - int ctlr = major(inode->i_rdev) - COMPAQ_CISS_MAJOR; - int dsk = minor(inode->i_rdev) >> NWD_SHIFT; + int ctlr = imajor(inode) - COMPAQ_CISS_MAJOR; + int dsk = iminor(inode) >> NWD_SHIFT; #ifdef CCISS_DEBUG printk(KERN_DEBUG "cciss_ioctl: Called with cmd=%x %lx\n", cmd, arg); @@ -2525,6 +2525,9 @@ err_all: if (!q) goto err_all; + hba[i]->queue = q; + q->queuedata = hba[i]; + /* Initialize the pdev driver private data. have it point to hba[i]. */ pci_set_drvdata(pdev, hba[i]); @@ -2545,7 +2548,6 @@ err_all: cciss_procinit(i); - q->queuedata = hba[i]; blk_queue_bounce_limit(q, hba[i]->pdev->dma_mask); /* This is a hardware imposed limit. */ diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c index 16f0b8b9d433..0fbd001c3452 100644 --- a/drivers/block/cpqarray.c +++ b/drivers/block/cpqarray.c @@ -1078,7 +1078,7 @@ out_passthru: put_user(host->ctlr_sig, (int*)arg); return 0; case IDAREVALIDATEVOLS: - if (minor(inode->i_rdev) != 0) + if (iminor(inode) != 0) return -ENXIO; return revalidate_allvol(host); case IDADRIVERVERSION: diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 433e221a42d7..aa3a82af569f 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -3781,9 +3781,9 @@ static int floppy_open(struct inode * inode, struct file * filp) } } - UDRS->fd_device = minor(inode->i_rdev); - set_capacity(disks[drive], floppy_sizes[minor(inode->i_rdev)]); - if (old_dev != -1 && old_dev != minor(inode->i_rdev)) { + UDRS->fd_device = iminor(inode); + set_capacity(disks[drive], floppy_sizes[iminor(inode)]); + if (old_dev != -1 && old_dev != iminor(inode)) { if (buffer_drive == drive) buffer_track = -1; } @@ -3910,22 +3910,6 @@ static int __floppy_read_block_0(struct block_device *bdev) return 0; } -static int floppy_read_block_0(struct gendisk *disk) -{ - struct block_device *bdev; - int ret; - - bdev = bdget_disk(disk, 0); - if (!bdev) { - printk("No block device for %s\n", disk->disk_name); - BUG(); - } - bdev->bd_disk = disk; /* ewww */ - ret = __floppy_read_block_0(bdev); - atomic_dec(&bdev->bd_count); - return ret; -} - /* revalidate the floppy disk, i.e. trigger format autodetection by reading * the bootblock (block 0). "Autodetection" is also needed to check whether * there is a disk in the drive at all... Thus we also do it for fixed @@ -3961,7 +3945,7 @@ static int floppy_revalidate(struct gendisk *disk) UDRS->generation++; if (NO_GEOM){ /* auto-sensing */ - res = floppy_read_block_0(disk); + res = __floppy_read_block_0(opened_bdev[drive]); } else { if (cf) poll_drive(0, FD_RAW_NEED_DISK); diff --git a/drivers/block/floppy98.c b/drivers/block/floppy98.c index 52460926cdc1..d861fdbc3466 100644 --- a/drivers/block/floppy98.c +++ b/drivers/block/floppy98.c @@ -3844,9 +3844,9 @@ static int floppy_open(struct inode * inode, struct file * filp) } } - UDRS->fd_device = minor(inode->i_rdev); - set_capacity(disks[drive], floppy_sizes[minor(inode->i_rdev)]); - if (old_dev != -1 && old_dev != minor(inode->i_rdev)) { + UDRS->fd_device = iminor(inode); + set_capacity(disks[drive], floppy_sizes[iminor(inode)]); + if (old_dev != -1 && old_dev != iminor(inode)) { if (buffer_drive == drive) buffer_track = -1; } @@ -3989,22 +3989,6 @@ static int __floppy_read_block_0(struct block_device *bdev) return 0; } -static int floppy_read_block_0(struct gendisk *disk) -{ - struct block_device *bdev; - int ret; - - bdev = bdget_disk(disk, 0); - if (!bdev) { - printk("No block device for %s\n", disk->disk_name); - BUG(); - } - bdev->bd_disk = disk; /* ewww */ - ret = __floppy_read_block_0(bdev); - atomic_dec(&bdev->bd_count); - return ret; -} - /* revalidate the floppy disk, i.e. trigger format autodetection by reading * the bootblock (block 0). "Autodetection" is also needed to check whether * there is a disk in the drive at all... Thus we also do it for fixed @@ -4040,7 +4024,7 @@ static int floppy_revalidate(struct gendisk *disk) UDRS->generation++; if (NO_GEOM){ /* auto-sensing */ - res = floppy_read_block_0(disk); + res = __floppy_read_block_0(opened_bdev[drive]); } else { if (cf) poll_drive(0, FD_RAW_NEED_DISK); diff --git a/drivers/block/genhd.c b/drivers/block/genhd.c index 24e066a8fb35..16a58ad04008 100644 --- a/drivers/block/genhd.c +++ b/drivers/block/genhd.c @@ -576,13 +576,10 @@ EXPORT_SYMBOL(put_disk); void set_device_ro(struct block_device *bdev, int flag) { - struct gendisk *disk = bdev->bd_disk; - if (bdev->bd_contains != bdev) { - int part = bdev->bd_dev - MKDEV(disk->major, disk->first_minor); - struct hd_struct *p = disk->part[part-1]; - if (p) p->policy = flag; - } else - disk->policy = flag; + if (bdev->bd_contains != bdev) + bdev->bd_part->policy = flag; + else + bdev->bd_disk->policy = flag; } void set_disk_ro(struct gendisk *disk, int flag) @@ -595,17 +592,12 @@ void set_disk_ro(struct gendisk *disk, int flag) int bdev_read_only(struct block_device *bdev) { - struct gendisk *disk; if (!bdev) return 0; - disk = bdev->bd_disk; - if (bdev->bd_contains != bdev) { - int part = bdev->bd_dev - MKDEV(disk->major, disk->first_minor); - struct hd_struct *p = disk->part[part-1]; - if (p) return p->policy; - return 0; - } else - return disk->policy; + else if (bdev->bd_contains != bdev) + return bdev->bd_part->policy; + else + return bdev->bd_disk->policy; } int invalidate_partition(struct gendisk *disk, int index) diff --git a/drivers/block/ioctl.c b/drivers/block/ioctl.c index 9f3f411f2389..701461265c34 100644 --- a/drivers/block/ioctl.c +++ b/drivers/block/ioctl.c @@ -8,7 +8,6 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg *arg) { struct block_device *bdevp; - int holder; struct gendisk *disk; struct blkpg_ioctl_arg a; struct blkpg_partition p; @@ -41,8 +40,11 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg *arg) return -EINVAL; } /* partition number in use? */ - if (disk->part[part - 1]) + down(&bdev->bd_sem); + if (disk->part[part - 1]) { + up(&bdev->bd_sem); return -EBUSY; + } /* overlap? */ for (i = 0; i < disk->minors - 1; i++) { struct hd_struct *s = disk->part[i]; @@ -50,22 +52,26 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg *arg) if (!s) continue; if (!(start+length <= s->start_sect || - start >= s->start_sect + s->nr_sects)) + start >= s->start_sect + s->nr_sects)) { + up(&bdev->bd_sem); return -EBUSY; + } } /* all seems OK */ add_partition(disk, part, start, length); + up(&bdev->bd_sem); return 0; case BLKPG_DEL_PARTITION: if (!disk->part[part-1]) return -ENXIO; if (disk->part[part - 1]->nr_sects == 0) return -ENXIO; - /* partition in use? Incomplete check for now. */ bdevp = bdget_disk(disk, part); if (!bdevp) return -ENOMEM; - if (bd_claim(bdevp, &holder) < 0) { + down(&bdevp->bd_sem); + if (bdevp->bd_openers) { + up(&bdevp->bd_sem); bdput(bdevp); return -EBUSY; } @@ -73,9 +79,12 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg *arg) fsync_bdev(bdevp); invalidate_bdev(bdevp, 0); + down(&bdev->bd_sem); delete_partition(disk, part); - bd_release(bdevp); + up(&bdev->bd_sem); + up(&bdevp->bd_sem); bdput(bdevp); + return 0; default: return -EINVAL; diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c index f09d20d1e41a..98a3182919c5 100644 --- a/drivers/block/ll_rw_blk.c +++ b/drivers/block/ll_rw_blk.c @@ -2043,24 +2043,23 @@ end_io: static inline void blk_partition_remap(struct bio *bio) { struct block_device *bdev = bio->bi_bdev; - struct gendisk *disk = bdev->bd_disk; - struct hd_struct *p; - if (bdev == bdev->bd_contains) - return; - p = disk->part[bdev->bd_dev-MKDEV(disk->major,disk->first_minor)-1]; - switch (bio->bi_rw) { - case READ: - p->read_sectors += bio_sectors(bio); - p->reads++; - break; - case WRITE: - p->write_sectors += bio_sectors(bio); - p->writes++; - break; + if (bdev != bdev->bd_contains) { + struct hd_struct *p = bdev->bd_part; + + switch (bio->bi_rw) { + case READ: + p->read_sectors += bio_sectors(bio); + p->reads++; + break; + case WRITE: + p->write_sectors += bio_sectors(bio); + p->writes++; + break; + } + bio->bi_sector += p->start_sect; + bio->bi_bdev = bdev->bd_contains; } - bio->bi_sector += bdev->bd_offset; - bio->bi_bdev = bdev->bd_contains; } /** diff --git a/drivers/block/paride/pg.c b/drivers/block/paride/pg.c index b6e854b8613a..506f982e5518 100644 --- a/drivers/block/paride/pg.c +++ b/drivers/block/paride/pg.c @@ -527,11 +527,9 @@ static int pg_detect(void) return -1; } -#define DEVICE_NR(dev) (minor(dev) & 0x7F) - static int pg_open(struct inode *inode, struct file *file) { - int unit = DEVICE_NR(inode->i_rdev); + int unit = iminor(inode) & 0x7f; struct pg *dev = &devices[unit]; if ((unit >= PG_UNITS) || (!dev->present)) diff --git a/drivers/block/paride/pt.c b/drivers/block/paride/pt.c index c2145ac9da66..feb1d9950dc7 100644 --- a/drivers/block/paride/pt.c +++ b/drivers/block/paride/pt.c @@ -670,11 +670,11 @@ static int pt_detect(void) return -1; } -#define DEVICE_NR(dev) (minor(dev) & 0x7F) +#define DEVICE_NR(inode) (iminor(inode) & 0x7F) static int pt_open(struct inode *inode, struct file *file) { - int unit = DEVICE_NR(inode->i_rdev); + int unit = DEVICE_NR(inode); if ((unit >= PT_UNITS) || (!PT.present)) return -ENODEV; @@ -696,7 +696,7 @@ static int pt_open(struct inode *inode, struct file *file) return -EROFS; } - if (!(minor(inode->i_rdev) & 128)) + if (!(iminor(inode) & 128)) PT.flags |= PT_REWIND; PT.bufptr = kmalloc(PT_BUFSIZE, GFP_KERNEL); @@ -715,7 +715,7 @@ static int pt_ioctl(struct inode *inode, struct file *file, int unit; struct mtop mtop; - unit = DEVICE_NR(inode->i_rdev); + unit = DEVICE_NR(inode); if (unit >= PT_UNITS) return -EINVAL; if (!PT.present) @@ -753,7 +753,7 @@ static int pt_ioctl(struct inode *inode, struct file *file, static int pt_release(struct inode *inode, struct file *file) { - int unit = DEVICE_NR(inode->i_rdev); + int unit = DEVICE_NR(inode); if ((unit >= PT_UNITS) || (atomic_read(&PT.available) > 1)) return -EINVAL; @@ -776,7 +776,7 @@ pt_release(struct inode *inode, struct file *file) static ssize_t pt_read(struct file *filp, char *buf, size_t count, loff_t * ppos) { struct inode *ino = filp->f_dentry->d_inode; - int unit = DEVICE_NR(ino->i_rdev); + int unit = DEVICE_NR(ino); char rd_cmd[12] = { ATAPI_READ_6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int k, n, r, p, s, t, b; @@ -873,7 +873,7 @@ static ssize_t pt_read(struct file *filp, char *buf, size_t count, loff_t * ppos static ssize_t pt_write(struct file *filp, const char *buf, size_t count, loff_t * ppos) { struct inode *ino = filp->f_dentry->d_inode; - int unit = DEVICE_NR(ino->i_rdev); + int unit = DEVICE_NR(ino); char wr_cmd[12] = { ATAPI_WRITE_6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int k, n, r, p, s, t, b; diff --git a/drivers/block/rd.c b/drivers/block/rd.c index 5eb9dbe93a66..775b0d42908e 100644 --- a/drivers/block/rd.c +++ b/drivers/block/rd.c @@ -245,6 +245,7 @@ fail: static int rd_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) { int error; + struct block_device *bdev = inode->i_bdev; if (cmd != BLKFLSBUF) return -EINVAL; @@ -253,12 +254,12 @@ static int rd_ioctl(struct inode *inode, struct file *file, unsigned int cmd, un it's not like with the other blockdevices where this ioctl only flushes away the buffer cache. */ error = -EBUSY; - down(&inode->i_bdev->bd_sem); - if (inode->i_bdev->bd_openers <= 2) { - truncate_inode_pages(inode->i_mapping, 0); + down(&bdev->bd_sem); + if (bdev->bd_openers <= 2) { + truncate_inode_pages(bdev->bd_inode->i_mapping, 0); error = 0; } - up(&inode->i_bdev->bd_sem); + up(&bdev->bd_sem); return error; } @@ -269,18 +270,18 @@ static struct backing_dev_info rd_backing_dev_info = { static int rd_open(struct inode * inode, struct file * filp) { - unsigned unit = minor(inode->i_rdev); + unsigned unit = iminor(inode); /* * Immunize device against invalidate_buffers() and prune_icache(). */ if (rd_bdev[unit] == NULL) { struct block_device *bdev = inode->i_bdev; - atomic_inc(&bdev->bd_count); + inode = igrab(bdev->bd_inode); rd_bdev[unit] = bdev; bdev->bd_openers++; bdev->bd_block_size = rd_blocksize; - bdev->bd_inode->i_size = get_capacity(rd_disks[unit])<<9; + inode->i_size = get_capacity(rd_disks[unit])<<9; inode->i_mapping->a_ops = &ramdisk_aops; inode->i_mapping->backing_dev_info = &rd_backing_dev_info; } diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c index f3a7a2b8fc7d..c952ff90a23d 100644 --- a/drivers/block/z2ram.c +++ b/drivers/block/z2ram.c @@ -28,10 +28,10 @@ #define DEVICE_NAME "Z2RAM" #include <linux/major.h> -#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/init.h> #include <linux/module.h> +#include <linux/blkdev.h> #include <asm/setup.h> #include <asm/bitops.h> @@ -150,7 +150,7 @@ z2_open( struct inode *inode, struct file *filp ) sizeof( z2ram_map[0] ); int rc = -ENOMEM; - device = minor( inode->i_rdev ); + device = iminor(inode); if ( current_device != -1 && current_device != device ) { |
