arch/um/drivers/ubd_kern.c | 6 +++--- drivers/acorn/block/fd1772.c | 19 +++++++++++-------- drivers/block/DAC960.c | 6 +++--- drivers/block/acsi.c | 15 +++++++-------- drivers/block/amiflop.c | 9 +++++---- drivers/block/ataflop.c | 11 +++++------ drivers/block/cciss.c | 12 ++++++------ drivers/block/cpqarray.c | 10 +++++----- drivers/block/floppy.c | 19 +++++++++---------- drivers/block/floppy98.c | 20 +++++++++----------- drivers/block/loop.c | 4 ++-- drivers/block/paride/pcd.c | 6 +++--- drivers/block/paride/pd.c | 8 +++----- drivers/block/paride/pf.c | 6 +++--- drivers/block/rd.c | 7 +++---- drivers/block/swim3.c | 8 ++++---- drivers/block/swim_iop.c | 8 ++++---- drivers/block/umem.c | 1 - drivers/block/z2ram.c | 5 ++--- drivers/cdrom/aztcd.c | 4 ++-- drivers/cdrom/cdu31a.c | 4 ++-- drivers/cdrom/cm206.c | 4 ++-- drivers/cdrom/gscd.c | 4 ++-- drivers/cdrom/mcd.c | 4 ++-- drivers/cdrom/mcdx.c | 6 +++--- drivers/cdrom/optcd.c | 2 +- drivers/cdrom/sbpcd.c | 6 +++--- drivers/cdrom/sjcd.c | 2 +- drivers/cdrom/sonycd535.c | 8 +++----- drivers/ide/ide-cd.c | 6 +++--- drivers/ide/ide-disk.c | 6 +++--- drivers/ide/ide-floppy.c | 6 +++--- drivers/ide/ide-tape.c | 4 ++-- drivers/ide/ide.c | 2 +- drivers/md/dm.c | 6 ++---- drivers/md/md.c | 6 +++--- drivers/message/i2o/i2o_block.c | 4 ++-- drivers/mtd/mtd_blkdevs.c | 8 +++----- drivers/s390/block/dasd.c | 4 ++-- drivers/s390/char/tape_block.c | 6 +++--- drivers/scsi/ide-scsi.c | 4 ++-- drivers/scsi/sd.c | 6 +++--- drivers/scsi/sr.c | 6 +++--- fs/block_dev.c | 10 +++++----- include/linux/fs.h | 2 +- 45 files changed, 149 insertions(+), 161 deletions(-) diff -puN arch/um/drivers/ubd_kern.c~RD4-open-B6 arch/um/drivers/ubd_kern.c --- 25/arch/um/drivers/ubd_kern.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/arch/um/drivers/ubd_kern.c 2003-10-04 11:45:52.000000000 -0700 @@ -49,7 +49,7 @@ static spinlock_t ubd_lock = SPIN_LOCK_U static void (*do_ubd)(void); -static int ubd_open(struct inode * inode, struct file * filp); +static int ubd_open(struct block_device *bdev, struct file * filp); static int ubd_release(struct inode * inode, struct file * file); static int ubd_ioctl(struct block_device *bdev, struct file * file, unsigned int cmd, unsigned long arg); @@ -710,9 +710,9 @@ int ubd_driver_init(void){ device_initcall(ubd_driver_init); -static int ubd_open(struct inode *inode, struct file *filp) +static int ubd_open(struct block_device *bdev, struct file *filp) { - struct gendisk *disk = inode->i_bdev->bd_disk; + struct gendisk *disk = bdev->bd_disk; struct ubd *dev = disk->private_data; int err = -EISDIR; diff -puN drivers/acorn/block/fd1772.c~RD4-open-B6 drivers/acorn/block/fd1772.c --- 25/drivers/acorn/block/fd1772.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/acorn/block/fd1772.c 2003-10-04 11:45:52.000000000 -0700 @@ -370,7 +370,7 @@ static int fd_ioctl(struct block_device static void fd_probe(int drive); 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_open(struct block_device *bdev, struct file *filp); static int floppy_release(struct inode *inode, struct file *filp); static void do_fd_request(request_queue_t *); @@ -1451,10 +1451,11 @@ static void config_types(void) * drive with different device numbers. */ -static int floppy_open(struct inode *inode, struct file *filp) +static int floppy_open(struct block_device *bdev, struct file *filp) { - int drive = iminor(inode) & 3; - int type = iminor(inode) >> 2; + struct archy_floppy_struct *p = bdev->bd_disk->private_data; + int drive = p - unit; + int type = MINOR(bdev->bd_dev) >> 2; int old_dev = fd_device[drive]; if (fd_ref[drive] && old_dev != type) @@ -1474,10 +1475,13 @@ static int floppy_open(struct inode *ino return 0; if (filp->f_mode & 3) { - check_disk_change(inode->i_bdev); + check_disk_change(bdev); if (filp->f_mode & 2) { - if (unit[drive].wpstat) { - floppy_release(inode, filp); + if (p->wpstat) { + if (fd_ref[drive] < 0) + fd_ref[drive] = 0; + else + fd_ref[drive]--; return -EROFS; } } @@ -1485,7 +1489,6 @@ static int floppy_open(struct inode *ino return 0; } - static int floppy_release(struct inode *inode, struct file *filp) { int drive = iminor(inode) & 3; diff -puN drivers/block/acsi.c~RD4-open-B6 drivers/block/acsi.c --- 25/drivers/block/acsi.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/acsi.c 2003-10-04 11:45:52.000000000 -0700 @@ -361,7 +361,7 @@ static void do_acsi_request( request_que static void redo_acsi_request( void ); static int acsi_ioctl(struct block_device *bdev, struct file *file, unsigned int cmd, unsigned long arg ); -static int acsi_open( struct inode * inode, struct file * filp ); +static int acsi_open(struct block_device *bdev, struct file *filp); static int acsi_release( struct inode * inode, struct file * file ); static void acsi_prevent_removal(struct acsi_info_struct *aip, int flag ); static int acsi_change_blk_size( int target, int lun); @@ -1126,16 +1126,16 @@ static int acsi_ioctl(struct block_devic * */ -static int acsi_open( struct inode * inode, struct file * filp ) +static int acsi_open(struct block_device *bdev, struct file *filp) { - struct gendisk *disk = inode->i_bdev->bd_disk; + struct gendisk *disk = bdev->bd_disk; struct acsi_info_struct *aip = disk->private_data; if (aip->access_count == 0 && aip->removable) { #if 0 aip->changed = 1; /* safety first */ #endif - check_disk_change( inode->i_bdev ); + check_disk_change(bdev); if (aip->changed) /* revalidate was not successful (no medium) */ return -ENXIO; acsi_prevent_removal(aip, 1); @@ -1143,10 +1143,11 @@ static int acsi_open( struct inode * ino aip->access_count++; if (filp && filp->f_mode) { - check_disk_change( inode->i_bdev ); + check_disk_change(bdev); if (filp->f_mode & 2) { if (aip->read_only) { - acsi_release( inode, filp ); + if (--aip->access_count == 0 && aip->removable) + acsi_prevent_removal(aip, 0); return -EROFS; } } @@ -1328,8 +1329,6 @@ static int acsi_mode_sense( int target, ********************************************************************/ -extern struct block_device_operations acsi_fops; - static struct gendisk *acsi_gendisk[MAX_DEV]; #define MAX_SCSI_DEVICE_CODE 10 diff -puN drivers/block/amiflop.c~RD4-open-B6 drivers/block/amiflop.c --- 25/drivers/block/amiflop.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/amiflop.c 2003-10-04 11:45:52.000000000 -0700 @@ -1560,10 +1560,11 @@ static void fd_probe(int dev) * /dev/PS0 etc), and disallows simultaneous access to the same * drive with different device numbers. */ -static int floppy_open(struct inode *inode, struct file *filp) +static int floppy_open(struct block_device *bdev, struct file *filp) { - int drive = iminor(inode) & 3; - int system = (iminor(inode) & 4) >> 2; + struct amiga_floppy_struct *p = bdev->bd_disk->private_data; + int drive = p - unit; + int system = (MINOR(bdev->bd_dev) & 4) >> 2; int old_dev; unsigned long flags; @@ -1573,7 +1574,7 @@ static int floppy_open(struct inode *ino return -EBUSY; if (filp && filp->f_mode & 3) { - check_disk_change(inode->i_bdev); + check_disk_change(bdev); if (filp->f_mode & 2 ) { int wrprot; diff -puN drivers/block/ataflop.c~RD4-open-B6 drivers/block/ataflop.c --- 25/drivers/block/ataflop.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/ataflop.c 2003-10-04 11:45:52.000000000 -0700 @@ -369,7 +369,7 @@ static int fd_ioctl(struct block_device static void fd_probe( int drive ); 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_open(struct block_device *bdev, struct file *filp ); static int floppy_release( struct inode * inode, struct file * filp ); /************************* End of Prototypes **************************/ @@ -1816,10 +1816,10 @@ static void __init config_types( void ) * drive with different device numbers. */ -static int floppy_open( struct inode *inode, struct file *filp ) +static int floppy_open(struct block_device *bdev, struct file *filp ) { - struct atari_floppy_struct *p = inode->i_bdev->bd_disk->private_data; - int type = iminor(inode) >> 2; + struct atari_floppy_struct *p = bdev->bd_disk->private_data; + int type = MINOR(bdev->bd_dev) >> 2; DPRINT(("fd_open: type=%d\n",type)); if (p->ref && p->type != type) @@ -1839,14 +1839,13 @@ static int floppy_open( struct inode *in return 0; if (filp->f_mode & 3) { - check_disk_change(inode->i_bdev); + check_disk_change(bdev); if (filp->f_mode & 2) { if (p->wpstat) { if (p->ref < 0) p->ref = 0; else p->ref--; - floppy_release(inode, filp); return -EROFS; } } diff -puN drivers/block/cciss.c~RD4-open-B6 drivers/block/cciss.c --- 25/drivers/block/cciss.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/cciss.c 2003-10-04 11:45:52.000000000 -0700 @@ -112,7 +112,7 @@ static struct board_type products[] = { static ctlr_info_t *hba[MAX_CTLR]; static void do_cciss_request(request_queue_t *q); -static int cciss_open(struct inode *inode, struct file *filep); +static int cciss_open(struct block_device *bdev, struct file *filep); static int cciss_release(struct inode *inode, struct file *filep); static int cciss_ioctl(struct block_device *bdev, struct file *filep, unsigned int cmd, unsigned long arg); @@ -362,13 +362,13 @@ static inline drive_info_struct *get_drv /* * Open. Make sure the device is really there. */ -static int cciss_open(struct inode *inode, struct file *filep) +static int cciss_open(struct block_device *bdev, struct file *filep) { - ctlr_info_t *host = get_host(inode->i_bdev->bd_disk); - drive_info_struct *drv = get_drv(inode->i_bdev->bd_disk); + ctlr_info_t *host = get_host(bdev->bd_disk); + drive_info_struct *drv = get_drv(bdev->bd_disk); #ifdef CCISS_DEBUG - printk(KERN_DEBUG "cciss_open %s\n", inode->i_bdev->bd_disk->disk_name); + printk(KERN_DEBUG "cciss_open %s\n", bdev->bd_disk->disk_name); #endif /* CCISS_DEBUG */ /* @@ -378,7 +378,7 @@ static int cciss_open(struct inode *inod * for "raw controller". */ if (drv->nr_blocks == 0) { - if (iminor(inode) != 0) + if (bdev != bdev->bd_contains || drv != host->drv) return -ENXIO; if (!capable(CAP_SYS_ADMIN)) return -EPERM; diff -puN drivers/block/cpqarray.c~RD4-open-B6 drivers/block/cpqarray.c --- 25/drivers/block/cpqarray.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/cpqarray.c 2003-10-04 11:45:52.000000000 -0700 @@ -128,7 +128,7 @@ static int sendcmd( unsigned int blkcnt, unsigned int log_unit ); -static int ida_open(struct inode *inode, struct file *filep); +static int ida_open(struct block_device *bdev, struct file *filep); static int ida_release(struct inode *inode, struct file *filep); static int ida_ioctl(struct block_device *bdev, struct file *filep, unsigned int cmd, unsigned long arg); static int ida_ctlr_ioctl(ctlr_info_t *h, int dsk, ida_ioctl_t *io); @@ -715,12 +715,12 @@ DBGINFO( /* * Open. Make sure the device is really there. */ -static int ida_open(struct inode *inode, struct file *filep) +static int ida_open(struct block_device *bdev, struct file *filep) { - drv_info_t *drv = get_drv(inode->i_bdev->bd_disk); - ctlr_info_t *host = get_host(inode->i_bdev->bd_disk); + drv_info_t *drv = get_drv(bdev->bd_disk); + ctlr_info_t *host = get_host(bdev->bd_disk); - DBGINFO(printk("ida_open %s\n", inode->i_bdev->bd_disk->disk_name)); + DBGINFO(printk("ida_open %s\n", bdev->bd_disk->disk_name)); /* * Root is allowed to open raw volume zero even if it's not configured * so array config can still work. I don't think I really like this, diff -puN drivers/block/DAC960.c~RD4-open-B6 drivers/block/DAC960.c --- 25/drivers/block/DAC960.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/DAC960.c 2003-10-04 11:45:52.000000000 -0700 @@ -67,9 +67,9 @@ static long disk_size(DAC960_Controller_ } } -static int DAC960_open(struct inode *inode, struct file *file) +static int DAC960_open(struct block_device *bdev, struct file *file) { - struct gendisk *disk = inode->i_bdev->bd_disk; + struct gendisk *disk = bdev->bd_disk; DAC960_Controller_T *p = disk->queue->queuedata; int drive_nr = (long)disk->private_data; @@ -84,7 +84,7 @@ static int DAC960_open(struct inode *ino return -ENXIO; } - check_disk_change(inode->i_bdev); + check_disk_change(bdev); if (!get_capacity(p->disks[drive_nr])) return -ENXIO; diff -puN drivers/block/floppy98.c~RD4-open-B6 drivers/block/floppy98.c --- 25/drivers/block/floppy98.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/floppy98.c 2003-10-04 11:45:52.000000000 -0700 @@ -3758,11 +3758,10 @@ static int floppy_release(struct inode * * /dev/PS0 etc), and disallows simultaneous access to the same * drive with different device numbers. */ -#define RETERR(x) do{floppy_release(inode,filp); return -(x);}while(0) -static int floppy_open(struct inode * inode, struct file * filp) +static int floppy_open(struct block_device *bdev, struct file *filp) { - int drive = (long)inode->i_bdev->bd_disk->private_data; + int drive = (long)bdev->bd_disk->private_data; int old_dev; int try; int res = -EBUSY; @@ -3789,7 +3788,7 @@ static int floppy_open(struct inode * in down(&open_lock); old_dev = UDRS->fd_device; - if (opened_bdev[drive] && opened_bdev[drive] != inode->i_bdev) + if (opened_bdev[drive] && opened_bdev[drive] != bdev) goto out2; if (!UDRS->fd_ref && (UDP->flags & FD_BROKEN_DCL)){ @@ -3809,7 +3808,7 @@ static int floppy_open(struct inode * in else UDRS->fd_ref++; - opened_bdev[drive] = inode->i_bdev; + opened_bdev[drive] = bdev; res = -ENXIO; @@ -3844,9 +3843,9 @@ static int floppy_open(struct inode * in } } - UDRS->fd_device = iminor(inode); - set_capacity(disks[drive], floppy_sizes[iminor(inode)]); - if (old_dev != -1 && old_dev != iminor(inode)) { + UDRS->fd_device = MINOR(bdev->bd_dev); + set_capacity(disks[drive], floppy_sizes[MINOR(bdev->bd_dev)]); + if (old_dev != -1 && old_dev != MINOR(bdev->bd_dev)) { if (buffer_drive == drive) buffer_track = -1; } @@ -3859,8 +3858,7 @@ static int floppy_open(struct inode * in /* Allow ioctls if we have write-permissions even if read-only open. * Needed so that programs such as fdrawcmd still can work on write * protected disks */ - if ((filp->f_mode & 2) || - (inode->i_sb && (permission(inode,2) == 0))) + if ((filp->f_mode & 2) || permission(filp->f_dentry->d_inode,2) == 0) filp->private_data = (void*) 8; if (UFDCS->rawcmd == 1) @@ -3873,7 +3871,7 @@ static int floppy_open(struct inode * in if (!(filp->f_flags & O_NDELAY)) { if (filp->f_mode & 3) { UDRS->last_checked = 0; - check_disk_change(inode->i_bdev); + check_disk_change(bdev); if (UTESTF(FD_DISK_CHANGED)) goto out; } diff -puN drivers/block/floppy.c~RD4-open-B6 drivers/block/floppy.c --- 25/drivers/block/floppy.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/floppy.c 2003-10-04 11:45:52.000000000 -0700 @@ -3708,9 +3708,9 @@ static int floppy_release(struct inode * * /dev/PS0 etc), and disallows simultaneous access to the same * drive with different device numbers. */ -static int floppy_open(struct inode * inode, struct file * filp) +static int floppy_open(struct block_device *bdev, struct file * filp) { - int drive = (long)inode->i_bdev->bd_disk->private_data; + int drive = (long)bdev->bd_disk->private_data; int old_dev; int try; int res = -EBUSY; @@ -3719,7 +3719,7 @@ static int floppy_open(struct inode * in filp->private_data = (void*) 0; down(&open_lock); old_dev = UDRS->fd_device; - if (opened_bdev[drive] && opened_bdev[drive] != inode->i_bdev) + if (opened_bdev[drive] && opened_bdev[drive] != bdev) goto out2; if (!UDRS->fd_ref && (UDP->flags & FD_BROKEN_DCL)){ @@ -3739,7 +3739,7 @@ static int floppy_open(struct inode * in else UDRS->fd_ref++; - opened_bdev[drive] = inode->i_bdev; + opened_bdev[drive] = bdev; res = -ENXIO; @@ -3774,9 +3774,9 @@ static int floppy_open(struct inode * in } } - UDRS->fd_device = iminor(inode); - set_capacity(disks[drive], floppy_sizes[iminor(inode)]); - if (old_dev != -1 && old_dev != iminor(inode)) { + UDRS->fd_device = MINOR(bdev->bd_dev); + set_capacity(disks[drive], floppy_sizes[MINOR(bdev->bd_dev)]); + if (old_dev != -1 && old_dev != MINOR(bdev->bd_dev)) { if (buffer_drive == drive) buffer_track = -1; } @@ -3784,8 +3784,7 @@ static int floppy_open(struct inode * in /* Allow ioctls if we have write-permissions even if read-only open. * Needed so that programs such as fdrawcmd still can work on write * protected disks */ - if ((filp->f_mode & 2) || - (inode->i_sb && (permission(inode,2, NULL) == 0))) + if ((filp->f_mode & 2) || permission(filp->f_dentry->d_inode,2,NULL) == 0) filp->private_data = (void*) 8; if (UFDCS->rawcmd == 1) @@ -3794,7 +3793,7 @@ static int floppy_open(struct inode * in if (!(filp->f_flags & O_NDELAY)) { if (filp->f_mode & 3) { UDRS->last_checked = 0; - check_disk_change(inode->i_bdev); + check_disk_change(bdev); if (UTESTF(FD_DISK_CHANGED)) goto out; } diff -puN drivers/block/loop.c~RD4-open-B6 drivers/block/loop.c --- 25/drivers/block/loop.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/loop.c 2003-10-04 11:45:52.000000000 -0700 @@ -1089,9 +1089,9 @@ static int lo_ioctl(struct block_device return err; } -static int lo_open(struct inode *inode, struct file *file) +static int lo_open(struct block_device *bdev, struct file *file) { - struct loop_device *lo = inode->i_bdev->bd_disk->private_data; + struct loop_device *lo = bdev->bd_disk->private_data; down(&lo->lo_ctl_mutex); lo->lo_refcnt++; diff -puN drivers/block/paride/pcd.c~RD4-open-B6 drivers/block/paride/pcd.c --- 25/drivers/block/paride/pcd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/paride/pcd.c 2003-10-04 11:45:52.000000000 -0700 @@ -243,10 +243,10 @@ static int pcd_warned; /* Have we logge /* kernel glue structures */ -static int pcd_block_open(struct inode *inode, struct file *file) +static int pcd_block_open(struct block_device *bdev, struct file *file) { - struct pcd_unit *cd = inode->i_bdev->bd_disk->private_data; - return cdrom_open(&cd->info, inode->i_bdev, file); + struct pcd_unit *cd = bdev->bd_disk->private_data; + return cdrom_open(&cd->info, bdev, file); } static int pcd_block_release(struct inode *inode, struct file *file) diff -puN drivers/block/paride/pd.c~RD4-open-B6 drivers/block/paride/pd.c --- 25/drivers/block/paride/pd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/paride/pd.c 2003-10-04 11:45:52.000000000 -0700 @@ -236,7 +236,7 @@ MODULE_PARM(drive3, "1-8i"); #define IDE_EJECT 0xed void pd_setup(char *str, int *ints); -static int pd_open(struct inode *inode, struct file *file); +static int pd_open(struct block_device *bdev, struct file *file); static void do_pd_request(request_queue_t * q); static int pd_ioctl(struct block_device *bdev, struct file *file, unsigned int cmd, unsigned long arg); @@ -304,8 +304,6 @@ static char *pd_errs[17] = { "ERR", "IND /* kernel glue structures */ -extern struct block_device_operations pd_fops; - static struct block_device_operations pd_fops = { .owner = THIS_MODULE, .open = pd_open, @@ -337,9 +335,9 @@ static void pd_init_units(void) } } -static int pd_open(struct inode *inode, struct file *file) +static int pd_open(struct block_device *bdev, struct file *file) { - struct pd_unit *disk = inode->i_bdev->bd_disk->private_data; + struct pd_unit *disk = bdev->bd_disk->private_data; disk->access++; diff -puN drivers/block/paride/pf.c~RD4-open-B6 drivers/block/paride/pf.c --- 25/drivers/block/paride/pf.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/paride/pf.c 2003-10-04 11:45:52.000000000 -0700 @@ -222,7 +222,7 @@ MODULE_PARM(drive3, "1-7i"); #define ATAPI_READ_10 0x28 #define ATAPI_WRITE_10 0x2a -static int pf_open(struct inode *inode, struct file *file); +static int pf_open(struct block_device *bdev, struct file *file); static void do_pf_request(request_queue_t * q); static int pf_ioctl(struct block_device *bdev, struct file *file, unsigned int cmd, unsigned long arg); @@ -315,9 +315,9 @@ void pf_init_units(void) } } -static int pf_open(struct inode *inode, struct file *file) +static int pf_open(struct block_device *bdev, struct file *file) { - struct pf_unit *pf = inode->i_bdev->bd_disk->private_data; + struct pf_unit *pf = bdev->bd_disk->private_data; pf_identify(pf); diff -puN drivers/block/rd.c~RD4-open-B6 drivers/block/rd.c --- 25/drivers/block/rd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/rd.c 2003-10-04 11:45:52.000000000 -0700 @@ -267,16 +267,15 @@ static struct backing_dev_info rd_backin .memory_backed = 1, /* Does not contribute to dirty memory */ }; -static int rd_open(struct inode * inode, struct file * filp) +static int rd_open(struct block_device *bdev, struct file * filp) { - unsigned unit = iminor(inode); + unsigned unit = MINOR(bdev->bd_dev); /* * Immunize device against invalidate_buffers() and prune_icache(). */ if (rd_bdev[unit] == NULL) { - struct block_device *bdev = inode->i_bdev; - inode = igrab(bdev->bd_inode); + struct inode *inode = igrab(bdev->bd_inode); rd_bdev[unit] = bdev; bdev->bd_openers++; bdev->bd_block_size = rd_blocksize; diff -puN drivers/block/swim3.c~RD4-open-B6 drivers/block/swim3.c --- 25/drivers/block/swim3.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/swim3.c 2003-10-04 11:45:52.000000000 -0700 @@ -241,7 +241,7 @@ static void release_drive(struct floppy_ static int fd_eject(struct floppy_state *fs); static int floppy_ioctl(struct block_device *bdev, struct file *filp, unsigned int cmd, unsigned long param); -static int floppy_open(struct inode *inode, struct file *filp); +static int floppy_open(struct block_device *bdev, struct file *filp); static int floppy_release(struct inode *inode, struct file *filp); static int floppy_check_change(struct gendisk *disk); static int floppy_revalidate(struct gendisk *disk); @@ -838,9 +838,9 @@ static int floppy_ioctl(struct block_dev return -ENOTTY; } -static int floppy_open(struct inode *inode, struct file *filp) +static int floppy_open(struct block_device *bdev, struct file *filp) { - struct floppy_state *fs = inode->i_bdev->bd_disk->private_data; + struct floppy_state *fs = bdev->bd_disk->private_data; volatile struct swim3 *sw = fs->swim3; int n, err = 0; @@ -876,7 +876,7 @@ static int floppy_open(struct inode *ino if (err == 0 && (filp->f_flags & O_NDELAY) == 0 && (filp->f_mode & 3)) { - check_disk_change(inode->i_bdev); + check_disk_change(bdev); if (fs->ejected) err = -ENXIO; } diff -puN drivers/block/swim_iop.c~RD4-open-B6 drivers/block/swim_iop.c --- 25/drivers/block/swim_iop.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/swim_iop.c 2003-10-04 11:45:52.000000000 -0700 @@ -100,7 +100,7 @@ static int swimiop_eject(struct floppy_s static int floppy_ioctl(struct block_device *bdev, struct file *filp, unsigned int cmd, unsigned long param); -static int floppy_open(struct inode *inode, struct file *filp); +static int floppy_open(struct block_device *bdev, struct file *filp); static int floppy_release(struct inode *inode, struct file *filp); static int floppy_check_change(struct gendisk *disk); static int floppy_revalidate(struct gendisk *disk); @@ -372,15 +372,15 @@ static int floppy_ioctl(struct block_dev return -ENOTTY; } -static int floppy_open(struct inode *inode, struct file *filp) +static int floppy_open(struct block_device *bdev, struct file *filp) { - struct floppy_state *fs = inode->i_bdev->bd_disk->private_data; + struct floppy_state *fs = bdev->bd_disk->private_data; if (fs->ref_count == -1 || filp->f_flags & O_EXCL) return -EBUSY; if ((filp->f_flags & O_NDELAY) == 0 && (filp->f_mode & 3)) { - check_disk_change(inode->i_bdev); + check_disk_change(bdev); if (fs->ejected) return -ENXIO; } diff -puN drivers/block/umem.c~RD4-open-B6 drivers/block/umem.c --- 25/drivers/block/umem.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/umem.c 2003-10-04 11:45:52.000000000 -0700 @@ -153,7 +153,6 @@ struct cardinfo { }; static struct cardinfo cards[MM_MAXCARDS]; -static struct block_device_operations mm_fops; static struct timer_list battery_timer; static int num_cards = 0; diff -puN drivers/block/z2ram.c~RD4-open-B6 drivers/block/z2ram.c --- 25/drivers/block/z2ram.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/block/z2ram.c 2003-10-04 11:45:52.000000000 -0700 @@ -67,7 +67,6 @@ static int current_device = -1; static spinlock_t z2ram_lock = SPIN_LOCK_UNLOCKED; -static struct block_device_operations z2_fops; static struct gendisk *z2ram_gendisk; static void do_z2_request(request_queue_t *q) @@ -141,7 +140,7 @@ get_chipram( void ) } static int -z2_open( struct inode *inode, struct file *filp ) +z2_open( struct block_device *bdev, struct file *filp ) { int device; int max_z2_map = ( Z2RAM_SIZE / Z2RAM_CHUNKSIZE ) * @@ -150,7 +149,7 @@ z2_open( struct inode *inode, struct fil sizeof( z2ram_map[0] ); int rc = -ENOMEM; - device = iminor(inode); + device = MINOR(bdev->bd_dev); if ( current_device != -1 && current_device != device ) { diff -puN drivers/cdrom/aztcd.c~RD4-open-B6 drivers/cdrom/aztcd.c --- 25/drivers/cdrom/aztcd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/cdrom/aztcd.c 2003-10-04 11:45:52.000000000 -0700 @@ -332,7 +332,7 @@ static int aztGetToc(int multi); static int check_aztcd_media_change(struct gendisk *disk); static int aztcd_ioctl(struct block_device *bdev, struct file *fp, unsigned int cmd, unsigned long arg); -static int aztcd_open(struct inode *ip, struct file *fp); +static int aztcd_open(struct block_device *bdev, struct file *fp); static int aztcd_release(struct inode *inode, struct file *file); static struct block_device_operations azt_fops = { @@ -1622,7 +1622,7 @@ static void azt_invalidate_buffers(void) /* * Open the device special file. Check that a disk is in. */ -static int aztcd_open(struct inode *ip, struct file *fp) +static int aztcd_open(struct block_device *bdev, struct file *fp) { int st; diff -puN drivers/cdrom/cdu31a.c~RD4-open-B6 drivers/cdrom/cdu31a.c --- 25/drivers/cdrom/cdu31a.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/cdrom/cdu31a.c 2003-10-04 11:45:52.000000000 -0700 @@ -3167,9 +3167,9 @@ static struct cdrom_device_info scd_info .name = "cdu31a" }; -static int scd_block_open(struct inode *inode, struct file *file) +static int scd_block_open(struct block_device *bdev, struct file *file) { - return cdrom_open(&scd_info, inode->i_bdev, file); + return cdrom_open(&scd_info, bdev, file); } static int scd_block_release(struct inode *inode, struct file *file) diff -puN drivers/cdrom/cm206.c~RD4-open-B6 drivers/cdrom/cm206.c --- 25/drivers/cdrom/cm206.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/cdrom/cm206.c 2003-10-04 11:45:52.000000000 -0700 @@ -1350,9 +1350,9 @@ static struct cdrom_device_info cm206_in .name = "cm206", }; -static int cm206_block_open(struct inode *inode, struct file *file) +static int cm206_block_open(struct block_device *bdev, struct file *file) { - return cdrom_open(&cm206_info, inode->i_bdev, file); + return cdrom_open(&cm206_info, bdev, file); } static int cm206_block_release(struct inode *inode, struct file *file) diff -puN drivers/cdrom/gscd.c~RD4-open-B6 drivers/cdrom/gscd.c --- 25/drivers/cdrom/gscd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/cdrom/gscd.c 2003-10-04 11:45:52.000000000 -0700 @@ -93,7 +93,7 @@ static void gscd_bin2bcd(unsigned char * static void __do_gscd_request(unsigned long dummy); static int gscd_ioctl(struct block_device *, struct file *, unsigned int, unsigned long); -static int gscd_open(struct inode *, struct file *); +static int gscd_open(struct block_device *, struct file *); static int gscd_release(struct inode *, struct file *); static int check_gscd_med_chg(struct gendisk *disk); @@ -338,7 +338,7 @@ static void gscd_read_cmd(struct request * Open the device special file. Check that a disk is in. */ -static int gscd_open(struct inode *ip, struct file *fp) +static int gscd_open(struct block_device *bdev, struct file *fp) { int st; diff -puN drivers/cdrom/mcd.c~RD4-open-B6 drivers/cdrom/mcd.c --- 25/drivers/cdrom/mcd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/cdrom/mcd.c 2003-10-04 11:45:52.000000000 -0700 @@ -214,9 +214,9 @@ static struct cdrom_device_info mcd_info .name = "mcd", }; -static int mcd_block_open(struct inode *inode, struct file *file) +static int mcd_block_open(struct block_device *bdev, struct file *file) { - return cdrom_open(&mcd_info, inode->i_bdev, file); + return cdrom_open(&mcd_info, bdev, file); } static int mcd_block_release(struct inode *inode, struct file *file) diff -puN drivers/cdrom/mcdx.c~RD4-open-B6 drivers/cdrom/mcdx.c --- 25/drivers/cdrom/mcdx.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/cdrom/mcdx.c 2003-10-04 11:45:52.000000000 -0700 @@ -221,10 +221,10 @@ struct s_drive_stuff { int mcdx_init(void); void do_mcdx_request(request_queue_t * q); -static int mcdx_block_open(struct inode *inode, struct file *file) +static int mcdx_block_open(struct block_device *bdev, struct file *file) { - struct s_drive_stuff *p = inode->i_bdev->bd_disk->private_data; - return cdrom_open(&p->info, inode->i_bdev, file); + struct s_drive_stuff *p = bdev->bd_disk->private_data; + return cdrom_open(&p->info, bdev, file); } static int mcdx_block_release(struct inode *inode, struct file *file) diff -puN drivers/cdrom/optcd.c~RD4-open-B6 drivers/cdrom/optcd.c --- 25/drivers/cdrom/optcd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/cdrom/optcd.c 2003-10-04 11:45:52.000000000 -0700 @@ -1841,7 +1841,7 @@ static int opt_ioctl(struct block_device static int open_count = 0; /* Open device special file; check that a disk is in. */ -static int opt_open(struct inode *ip, struct file *fp) +static int opt_open(struct block_device *bdev, struct file *fp) { DEBUG((DEBUG_VFS, "starting opt_open")); diff -puN drivers/cdrom/sbpcd.c~RD4-open-B6 drivers/cdrom/sbpcd.c --- 25/drivers/cdrom/sbpcd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/cdrom/sbpcd.c 2003-10-04 11:45:52.000000000 -0700 @@ -5356,10 +5356,10 @@ static int sbp_data(struct request *req) } /*==========================================================================*/ -static int sbpcd_block_open(struct inode *inode, struct file *file) +static int sbpcd_block_open(struct block_device *bdev, struct file *file) { - struct sbpcd_drive *p = inode->i_bdev->bd_disk->private_data; - return cdrom_open(p->sbpcd_infop, inode->i_bdev, file); + struct sbpcd_drive *p = bdev->bd_disk->private_data; + return cdrom_open(p->sbpcd_infop, bdev, file); } static int sbpcd_block_release(struct inode *inode, struct file *file) diff -puN drivers/cdrom/sjcd.c~RD4-open-B6 drivers/cdrom/sjcd.c --- 25/drivers/cdrom/sjcd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/cdrom/sjcd.c 2003-10-04 11:45:52.000000000 -0700 @@ -1519,7 +1519,7 @@ static void do_sjcd_request(request_queu /* * Open the device special file. Check disk is in. */ -static int sjcd_open(struct inode *ip, struct file *fp) +static int sjcd_open(struct block_device *bdev, struct file *fp) { /* * Check the presence of device. diff -puN drivers/cdrom/sonycd535.c~RD4-open-B6 drivers/cdrom/sonycd535.c --- 25/drivers/cdrom/sonycd535.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/cdrom/sonycd535.c 2003-10-04 11:45:52.000000000 -0700 @@ -201,7 +201,7 @@ static int read_subcode(void); static void sony_get_toc(void); -static int cdu_open(struct inode *inode, struct file *filp); +static int cdu_open(struct block_device *bdev, struct file *filp); static inline unsigned int int_to_bcd(unsigned int val); static unsigned int bcd_to_int(unsigned int bcd); static int do_sony_cmd(Byte * cmd, int nCmd, Byte status[2], @@ -1363,9 +1363,7 @@ cdu_ioctl(struct block_device *bdev, * Open the drive for operations. Spin the drive up and read the table of * contents if these have not already been done. */ -static int -cdu_open(struct inode *inode, - struct file *filp) +static int cdu_open(struct block_device *bdev, struct file *filp) { Byte status[2], cmd_buff[2]; @@ -1388,7 +1386,7 @@ cdu_open(struct inode *inode, sony_inuse = 0; return -EIO; } - check_disk_change(inode->i_bdev); + check_disk_change(bdev); sony_usage++; #ifdef LOCK_DOORS diff -puN drivers/ide/ide.c~RD4-open-B6 drivers/ide/ide.c --- 25/drivers/ide/ide.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/ide/ide.c 2003-10-04 11:45:52.000000000 -0700 @@ -457,7 +457,7 @@ void ide_probe_module (void) EXPORT_SYMBOL(ide_probe_module); -static int ide_open (struct inode * inode, struct file * filp) +static int ide_open (struct block_device *bdev, struct file * filp) { return -ENXIO; } diff -puN drivers/ide/ide-cd.c~RD4-open-B6 drivers/ide/ide-cd.c --- 25/drivers/ide/ide-cd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/ide/ide-cd.c 2003-10-04 11:45:52.000000000 -0700 @@ -3331,16 +3331,16 @@ static ide_driver_t ide_cdrom_driver = { .complete_power_step = ide_cdrom_complete_power_step, }; -static int idecd_open(struct inode * inode, struct file * file) +static int idecd_open(struct block_device *bdev, struct file * file) { - ide_drive_t *drive = inode->i_bdev->bd_disk->private_data; + ide_drive_t *drive = bdev->bd_disk->private_data; struct cdrom_info *info = drive->driver_data; int rc = -ENOMEM; drive->usage++; if (!info->buffer) info->buffer = (char *) kmalloc(SECTOR_BUFFER_SIZE, GFP_KERNEL); - if (!info->buffer || (rc = cdrom_open(&info->devinfo, inode->i_bdev, file))) + if (!info->buffer || (rc = cdrom_open(&info->devinfo, bdev, file))) drive->usage--; return rc; } diff -puN drivers/ide/ide-disk.c~RD4-open-B6 drivers/ide/ide-disk.c --- 25/drivers/ide/ide-disk.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/ide/ide-disk.c 2003-10-04 11:45:52.000000000 -0700 @@ -1734,9 +1734,9 @@ static ide_driver_t idedisk_driver = { .complete_power_step = idedisk_complete_power_step, }; -static int idedisk_open(struct inode *inode, struct file *filp) +static int idedisk_open(struct block_device *bdev, struct file *filp) { - ide_drive_t *drive = inode->i_bdev->bd_disk->private_data; + ide_drive_t *drive = bdev->bd_disk->private_data; drive->usage++; if (drive->removable && drive->usage == 1) { ide_task_t args; @@ -1744,7 +1744,7 @@ static int idedisk_open(struct inode *in memset(&args, 0, sizeof(ide_task_t)); args.tfRegister[IDE_COMMAND_OFFSET] = WIN_DOORLOCK; args.command_type = ide_cmd_type_parser(&args); - check_disk_change(inode->i_bdev); + check_disk_change(bdev); /* * Ignore the return code from door_lock, * since the open() has already succeeded, diff -puN drivers/ide/ide-floppy.c~RD4-open-B6 drivers/ide/ide-floppy.c --- 25/drivers/ide/ide-floppy.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/ide/ide-floppy.c 2003-10-04 11:45:52.000000000 -0700 @@ -1866,9 +1866,9 @@ static ide_driver_t idefloppy_driver = { .drives = LIST_HEAD_INIT(idefloppy_driver.drives), }; -static int idefloppy_open(struct inode *inode, struct file *filp) +static int idefloppy_open(struct block_device *bdev, struct file *filp) { - ide_drive_t *drive = inode->i_bdev->bd_disk->private_data; + ide_drive_t *drive = bdev->bd_disk->private_data; idefloppy_floppy_t *floppy = drive->driver_data; idefloppy_pc_t pc; @@ -1908,7 +1908,7 @@ static int idefloppy_open(struct inode * idefloppy_create_prevent_cmd(&pc, 1); (void) idefloppy_queue_pc_tail(drive, &pc); } - check_disk_change(inode->i_bdev); + check_disk_change(bdev); } else if (test_bit(IDEFLOPPY_FORMAT_IN_PROGRESS, &floppy->flags)) { drive->usage--; return -EBUSY; diff -puN drivers/ide/ide-tape.c~RD4-open-B6 drivers/ide/ide-tape.c --- 25/drivers/ide/ide-tape.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/ide/ide-tape.c 2003-10-04 11:45:52.000000000 -0700 @@ -6338,9 +6338,9 @@ static struct file_operations idetape_fo .release = idetape_chrdev_release, }; -static int idetape_open(struct inode *inode, struct file *filp) +static int idetape_open(struct block_device *bdev, struct file *filp) { - ide_drive_t *drive = inode->i_bdev->bd_disk->private_data; + ide_drive_t *drive = bdev->bd_disk->private_data; drive->usage++; return 0; } diff -puN drivers/md/dm.c~RD4-open-B6 drivers/md/dm.c --- 25/drivers/md/dm.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/md/dm.c 2003-10-04 11:45:52.000000000 -0700 @@ -160,11 +160,9 @@ static void __exit dm_exit(void) /* * Block device functions */ -static int dm_blk_open(struct inode *inode, struct file *file) +static int dm_blk_open(struct block_device *bdev, struct file *file) { - struct mapped_device *md; - - md = inode->i_bdev->bd_disk->private_data; + struct mapped_device *md = bdev->bd_disk->private_data; dm_get(md); return 0; } diff -puN drivers/md/md.c~RD4-open-B6 drivers/md/md.c --- 25/drivers/md/md.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/md/md.c 2003-10-04 11:45:52.000000000 -0700 @@ -2599,12 +2599,12 @@ abort: return err; } -static int md_open(struct inode *inode, struct file *file) +static int md_open(struct block_device *bdev, struct file *file) { /* * Succeed if we can find or allocate a mddev structure. */ - mddev_t *mddev = mddev_find(iminor(inode)); + mddev_t *mddev = mddev_find(MINOR(bdev->bd_dev)); int err = -ENOMEM; if (!mddev) @@ -2615,7 +2615,7 @@ static int md_open(struct inode *inode, err = 0; mddev_unlock(mddev); - inode->i_bdev->bd_inode->u.generic_ip = mddev_get(mddev); + bdev->bd_inode->u.generic_ip = mddev_get(mddev); put: mddev_put(mddev); out: diff -puN drivers/message/i2o/i2o_block.c~RD4-open-B6 drivers/message/i2o/i2o_block.c --- 25/drivers/message/i2o/i2o_block.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/message/i2o/i2o_block.c 2003-10-04 11:45:52.000000000 -0700 @@ -999,9 +999,9 @@ static int i2ob_release(struct inode *in * Open the block device. */ -static int i2ob_open(struct inode *inode, struct file *file) +static int i2ob_open(struct block_device *bdev, struct file *file) { - struct gendisk *disk = inode->i_bdev->bd_disk; + struct gendisk *disk = bdev->bd_disk; struct i2ob_device *dev = disk->private_data; if(!dev->i2odev) diff -puN drivers/mtd/mtd_blkdevs.c~RD4-open-B6 drivers/mtd/mtd_blkdevs.c --- 25/drivers/mtd/mtd_blkdevs.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/mtd/mtd_blkdevs.c 2003-10-04 11:45:52.000000000 -0700 @@ -141,14 +141,12 @@ static void mtd_blktrans_request(struct } -int blktrans_open(struct inode *i, struct file *f) +static int blktrans_open(struct block_device *bdev, struct file *f) { - struct mtd_blktrans_dev *dev; - struct mtd_blktrans_ops *tr; + struct mtd_blktrans_dev *dev = bdev->bd_disk->private_data; + struct mtd_blktrans_ops *tr = dev->tr; int ret = -ENODEV; - dev = i->i_bdev->bd_disk->private_data; - tr = dev->tr; if (!try_module_get(dev->mtd->owner)) goto out; diff -puN drivers/s390/block/dasd.c~RD4-open-B6 drivers/s390/block/dasd.c --- 25/drivers/s390/block/dasd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/s390/block/dasd.c 2003-10-04 11:45:52.000000000 -0700 @@ -1643,9 +1643,9 @@ dasd_flush_request_queue(struct dasd_dev } static int -dasd_open(struct inode *inp, struct file *filp) +dasd_open(struct block_device *bdev, struct file *filp) { - struct gendisk *disk = inp->i_bdev->bd_disk; + struct gendisk *disk = bdev->bd_disk; struct dasd_device *device = disk->private_data; int rc; diff -puN drivers/s390/char/tape_block.c~RD4-open-B6 drivers/s390/char/tape_block.c --- 25/drivers/s390/char/tape_block.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/s390/char/tape_block.c 2003-10-04 11:45:52.000000000 -0700 @@ -27,7 +27,7 @@ /* * file operation structure for tape block frontend */ -static int tapeblock_open(struct inode *, struct file *); +static int tapeblock_open(block_device *, struct file *); static int tapeblock_release(struct inode *, struct file *); static struct block_device_operations tapeblock_fops = { @@ -299,9 +299,9 @@ static int tapeblock_mediumdetect(struct * Block frontend tape device open function. */ static int -tapeblock_open(struct inode *inode, struct file *filp) +tapeblock_open(struct block_device *bdev, struct file *filp) { - struct gendisk *disk = inode->i_bdev->bd_disk; + struct gendisk *disk = bdev->bd_disk; struct tape_device *device = disk->private_data; int rc; diff -puN drivers/scsi/ide-scsi.c~RD4-open-B6 drivers/scsi/ide-scsi.c --- 25/drivers/scsi/ide-scsi.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/scsi/ide-scsi.c 2003-10-04 11:45:52.000000000 -0700 @@ -635,9 +635,9 @@ static ide_driver_t idescsi_driver = { .drives = LIST_HEAD_INIT(idescsi_driver.drives), }; -static int idescsi_ide_open(struct inode *inode, struct file *filp) +static int idescsi_ide_open(struct block_device *bdev, struct file *filp) { - ide_drive_t *drive = inode->i_bdev->bd_disk->private_data; + ide_drive_t *drive = bdev->bd_disk->private_data; drive->usage++; return 0; } diff -puN drivers/scsi/sd.c~RD4-open-B6 drivers/scsi/sd.c --- 25/drivers/scsi/sd.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/scsi/sd.c 2003-10-04 11:45:52.000000000 -0700 @@ -348,9 +348,9 @@ queue: * In the latter case @inode and @filp carry an abridged amount * of information as noted above. **/ -static int sd_open(struct inode *inode, struct file *filp) +static int sd_open(struct block_device *bdev, struct file *filp) { - struct gendisk *disk = inode->i_bdev->bd_disk; + struct gendisk *disk = bdev->bd_disk; struct scsi_disk *sdkp = scsi_disk(disk); struct scsi_device *sdev = sdkp->device; int retval; @@ -370,7 +370,7 @@ static int sd_open(struct inode *inode, goto error_out; if (sdev->removable || sdkp->write_prot) - check_disk_change(inode->i_bdev); + check_disk_change(bdev); /* * If the drive is empty, just let the open fail. diff -puN drivers/scsi/sr.c~RD4-open-B6 drivers/scsi/sr.c --- 25/drivers/scsi/sr.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/drivers/scsi/sr.c 2003-10-04 11:45:52.000000000 -0700 @@ -413,10 +413,10 @@ queue: return 1; } -static int sr_block_open(struct inode *inode, struct file *file) +static int sr_block_open(struct block_device *bdev, struct file *file) { - struct scsi_cd *cd = scsi_cd(inode->i_bdev->bd_disk); - return cdrom_open(&cd->cdi, inode->i_bdev, file); + struct scsi_cd *cd = scsi_cd(bdev->bd_disk); + return cdrom_open(&cd->cdi, bdev, file); } static int sr_block_release(struct inode *inode, struct file *file) diff -puN fs/block_dev.c~RD4-open-B6 fs/block_dev.c --- 25/fs/block_dev.c~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/fs/block_dev.c 2003-10-04 11:45:52.000000000 -0700 @@ -531,7 +531,7 @@ static void bd_set_size(struct block_dev bdev->bd_inode->i_blkbits = blksize_bits(bsize); } -static int do_open(struct block_device *bdev, struct inode *inode, struct file *file) +static int do_open(struct block_device *bdev, struct file *file) { struct module *owner = NULL; struct gendisk *disk; @@ -554,7 +554,7 @@ static int do_open(struct block_device * if (!part) { struct backing_dev_info *bdi; if (disk->fops->open) { - ret = disk->fops->open(inode, file); + ret = disk->fops->open(bdev, file); if (ret) goto out_first; } @@ -599,7 +599,7 @@ static int do_open(struct block_device * module_put(owner); if (bdev->bd_contains == bdev) { if (bdev->bd_disk->fops->open) { - ret = bdev->bd_disk->fops->open(inode, file); + ret = bdev->bd_disk->fops->open(bdev, file); if (ret) goto out; } @@ -647,7 +647,7 @@ int blkdev_get(struct block_device *bdev fake_file.f_dentry = &fake_dentry; fake_dentry.d_inode = bdev->bd_inode; - return do_open(bdev, bdev->bd_inode, &fake_file); + return do_open(bdev, &fake_file); } EXPORT_SYMBOL(blkdev_get); @@ -668,7 +668,7 @@ int blkdev_open(struct inode * inode, st bd_acquire(inode); bdev = inode->i_bdev; - res = do_open(bdev, inode, filp); + res = do_open(bdev, filp); if (res) return res; diff -puN include/linux/fs.h~RD4-open-B6 include/linux/fs.h --- 25/include/linux/fs.h~RD4-open-B6 2003-10-04 11:45:52.000000000 -0700 +++ 25-akpm/include/linux/fs.h 2003-10-04 11:45:52.000000000 -0700 @@ -758,7 +758,7 @@ extern int vfs_rename(struct inode *, st typedef int (*filldir_t)(void *, const char *, int, loff_t, ino_t, unsigned); struct block_device_operations { - int (*open) (struct inode *, struct file *); + int (*open) (struct block_device *, struct file *); int (*release) (struct inode *, struct file *); int (*ioctl) (struct block_device *, struct file *, unsigned, unsigned long); int (*media_changed) (struct gendisk *); _