public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Dave Jones <davej@codemonkey.org.uk>
To: Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Fwd: struct inode size reduction.
Date: Sun, 9 Mar 2003 12:54:03 -0100	[thread overview]
Message-ID: <20030309135402.GB32107@suse.de> (raw)

[-- Attachment #1: Type: text/plain, Size: 94 bytes --]

Third retry, perhaps it'll make it through to the list
now that vger is sending mail again...

[-- Attachment #2: Type: message/rfc822, Size: 69897 bytes --]

From: Dave Jones <davej@codemonkey.org.uk>
To: Linux Kernel <linux-kernel@vger.kernel.org>
Subject: struct inode size reduction.
Date: Sat, 8 Mar 2003 09:13:13 -0100
Message-ID: <20030308101313.GB6532@suse.de>

I've been running with this patch, with no untoward consequences,
seems to pass basic testing here, any objections before I push
this Linuswards ? Al ? Christoph ?

		Dave

diff -urpN --exclude-from=/home/davej/.exclude bk-linus/include/linux/fs.h inode/include/linux/fs.h
--- bk-linus/include/linux/fs.h	2003-03-08 08:57:57.000000000 -0100
+++ inode/include/linux/fs.h	2003-03-08 08:57:20.000000000 -0100
@@ -382,12 +382,12 @@ struct inode {
 	struct address_space	*i_mapping;
 	struct address_space	i_data;
 	struct dquot		*i_dquot[MAXQUOTAS];
-	/* These three should probably be a union */
 	struct list_head	i_devices;
-	struct pipe_inode_info	*i_pipe;
-	struct block_device	*i_bdev;
-	struct char_device	*i_cdev;
-
+	union {
+		struct pipe_inode_info	*i_pipe;
+		struct block_device	*i_bdev;
+		struct char_device	*i_cdev;
+	} type;
 	unsigned long		i_dnotify_mask; /* Directory notify events */
 	struct dnotify_struct	*i_dnotify; /* for directory notifications */
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/arch/um/drivers/ubd_kern.c inode/arch/um/drivers/ubd_kern.c
--- bk-linus/arch/um/drivers/ubd_kern.c	2003-03-08 08:56:48.000000000 -0100
+++ inode/arch/um/drivers/ubd_kern.c	2003-03-08 08:56:12.000000000 -0100
@@ -737,7 +737,7 @@ device_initcall(ubd_driver_init);
 
 static int ubd_open(struct inode *inode, struct file *filp)
 {
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_bdev->bd_disk;
 	struct ubd *dev = disk->private_data;
 	int err = -EISDIR;
 
@@ -766,7 +766,7 @@ static int ubd_open(struct inode *inode,
 
 static int ubd_release(struct inode * inode, struct file * file)
 {
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_bdev->bd_disk;
 	struct ubd *dev = disk->private_data;
 
 	if(--dev->count == 0)
@@ -894,7 +894,7 @@ static int ubd_ioctl(struct inode * inod
 		     unsigned int cmd, unsigned long arg)
 {
 	struct hd_geometry *loc = (struct hd_geometry *) arg;
-	struct ubd *dev = inode->i_bdev->bd_disk->private_data;
+	struct ubd *dev = inode->type.i_bdev->bd_disk->private_data;
 	int err;
 	struct hd_driveid ubd_id = {
 		.cyls		= 0,
@@ -915,7 +915,7 @@ static int ubd_ioctl(struct inode * inod
 
 	case HDIO_SET_UNMASKINTR:
 		if(!capable(CAP_SYS_ADMIN)) return(-EACCES);
-		if((arg > 1) || (inode->i_bdev->bd_contains != inode->i_bdev))
+		if((arg > 1) || (inode->type.i_bdev->bd_contains != inode->type.i_bdev))
 			return(-EINVAL);
 		return(0);
 
@@ -935,7 +935,7 @@ static int ubd_ioctl(struct inode * inod
 
 	case HDIO_SET_MULTCOUNT:
 		if(!capable(CAP_SYS_ADMIN)) return(-EACCES);
-		if(inode->i_bdev->bd_contains != inode->i_bdev)
+		if(inode->type.i_bdev->bd_contains != inode->type.i_bdev)
 			return(-EINVAL);
 		return(0);
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/acorn/block/fd1772.c inode/drivers/acorn/block/fd1772.c
--- bk-linus/drivers/acorn/block/fd1772.c	2003-03-08 08:56:52.000000000 -0100
+++ inode/drivers/acorn/block/fd1772.c	2003-03-08 08:56:15.000000000 -0100
@@ -1314,7 +1314,7 @@ static int invalidate_drive(struct block
 static int fd_ioctl(struct inode *inode, struct file *filp,
 		    unsigned int cmd, unsigned long param)
 {
-	struct block_device *bdev = inode->i_bdev;
+	struct block_device *bdev = inode->type.i_bdev;
 
 	switch (cmd) {
 	case FDFMTEND:
@@ -1481,7 +1481,7 @@ static int floppy_open(struct inode *ino
 		return 0;
 
 	if (filp->f_mode & 3) {
-		check_disk_change(inode->i_bdev);
+		check_disk_change(inode->type.i_bdev);
 		if (filp->f_mode & 2) {
 			if (unit[drive].wpstat) {
 				floppy_release(inode, filp);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/acorn/block/mfmhd.c inode/drivers/acorn/block/mfmhd.c
--- bk-linus/drivers/acorn/block/mfmhd.c	2003-03-08 08:56:52.000000000 -0100
+++ inode/drivers/acorn/block/mfmhd.c	2003-03-08 08:56:15.000000000 -0100
@@ -1156,7 +1156,7 @@ static int mfm_initdrives(void)
 
 static int mfm_ioctl(struct inode *inode, struct file *file, u_int cmd, u_long arg)
 {
-	struct mfm_info *p = inode->i_bdev->bd_disk->private_data;
+	struct mfm_info *p = inode->type.i_bdev->bd_disk->private_data;
 	struct hd_geometry *geo = (struct hd_geometry *) arg;
 	if (cmd != HDIO_GETGEO)
 		return -EINVAL;
@@ -1168,7 +1168,7 @@ static int mfm_ioctl(struct inode *inode
 		return -EFAULT;
 	if (put_user (p->cylinders, &geo->cylinders))
 		return -EFAULT;
-	if (put_user (get_start_sect(inode->i_bdev), &geo->start))
+	if (put_user (get_start_sect(inode->type.i_bdev), &geo->start))
 		return -EFAULT;
 	return 0;
 }
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/DAC960.c inode/drivers/block/DAC960.c
--- bk-linus/drivers/block/DAC960.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/DAC960.c	2003-03-08 08:56:18.000000000 -0100
@@ -5613,7 +5613,7 @@ static int DAC960_Open(Inode_T *Inode, F
       Controller->LogicalDriveInitiallyAccessible[LogicalDriveNumber] = true;
       size = disk_size(Controller, LogicalDriveNumber);
       set_capacity(Controller->disks[LogicalDriveNumber], size);
-      Inode->i_bdev->bd_invalidated = 1;
+      Inode->type.i_bdev->bd_invalidated = 1;
     }
   if (!get_capacity(Controller->disks[LogicalDriveNumber]))
     return -ENXIO;
@@ -5709,7 +5709,7 @@ static int DAC960_IOCTL(Inode_T *Inode, 
 	    LogicalDeviceInfo->ConfigurableDeviceSize
 	    / (Geometry.heads * Geometry.sectors);
 	}
-      Geometry.start = get_start_sect(Inode->i_bdev);
+      Geometry.start = get_start_sect(Inode->type.i_bdev);
       return (copy_to_user(UserGeometry, &Geometry,
 			   sizeof(DiskGeometry_T)) ? -EFAULT : 0);
     }
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/acsi.c inode/drivers/block/acsi.c
--- bk-linus/drivers/block/acsi.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/acsi.c	2003-03-08 08:56:18.000000000 -0100
@@ -1083,7 +1083,7 @@ static void redo_acsi_request( void )
 static int acsi_ioctl( struct inode *inode, struct file *file,
 					   unsigned int cmd, unsigned long arg )
 {
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_bdev->bd_disk;
 	struct acsi_info_struct *aip = disk->private_data;
 	switch (cmd) {
 	  case HDIO_GETGEO:
@@ -1095,7 +1095,7 @@ static int acsi_ioctl( struct inode *ino
 	    put_user( 64, &geo->heads );
 	    put_user( 32, &geo->sectors );
 	    put_user( aip->size >> 11, &geo->cylinders );
-		put_user(get_start_sect(inode->i_bdev), &geo->start);
+		put_user(get_start_sect(inode->type.i_bdev), &geo->start);
 		return 0;
 	  }
 	  case SCSI_IOCTL_GET_IDLUN:
@@ -1127,14 +1127,14 @@ static int acsi_ioctl( struct inode *ino
 
 static int acsi_open( struct inode * inode, struct file * filp )
 {
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_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( inode->type.i_bdev );
 		if (aip->changed)	/* revalidate was not successful (no medium) */
 			return -ENXIO;
 		acsi_prevent_removal(aip, 1);
@@ -1142,7 +1142,7 @@ static int acsi_open( struct inode * ino
 	aip->access_count++;
 
 	if (filp && filp->f_mode) {
-		check_disk_change( inode->i_bdev );
+		check_disk_change( inode->type.i_bdev );
 		if (filp->f_mode & 2) {
 			if (aip->read_only) {
 				acsi_release( inode, filp );
@@ -1161,7 +1161,7 @@ static int acsi_open( struct inode * ino
 
 static int acsi_release( struct inode * inode, struct file * file )
 {
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_bdev->bd_disk;
 	struct acsi_info_struct *aip = disk->private_data;
 	if (--aip->access_count == 0 && aip->removable)
 		acsi_prevent_removal(aip, 0);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/amiflop.c inode/drivers/block/amiflop.c
--- bk-linus/drivers/block/amiflop.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/amiflop.c	2003-03-08 08:56:18.000000000 -0100
@@ -1474,7 +1474,7 @@ static int fd_ioctl(struct inode *inode,
 			rel_fdc();
 			return -EBUSY;
 		}
-		fsync_bdev(inode->i_bdev);
+		fsync_bdev(inode->type.i_bdev);
 		if (fd_motor_on(drive) == 0) {
 			rel_fdc();
 			return -ENODEV;
@@ -1587,7 +1587,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(inode->type.i_bdev);
 		if (filp->f_mode & 2 ) {
 			int wrprot;
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/ataflop.c inode/drivers/block/ataflop.c
--- bk-linus/drivers/block/ataflop.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/ataflop.c	2003-03-08 08:56:18.000000000 -0100
@@ -1526,7 +1526,7 @@ static int fd_ioctl(struct inode *inode,
 {
 	int drive, type;
 	kdev_t device;
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_bdev->bd_disk;
 	struct atari_format_descr fmt_desc;
 	struct atari_disk_type *dtp;
 	struct floppy_struct getprm;
@@ -1701,7 +1701,7 @@ static int fd_ioctl(struct inode *inode,
 		/* invalidate the buffer track to force a reread */
 		BufferDrive = -1;
 		set_bit(drive, &fake_change);
-		check_disk_change(inode->i_bdev);
+		check_disk_change(inode->type.i_bdev);
 		return 0;
 	default:
 		return -EINVAL;
@@ -1871,7 +1871,7 @@ static int floppy_open( struct inode *in
 		return 0;
 
 	if (filp->f_mode & 3) {
-		check_disk_change(inode->i_bdev);
+		check_disk_change(inode->type.i_bdev);
 		if (filp->f_mode & 2) {
 			if (UD.wpstat) {
 				floppy_release(inode, filp);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/cciss.c inode/drivers/block/cciss.c
--- bk-linus/drivers/block/cciss.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/cciss.c	2003-03-08 08:56:18.000000000 -0100
@@ -415,7 +415,7 @@ static int cciss_ioctl(struct inode *ino
                         driver_geo.sectors = 0x3f;
                         driver_geo.cylinders = (int)hba[ctlr]->drv[dsk].nr_blocks / (0xff*0x3f);
                 }
-                driver_geo.start= get_start_sect(inode->i_bdev);
+                driver_geo.start= get_start_sect(inode->type.i_bdev);
                 if (copy_to_user((void *) arg, &driver_geo,
                                 sizeof( struct hd_geometry)))
                         return  -EFAULT;
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/cpqarray.c inode/drivers/block/cpqarray.c
--- bk-linus/drivers/block/cpqarray.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/cpqarray.c	2003-03-08 08:56:18.000000000 -0100
@@ -1039,7 +1039,7 @@ static int ida_ioctl(struct inode *inode
 		put_user(diskinfo[0], &geo->heads);
 		put_user(diskinfo[1], &geo->sectors);
 		put_user(diskinfo[2], &geo->cylinders);
-		put_user(get_start_sect(inode->i_bdev), &geo->start);
+		put_user(get_start_sect(inode->type.i_bdev), &geo->start);
 		return 0;
 	case IDAGETDRVINFO:
 		if (copy_to_user(&io->c.drv, &hba[ctlr]->drv[dsk],
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/floppy.c inode/drivers/block/floppy.c
--- bk-linus/drivers/block/floppy.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/floppy.c	2003-03-08 08:56:18.000000000 -0100
@@ -3525,11 +3525,11 @@ static int fd_ioctl(struct inode *inode,
 			current_type[drive] = NULL;
 			floppy_sizes[drive] = MAX_DISK_SIZE << 1;
 			UDRS->keep_data = 0;
-			return invalidate_drive(inode->i_bdev);
+			return invalidate_drive(inode->type.i_bdev);
 		case FDSETPRM:
 		case FDDEFPRM:
 			return set_geometry(cmd, & inparam.g,
-					    drive, type, inode->i_bdev);
+					    drive, type, inode->type.i_bdev);
 		case FDGETPRM:
 			ECALL(get_floppy_geometry(drive, type, 
 						  (struct floppy_struct**)
@@ -3560,7 +3560,7 @@ static int fd_ioctl(struct inode *inode,
 		case FDFMTEND:
 		case FDFLUSH:
 			LOCK_FDC(drive,1);
-			return invalidate_drive(inode->i_bdev);
+			return invalidate_drive(inode->type.i_bdev);
 
 		case FDSETEMSGTRESH:
 			UDP->max_errors.reporting =
@@ -3782,7 +3782,7 @@ static int floppy_open(struct inode * in
 		return 0;
 	if (filp->f_mode & 3) {
 		UDRS->last_checked = 0;
-		check_disk_change(inode->i_bdev);
+		check_disk_change(inode->type.i_bdev);
 		if (UTESTF(FD_DISK_CHANGED))
 			RETERR(ENXIO);
 	}
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/ioctl.c inode/drivers/block/ioctl.c
--- bk-linus/drivers/block/ioctl.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/ioctl.c	2003-03-08 08:56:18.000000000 -0100
@@ -121,7 +121,7 @@ static int put_u64(unsigned long arg, u6
 int blkdev_ioctl(struct inode *inode, struct file *file, unsigned cmd,
 			unsigned long arg)
 {
-	struct block_device *bdev = inode->i_bdev;
+	struct block_device *bdev = inode->type.i_bdev;
 	struct gendisk *disk = bdev->bd_disk;
 	struct backing_dev_info *bdi;
 	int holder;
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/loop.c inode/drivers/block/loop.c
--- bk-linus/drivers/block/loop.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/loop.c	2003-03-08 08:56:18.000000000 -0100
@@ -664,7 +664,7 @@ static int loop_set_fd(struct loop_devic
 		lo_flags |= LO_FLAGS_READ_ONLY;
 
 	if (S_ISBLK(inode->i_mode)) {
-		lo_device = inode->i_bdev;
+		lo_device = inode->type.i_bdev;
 		if (lo_device == bdev) {
 			error = -EBUSY;
 			goto out;
@@ -910,16 +910,16 @@ static int loop_get_status(struct loop_d
 static int lo_ioctl(struct inode * inode, struct file * file,
 	unsigned int cmd, unsigned long arg)
 {
-	struct loop_device *lo = inode->i_bdev->bd_disk->private_data;
+	struct loop_device *lo = inode->type.i_bdev->bd_disk->private_data;
 	int err;
 
 	down(&lo->lo_ctl_mutex);
 	switch (cmd) {
 	case LOOP_SET_FD:
-		err = loop_set_fd(lo, file, inode->i_bdev, arg);
+		err = loop_set_fd(lo, file, inode->type.i_bdev, arg);
 		break;
 	case LOOP_CLR_FD:
-		err = loop_clr_fd(lo, inode->i_bdev);
+		err = loop_clr_fd(lo, inode->type.i_bdev);
 		break;
 	case LOOP_SET_STATUS:
 		err = loop_set_status(lo, (struct loop_info *) arg);
@@ -936,7 +936,7 @@ static int lo_ioctl(struct inode * inode
 
 static int lo_open(struct inode *inode, struct file *file)
 {
-	struct loop_device *lo = inode->i_bdev->bd_disk->private_data;
+	struct loop_device *lo = inode->type.i_bdev->bd_disk->private_data;
 	int type;
 
 	down(&lo->lo_ctl_mutex);
@@ -951,7 +951,7 @@ static int lo_open(struct inode *inode, 
 
 static int lo_release(struct inode *inode, struct file *file)
 {
-	struct loop_device *lo = inode->i_bdev->bd_disk->private_data;
+	struct loop_device *lo = inode->type.i_bdev->bd_disk->private_data;
 	int type;
 
 	down(&lo->lo_ctl_mutex);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/nbd.c inode/drivers/block/nbd.c
--- bk-linus/drivers/block/nbd.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/nbd.c	2003-03-08 08:56:18.000000000 -0100
@@ -97,7 +97,7 @@ static void nbd_end_request(struct reque
 
 static int nbd_open(struct inode *inode, struct file *file)
 {
-	struct nbd_device *lo = inode->i_bdev->bd_disk->private_data;
+	struct nbd_device *lo = inode->type.i_bdev->bd_disk->private_data;
 	lo->refcnt++;
 	return 0;
 }
@@ -410,7 +410,7 @@ static void do_nbd_request(request_queue
 static int nbd_ioctl(struct inode *inode, struct file *file,
 		     unsigned int cmd, unsigned long arg)
 {
-	struct nbd_device *lo = inode->i_bdev->bd_disk->private_data;
+	struct nbd_device *lo = inode->type.i_bdev->bd_disk->private_data;
 	int error, temp;
 	struct request sreq ;
 
@@ -514,7 +514,7 @@ static int nbd_ioctl(struct inode *inode
 #ifdef PARANOIA
 	case NBD_PRINT_DEBUG:
 		printk(KERN_INFO "%s: next = %p, prev = %p. Global: in %d, out %d\n",
-		       inode->i_bdev->bd_disk->disk_name, lo->queue_head.next,
+		       inode->type.i_bdev->bd_disk->disk_name, lo->queue_head.next,
 		       lo->queue_head.prev, requests_in, requests_out);
 		return 0;
 #endif
@@ -524,7 +524,7 @@ static int nbd_ioctl(struct inode *inode
 
 static int nbd_release(struct inode *inode, struct file *file)
 {
-	struct nbd_device *lo = inode->i_bdev->bd_disk->private_data;
+	struct nbd_device *lo = inode->type.i_bdev->bd_disk->private_data;
 	if (lo->refcnt <= 0)
 		printk(KERN_ALERT "nbd_release: refcount(%d) <= 0\n", lo->refcnt);
 	lo->refcnt--;
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/paride/pcd.c inode/drivers/block/paride/pcd.c
--- bk-linus/drivers/block/paride/pcd.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/paride/pcd.c	2003-03-08 08:56:18.000000000 -0100
@@ -245,20 +245,20 @@ static int pcd_warned;		/* Have we logge
 
 static int pcd_block_open(struct inode *inode, struct file *file)
 {
-	struct pcd_unit *cd = inode->i_bdev->bd_disk->private_data;
+	struct pcd_unit *cd = inode->type.i_bdev->bd_disk->private_data;
 	return cdrom_open(&cd->info, inode, file);
 }
 
 static int pcd_block_release(struct inode *inode, struct file *file)
 {
-	struct pcd_unit *cd = inode->i_bdev->bd_disk->private_data;
+	struct pcd_unit *cd = inode->type.i_bdev->bd_disk->private_data;
 	return cdrom_release(&cd->info, file);
 }
 
 static int pcd_block_ioctl(struct inode *inode, struct file *file,
 				unsigned cmd, unsigned long arg)
 {
-	struct pcd_unit *cd = inode->i_bdev->bd_disk->private_data;
+	struct pcd_unit *cd = inode->type.i_bdev->bd_disk->private_data;
 	return cdrom_ioctl(&cd->info, inode, cmd, arg);
 }
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/paride/pd.c inode/drivers/block/paride/pd.c
--- bk-linus/drivers/block/paride/pd.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/paride/pd.c	2003-03-08 08:56:18.000000000 -0100
@@ -339,7 +339,7 @@ static void pd_init_units(void)
 
 static int pd_open(struct inode *inode, struct file *file)
 {
-	struct pd_unit *disk = inode->i_bdev->bd_disk->private_data;
+	struct pd_unit *disk = inode->type.i_bdev->bd_disk->private_data;
 
 	disk->access++;
 
@@ -353,7 +353,7 @@ static int pd_open(struct inode *inode, 
 static int pd_ioctl(struct inode *inode, struct file *file,
 	 unsigned int cmd, unsigned long arg)
 {
-	struct pd_unit *disk = inode->i_bdev->bd_disk->private_data;
+	struct pd_unit *disk = inode->type.i_bdev->bd_disk->private_data;
 	struct hd_geometry *geo = (struct hd_geometry *) arg;
 	struct hd_geometry g;
 
@@ -372,7 +372,7 @@ static int pd_ioctl(struct inode *inode,
 			g.sectors = disk->sectors;
 			g.cylinders = disk->cylinders;
 		}
-		g.start = get_start_sect(inode->i_bdev);
+		g.start = get_start_sect(inode->type.i_bdev);
 		if (copy_to_user(geo, &g, sizeof(struct hd_geometry)))
 			return -EFAULT;
 		return 0;
@@ -383,7 +383,7 @@ static int pd_ioctl(struct inode *inode,
 
 static int pd_release(struct inode *inode, struct file *file)
 {
-	struct pd_unit *disk = inode->i_bdev->bd_disk->private_data;
+	struct pd_unit *disk = inode->type.i_bdev->bd_disk->private_data;
 
 	if (!--disk->access && disk->removable)
 		pd_doorlock(disk, IDE_DOORUNLOCK);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/paride/pf.c inode/drivers/block/paride/pf.c
--- bk-linus/drivers/block/paride/pf.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/paride/pf.c	2003-03-08 08:56:18.000000000 -0100
@@ -320,7 +320,7 @@ void pf_init_units(void)
 
 static int pf_open(struct inode *inode, struct file *file)
 {
-	struct pf_unit *pf = inode->i_bdev->bd_disk->private_data;
+	struct pf_unit *pf = inode->type.i_bdev->bd_disk->private_data;
 
 	pf_identify(pf);
 
@@ -339,7 +339,7 @@ static int pf_open(struct inode *inode, 
 
 static int pf_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
 {
-	struct pf_unit *pf = inode->i_bdev->bd_disk->private_data;
+	struct pf_unit *pf = inode->type.i_bdev->bd_disk->private_data;
 	struct hd_geometry *geo = (struct hd_geometry *) arg;
 	struct hd_geometry g;
 	sector_t capacity;
@@ -370,7 +370,7 @@ static int pf_ioctl(struct inode *inode,
 
 static int pf_release(struct inode *inode, struct file *file)
 {
-	struct pf_unit *pf = inode->i_bdev->bd_disk->private_data;
+	struct pf_unit *pf = inode->type.i_bdev->bd_disk->private_data;
 
 	if (pf->access <= 0)
 		return -EINVAL;
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/ps2esdi.c inode/drivers/block/ps2esdi.c
--- bk-linus/drivers/block/ps2esdi.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/ps2esdi.c	2003-03-08 08:56:18.000000000 -0100
@@ -1058,7 +1058,7 @@ static void dump_cmd_complete_status(u_i
 static int ps2esdi_ioctl(struct inode *inode,
 			 struct file *file, u_int cmd, u_long arg)
 {
-	struct ps2esdi_i_struct *p = inode->i_bdev->bd_disk->private_data;
+	struct ps2esdi_i_struct *p = inode->type.i_bdev->bd_disk->private_data;
 	struct ps2esdi_geometry *geometry = (struct ps2esdi_geometry *) arg;
 	int err;
 
@@ -1069,7 +1069,7 @@ static int ps2esdi_ioctl(struct inode *i
 	put_user(p->head, (char *) &geometry->heads);
 	put_user(p->sect, (char *) &geometry->sectors);
 	put_user(p->cyl, (short *) &geometry->cylinders);
-	put_user(get_start_sect(inode->i_bdev), (long *) &geometry->start);
+	put_user(get_start_sect(inode->type.i_bdev), (long *) &geometry->start);
 	return 0;
 }
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/rd.c inode/drivers/block/rd.c
--- bk-linus/drivers/block/rd.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/rd.c	2003-03-08 08:56:18.000000000 -0100
@@ -256,12 +256,12 @@ static int rd_ioctl(struct inode *inode,
 	   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) {
+	down(&inode->type.i_bdev->bd_sem);
+	if (inode->type.i_bdev->bd_openers <= 2) {
 		truncate_inode_pages(inode->i_mapping, 0);
 		error = 0;
 	}
-	up(&inode->i_bdev->bd_sem);
+	up(&inode->type.i_bdev->bd_sem);
 	return error;
 }
 
@@ -290,7 +290,7 @@ static int initrd_release(struct inode *
 {
 	extern void free_initrd_mem(unsigned long, unsigned long);
 
-	blkdev_put(inode->i_bdev, BDEV_FILE);
+	blkdev_put(inode->type.i_bdev, BDEV_FILE);
 
 	spin_lock(&initrd_users_lock);
 	if (!--initrd_users) {
@@ -337,7 +337,7 @@ static int rd_open(struct inode * inode,
 	 * Immunize device against invalidate_buffers() and prune_icache().
 	 */
 	if (rd_bdev[unit] == NULL) {
-		struct block_device *bdev = inode->i_bdev;
+		struct block_device *bdev = inode->type.i_bdev;
 		atomic_inc(&bdev->bd_count);
 		rd_bdev[unit] = bdev;
 		bdev->bd_openers++;
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/swim3.c inode/drivers/block/swim3.c
--- bk-linus/drivers/block/swim3.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/swim3.c	2003-03-08 08:56:18.000000000 -0100
@@ -815,7 +815,7 @@ static struct floppy_struct floppy_type 
 static int floppy_ioctl(struct inode *inode, struct file *filp,
 			unsigned int cmd, unsigned long param)
 {
-	struct floppy_state *fs = inode->i_bdev->bd_disk->private_data;
+	struct floppy_state *fs = inode->type.i_bdev->bd_disk->private_data;
 	int err;
 		
 	if ((cmd & 0x80) && !capable(CAP_SYS_ADMIN))
@@ -841,7 +841,7 @@ static int floppy_ioctl(struct inode *in
 
 static int floppy_open(struct inode *inode, struct file *filp)
 {
-	struct floppy_state *fs = inode->i_bdev->bd_disk->private_data;
+	struct floppy_state *fs = inode->type.i_bdev->bd_disk->private_data;
 	volatile struct swim3 *sw = fs->swim3;
 	int n, err = 0;
 
@@ -877,7 +877,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(inode->type.i_bdev);
 		if (fs->ejected)
 			err = -ENXIO;
 	}
@@ -907,7 +907,7 @@ static int floppy_open(struct inode *ino
 
 static int floppy_release(struct inode *inode, struct file *filp)
 {
-	struct floppy_state *fs = inode->i_bdev->bd_disk->private_data;
+	struct floppy_state *fs = inode->type.i_bdev->bd_disk->private_data;
 	volatile struct swim3 *sw = fs->swim3;
 	if (fs->ref_count > 0 && --fs->ref_count == 0) {
 		swim3_action(fs, MOTOR_OFF);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/swim_iop.c inode/drivers/block/swim_iop.c
--- bk-linus/drivers/block/swim_iop.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/swim_iop.c	2003-03-08 08:56:18.000000000 -0100
@@ -345,7 +345,7 @@ static struct floppy_struct floppy_type 
 static int floppy_ioctl(struct inode *inode, struct file *filp,
 			unsigned int cmd, unsigned long param)
 {
-	struct floppy_state *fs = inode->i_bdev->bd_disk->private_data;
+	struct floppy_state *fs = inode->type.i_bdev->bd_disk->private_data;
 	int err;
 
 	if ((cmd & 0x80) && !capable(CAP_SYS_ADMIN))
@@ -368,13 +368,13 @@ static int floppy_ioctl(struct inode *in
 
 static int floppy_open(struct inode *inode, struct file *filp)
 {
-	struct floppy_state *fs = inode->i_bdev->bd_disk->private_data;
+	struct floppy_state *fs = inode->type.i_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(inode->type.i_bdev);
 		if (fs->ejected)
 			return -ENXIO;
 	}
@@ -392,7 +392,7 @@ static int floppy_open(struct inode *ino
 
 static int floppy_release(struct inode *inode, struct file *filp)
 {
-	struct floppy_state *fs = inode->i_bdev->bd_disk->private_data;
+	struct floppy_state *fs = inode->type.i_bdev->bd_disk->private_data;
 	if (fs->ref_count > 0)
 		fs->ref_count--;
 	return 0;
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/umem.c inode/drivers/block/umem.c
--- bk-linus/drivers/block/umem.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/umem.c	2003-03-08 08:56:18.000000000 -0100
@@ -815,7 +815,7 @@ static int mm_revalidate(struct gendisk 
 static int mm_ioctl(struct inode *i, struct file *f, unsigned int cmd, unsigned long arg)
 {
 	if (cmd == HDIO_GETGEO) {
-		struct cardinfo *card = i->i_bdev->bd_disk->private_data;
+		struct cardinfo *card = i->type.i_bdev->bd_disk->private_data;
 		int size = card->mm_size * (1024 / MM_HARDSECT);
 		struct hd_geometry geo;
 		/*
@@ -825,7 +825,7 @@ static int mm_ioctl(struct inode *i, str
 		 */
 		geo.heads     = 64;
 		geo.sectors   = 32;
-		geo.start     = get_start_sect(i->i_bdev);
+		geo.start     = get_start_sect(i->type.i_bdev);
 		geo.cylinders = size / (geo.heads * geo.sectors);
 
 		if (copy_to_user((void *) arg, &geo, sizeof(geo)))
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/block/xd.c inode/drivers/block/xd.c
--- bk-linus/drivers/block/xd.c	2003-03-08 08:56:55.000000000 -0100
+++ inode/drivers/block/xd.c	2003-03-08 08:56:18.000000000 -0100
@@ -317,7 +317,7 @@ static void do_xd_request (request_queue
 /* xd_ioctl: handle device ioctl's */
 static int xd_ioctl (struct inode *inode,struct file *file,u_int cmd,u_long arg)
 {
-	XD_INFO *p = inode->i_bdev->bd_disk->private_data;
+	XD_INFO *p = inode->type.i_bdev->bd_disk->private_data;
 
 	switch (cmd) {
 		case HDIO_GETGEO:
@@ -327,7 +327,7 @@ static int xd_ioctl (struct inode *inode
 			g.heads = p->heads;
 			g.sectors = p->sectors;
 			g.cylinders = p->cylinders;
-			g.start = get_start_sect(inode->i_bdev);
+			g.start = get_start_sect(inode->type.i_bdev);
 			return copy_to_user(geometry, &g, sizeof g) ? -EFAULT : 0;
 		}
 		case HDIO_SET_DMA:
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/cdrom/aztcd.c inode/drivers/cdrom/aztcd.c
--- bk-linus/drivers/cdrom/aztcd.c	2003-03-08 08:56:56.000000000 -0100
+++ inode/drivers/cdrom/aztcd.c	2003-03-08 08:56:18.000000000 -0100
@@ -1679,7 +1679,7 @@ static int aztcd_release(struct inode *i
 #ifdef AZT_DEBUG
 	printk("aztcd: executing aztcd_release\n");
 	printk("inode: %p, device: %s    file: %p\n", inode,
-	       inode->i_bdev->bd_disk->disk_name, file);
+	       inode->type.i_bdev->bd_disk->disk_name, file);
 #endif
 	if (!--azt_open_count) {
 		azt_invalidate_buffers();
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/cdrom/cdrom.c inode/drivers/cdrom/cdrom.c
--- bk-linus/drivers/cdrom/cdrom.c	2003-03-08 08:56:56.000000000 -0100
+++ inode/drivers/cdrom/cdrom.c	2003-03-08 08:56:18.000000000 -0100
@@ -436,7 +436,7 @@ int cdrom_open(struct cdrom_device_info 
 	cdinfo(CD_OPEN, "Use count for \"/dev/%s\" now %d\n", cdi->name, cdi->use_count);
 	/* Do this on open.  Don't wait for mount, because they might
 	    not be mounting, but opening with O_NONBLOCK */
-	check_disk_change(ip->i_bdev);
+	check_disk_change(ip->type.i_bdev);
 	return ret;
 }
 
@@ -1439,7 +1439,7 @@ int cdrom_ioctl(struct cdrom_device_info
 	int ret;
 
 	/* Try the generic SCSI command ioctl's first.. */
-	ret = scsi_cmd_ioctl(ip->i_bdev, cmd, arg);
+	ret = scsi_cmd_ioctl(ip->type.i_bdev, cmd, arg);
 	if (ret != -ENOTTY)
 		return ret;
 
@@ -1592,7 +1592,7 @@ int cdrom_ioctl(struct cdrom_device_info
 		cdinfo(CD_DO_IOCTL, "entering CDROM_RESET\n");
 		if (!CDROM_CAN(CDC_RESET))
 			return -ENOSYS;
-		invalidate_bdev(ip->i_bdev, 0);
+		invalidate_bdev(ip->type.i_bdev, 0);
 		return cdo->reset(cdi);
 		}
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/cdrom/mcdx.c inode/drivers/cdrom/mcdx.c
--- bk-linus/drivers/cdrom/mcdx.c	2003-03-08 08:56:56.000000000 -0100
+++ inode/drivers/cdrom/mcdx.c	2003-03-08 08:56:18.000000000 -0100
@@ -223,20 +223,20 @@ void do_mcdx_request(request_queue_t * q
 
 static int mcdx_block_open(struct inode *inode, struct file *file)
 {
-	struct s_drive_stuff *p = inode->i_bdev->bd_disk->private_data;
+	struct s_drive_stuff *p = inode->type.i_bdev->bd_disk->private_data;
 	return cdrom_open(&p->info, inode, file);
 }
 
 static int mcdx_block_release(struct inode *inode, struct file *file)
 {
-	struct s_drive_stuff *p = inode->i_bdev->bd_disk->private_data;
+	struct s_drive_stuff *p = inode->type.i_bdev->bd_disk->private_data;
 	return cdrom_release(&p->info, file);
 }
 
 static int mcdx_block_ioctl(struct inode *inode, struct file *file,
 				unsigned cmd, unsigned long arg)
 {
-	struct s_drive_stuff *p = inode->i_bdev->bd_disk->private_data;
+	struct s_drive_stuff *p = inode->type.i_bdev->bd_disk->private_data;
 	return cdrom_ioctl(&p->info, inode, cmd, arg);
 }
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/cdrom/optcd.c inode/drivers/cdrom/optcd.c
--- bk-linus/drivers/cdrom/optcd.c	2003-03-08 08:56:56.000000000 -0100
+++ inode/drivers/cdrom/optcd.c	2003-03-08 08:56:19.000000000 -0100
@@ -1897,7 +1897,7 @@ static int opt_release(struct inode *ip,
 
 	DEBUG((DEBUG_VFS, "executing opt_release"));
 	DEBUG((DEBUG_VFS, "inode: %p, device: %s, file: %p\n",
-		ip, ip->i_bdev->bd_disk->disk_name, fp));
+		ip, ip->type.i_bdev->bd_disk->disk_name, fp));
 
 	if (!--open_count) {
 		toc_uptodate = 0;
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/cdrom/sbpcd.c inode/drivers/cdrom/sbpcd.c
--- bk-linus/drivers/cdrom/sbpcd.c	2003-03-08 08:56:56.000000000 -0100
+++ inode/drivers/cdrom/sbpcd.c	2003-03-08 08:56:19.000000000 -0100
@@ -5358,20 +5358,20 @@ static int sbp_data(struct request *req)
 
 static int sbpcd_block_open(struct inode *inode, struct file *file)
 {
-	struct sbpcd_drive *p = inode->i_bdev->bd_disk->private_data;
+	struct sbpcd_drive *p = inode->type.i_bdev->bd_disk->private_data;
 	return cdrom_open(p->sbpcd_infop, inode, file);
 }
 
 static int sbpcd_block_release(struct inode *inode, struct file *file)
 {
-	struct sbpcd_drive *p = inode->i_bdev->bd_disk->private_data;
+	struct sbpcd_drive *p = inode->type.i_bdev->bd_disk->private_data;
 	return cdrom_release(p->sbpcd_infop, file);
 }
 
 static int sbpcd_block_ioctl(struct inode *inode, struct file *file,
 				unsigned cmd, unsigned long arg)
 {
-	struct sbpcd_drive *p = inode->i_bdev->bd_disk->private_data;
+	struct sbpcd_drive *p = inode->type.i_bdev->bd_disk->private_data;
 	return cdrom_ioctl(p->sbpcd_infop, inode, cmd, arg);
 }
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/cdrom/sonycd535.c inode/drivers/cdrom/sonycd535.c
--- bk-linus/drivers/cdrom/sonycd535.c	2003-03-08 08:56:56.000000000 -0100
+++ inode/drivers/cdrom/sonycd535.c	2003-03-08 08:56:19.000000000 -0100
@@ -1377,7 +1377,7 @@ cdu_open(struct inode *inode,
 		sony_inuse = 0;
 		return -EIO;
 	}
-	check_disk_change(inode->i_bdev);
+	check_disk_change(inode->type.i_bdev);
 	sony_usage++;
 
 #ifdef LOCK_DOORS
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/ide/ide-cd.c inode/drivers/ide/ide-cd.c
--- bk-linus/drivers/ide/ide-cd.c	2003-03-08 08:57:02.000000000 -0100
+++ inode/drivers/ide/ide-cd.c	2003-03-08 08:56:23.000000000 -0100
@@ -3272,7 +3272,7 @@ static ide_driver_t ide_cdrom_driver = {
 
 static int idecd_open(struct inode * inode, struct file * file)
 {
-	ide_drive_t *drive = inode->i_bdev->bd_disk->private_data;
+	ide_drive_t *drive = inode->type.i_bdev->bd_disk->private_data;
 	struct cdrom_info *info = drive->driver_data;
 	int rc = -ENOMEM;
 	drive->usage++;
@@ -3286,7 +3286,7 @@ static int idecd_open(struct inode * ino
 
 static int idecd_release(struct inode * inode, struct file * file)
 {
-	ide_drive_t *drive = inode->i_bdev->bd_disk->private_data;
+	ide_drive_t *drive = inode->type.i_bdev->bd_disk->private_data;
 	struct cdrom_info *info = drive->driver_data;
 
 	cdrom_release (&info->devinfo, file);
@@ -3297,7 +3297,7 @@ static int idecd_release(struct inode * 
 static int idecd_ioctl (struct inode *inode, struct file *file,
 			unsigned int cmd, unsigned long arg)
 {
-	struct block_device *bdev = inode->i_bdev;
+	struct block_device *bdev = inode->type.i_bdev;
 	ide_drive_t *drive = bdev->bd_disk->private_data;
 	int err = generic_ide_ioctl(bdev, cmd, arg);
 	if (err == -EINVAL) {
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/ide/ide-disk.c inode/drivers/ide/ide-disk.c
--- bk-linus/drivers/ide/ide-disk.c	2003-03-08 08:57:02.000000000 -0100
+++ inode/drivers/ide/ide-disk.c	2003-03-08 08:56:23.000000000 -0100
@@ -1680,7 +1680,7 @@ static ide_driver_t idedisk_driver = {
 
 static int idedisk_open(struct inode *inode, struct file *filp)
 {
-	ide_drive_t *drive = inode->i_bdev->bd_disk->private_data;
+	ide_drive_t *drive = inode->type.i_bdev->bd_disk->private_data;
 	drive->usage++;
 	if (drive->removable && drive->usage == 1) {
 		ide_task_t args;
@@ -1688,7 +1688,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(inode->type.i_bdev);
 		/*
 		 * Ignore the return code from door_lock,
 		 * since the open() has already succeeded,
@@ -1728,13 +1728,13 @@ static int ide_cacheflush_p(ide_drive_t 
 
 static int idedisk_release(struct inode *inode, struct file *filp)
 {
-	ide_drive_t *drive = inode->i_bdev->bd_disk->private_data;
+	ide_drive_t *drive = inode->type.i_bdev->bd_disk->private_data;
 	if (drive->removable && drive->usage == 1) {
 		ide_task_t args;
 		memset(&args, 0, sizeof(ide_task_t));
 		args.tfRegister[IDE_COMMAND_OFFSET] = WIN_DOORUNLOCK;
 		args.command_type = ide_cmd_type_parser(&args);
-		invalidate_bdev(inode->i_bdev, 0);
+		invalidate_bdev(inode->type.i_bdev, 0);
 		if (drive->doorlocking && ide_raw_taskfile(drive, &args, NULL))
 			drive->doorlocking = 0;
 	}
@@ -1746,7 +1746,7 @@ static int idedisk_release(struct inode 
 static int idedisk_ioctl(struct inode *inode, struct file *file,
 			unsigned int cmd, unsigned long arg)
 {
-	struct block_device *bdev = inode->i_bdev;
+	struct block_device *bdev = inode->type.i_bdev;
 	return generic_ide_ioctl(bdev, cmd, arg);
 }
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/ide/ide-floppy.c inode/drivers/ide/ide-floppy.c
--- bk-linus/drivers/ide/ide-floppy.c	2003-03-08 08:57:02.000000000 -0100
+++ inode/drivers/ide/ide-floppy.c	2003-03-08 08:56:23.000000000 -0100
@@ -1867,7 +1867,7 @@ static ide_driver_t idefloppy_driver = {
 
 static int idefloppy_open(struct inode *inode, struct file *filp)
 {
-	ide_drive_t *drive = inode->i_bdev->bd_disk->private_data;
+	ide_drive_t *drive = inode->type.i_bdev->bd_disk->private_data;
 	idefloppy_floppy_t *floppy = drive->driver_data;
 	idefloppy_pc_t pc;
 
@@ -1907,7 +1907,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(inode->type.i_bdev);
 	} else if (test_bit(IDEFLOPPY_FORMAT_IN_PROGRESS, &floppy->flags)) {
 		drive->usage--;
 		return -EBUSY;
@@ -1917,7 +1917,7 @@ static int idefloppy_open(struct inode *
 
 static int idefloppy_release(struct inode *inode, struct file *filp)
 {
-	ide_drive_t *drive = inode->i_bdev->bd_disk->private_data;
+	ide_drive_t *drive = inode->type.i_bdev->bd_disk->private_data;
 	idefloppy_pc_t pc;
 	
 	debug_log(KERN_INFO "Reached idefloppy_release\n");
@@ -1940,7 +1940,7 @@ static int idefloppy_release(struct inod
 static int idefloppy_ioctl(struct inode *inode, struct file *file,
 			unsigned int cmd, unsigned long arg)
 {
-	struct block_device *bdev = inode->i_bdev;
+	struct block_device *bdev = inode->type.i_bdev;
 	ide_drive_t *drive = bdev->bd_disk->private_data;
 	idefloppy_floppy_t *floppy = drive->driver_data;
 	int err = generic_ide_ioctl(bdev, cmd, arg);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/ide/ide-tape.c inode/drivers/ide/ide-tape.c
--- bk-linus/drivers/ide/ide-tape.c	2003-03-08 08:57:02.000000000 -0100
+++ inode/drivers/ide/ide-tape.c	2003-03-08 08:56:23.000000000 -0100
@@ -6246,14 +6246,14 @@ static struct file_operations idetape_fo
 
 static int idetape_open(struct inode *inode, struct file *filp)
 {
-	ide_drive_t *drive = inode->i_bdev->bd_disk->private_data;
+	ide_drive_t *drive = inode->type.i_bdev->bd_disk->private_data;
 	drive->usage++;
 	return 0;
 }
 
 static int idetape_release(struct inode *inode, struct file *filp)
 {
-	ide_drive_t *drive = inode->i_bdev->bd_disk->private_data;
+	ide_drive_t *drive = inode->type.i_bdev->bd_disk->private_data;
 	drive->usage--;
 	return 0;
 }
@@ -6261,7 +6261,7 @@ static int idetape_release(struct inode 
 static int idetape_ioctl(struct inode *inode, struct file *file,
 			unsigned int cmd, unsigned long arg)
 {
-	struct block_device *bdev = inode->i_bdev;
+	struct block_device *bdev = inode->type.i_bdev;
 	ide_drive_t *drive = bdev->bd_disk->private_data;
 	int err = generic_ide_ioctl(bdev, cmd, arg);
 	if (err == -EINVAL)
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/ide/legacy/hd.c inode/drivers/ide/legacy/hd.c
--- bk-linus/drivers/ide/legacy/hd.c	2003-03-08 08:57:03.000000000 -0100
+++ inode/drivers/ide/legacy/hd.c	2003-03-08 08:56:23.000000000 -0100
@@ -659,7 +659,7 @@ static void do_hd_request (request_queue
 static int hd_ioctl(struct inode * inode, struct file * file,
 	unsigned int cmd, unsigned long arg)
 {
-	struct hd_i_struct *disk = inode->i_bdev->bd_disk->private_data;
+	struct hd_i_struct *disk = inode->type.i_bdev->bd_disk->private_data;
 	struct hd_geometry *loc = (struct hd_geometry *) arg;
 	struct hd_geometry g; 
 
@@ -670,7 +670,7 @@ static int hd_ioctl(struct inode * inode
 	g.heads = disk->head;
 	g.sectors = disk->sect;
 	g.cylinders = disk->cyl;
-	g.start = get_start_sect(inode->i_bdev);
+	g.start = get_start_sect(inode->type.i_bdev);
 	return copy_to_user(loc, &g, sizeof g) ? -EFAULT : 0; 
 }
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/md/dm.c inode/drivers/md/dm.c
--- bk-linus/drivers/md/dm.c	2003-03-08 08:57:08.000000000 -0100
+++ inode/drivers/md/dm.c	2003-03-08 08:56:28.000000000 -0100
@@ -159,7 +159,7 @@ static int dm_blk_open(struct inode *ino
 {
 	struct mapped_device *md;
 
-	md = inode->i_bdev->bd_disk->private_data;
+	md = inode->type.i_bdev->bd_disk->private_data;
 	dm_get(md);
 	return 0;
 }
@@ -168,7 +168,7 @@ static int dm_blk_close(struct inode *in
 {
 	struct mapped_device *md;
 
-	md = inode->i_bdev->bd_disk->private_data;
+	md = inode->type.i_bdev->bd_disk->private_data;
 	dm_put(md);
 	return 0;
 }
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/md/md.c inode/drivers/md/md.c
--- bk-linus/drivers/md/md.c	2003-03-08 08:57:08.000000000 -0100
+++ inode/drivers/md/md.c	2003-03-08 08:56:28.000000000 -0100
@@ -2238,7 +2238,7 @@ static int md_ioctl(struct inode *inode,
 	 * Commands creating/starting a new array:
 	 */
 
-	mddev = inode->i_bdev->bd_inode->u.generic_ip;
+	mddev = inode->type.i_bdev->bd_inode->u.generic_ip;
 
 	if (!mddev) {
 		BUG();
@@ -2354,7 +2354,7 @@ static int md_ioctl(struct inode *inode,
 						(short *) &loc->cylinders);
 			if (err)
 				goto abort_unlock;
-			err = put_user (get_start_sect(inode->i_bdev),
+			err = put_user (get_start_sect(inode->type.i_bdev),
 						(long *) &loc->start);
 			goto done_unlock;
 	}
@@ -2447,7 +2447,7 @@ static int md_open(struct inode *inode, 
 
 	err = 0;
 	mddev_unlock(mddev);
-	inode->i_bdev->bd_inode->u.generic_ip = mddev_get(mddev);
+	inode->type.i_bdev->bd_inode->u.generic_ip = mddev_get(mddev);
  put:
 	mddev_put(mddev);
  out:
@@ -2456,7 +2456,7 @@ static int md_open(struct inode *inode, 
 
 static int md_release(struct inode *inode, struct file * file)
 {
- 	mddev_t *mddev = inode->i_bdev->bd_inode->u.generic_ip;
+ 	mddev_t *mddev = inode->type.i_bdev->bd_inode->u.generic_ip;
 
 	if (!mddev)
 		BUG();
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/message/i2o/i2o_block.c inode/drivers/message/i2o/i2o_block.c
--- bk-linus/drivers/message/i2o/i2o_block.c	2003-03-08 08:57:10.000000000 -0100
+++ inode/drivers/message/i2o/i2o_block.c	2003-03-08 08:56:30.000000000 -0100
@@ -892,7 +892,7 @@ static void i2o_block_biosparam(
 static int i2ob_ioctl(struct inode *inode, struct file *file,
 		     unsigned int cmd, unsigned long arg)
 {
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_bdev->bd_disk;
 	struct i2ob_device *dev = disk->private_data;
 
 	/* Anyone capable of this syscall can do *real bad* things */
@@ -905,7 +905,7 @@ static int i2ob_ioctl(struct inode *inod
 			struct hd_geometry g;
 			i2o_block_biosparam(get_capacity(disk), 
 					&g.cylinders, &g.heads, &g.sectors);
-			g.start = get_start_sect(inode->i_bdev);
+			g.start = get_start_sect(inode->type.i_bdev);
 			return copy_to_user((void *)arg,&g, sizeof(g))?-EFAULT:0;
 		}
 		
@@ -933,7 +933,7 @@ static int i2ob_ioctl(struct inode *inod
  
 static int i2ob_release(struct inode *inode, struct file *file)
 {
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_bdev->bd_disk;
 	struct i2ob_device *dev = disk->private_data;
 
 	/*
@@ -1005,7 +1005,7 @@ static int i2ob_release(struct inode *in
  
 static int i2ob_open(struct inode *inode, struct file *file)
 {
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_bdev->bd_disk;
 	struct i2ob_device *dev = disk->private_data;
 
 	if(!dev->i2odev)	
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/mtd/devices/blkmtd.c inode/drivers/mtd/devices/blkmtd.c
--- bk-linus/drivers/mtd/devices/blkmtd.c	2003-03-08 08:57:11.000000000 -0100
+++ inode/drivers/mtd/devices/blkmtd.c	2003-03-08 08:56:31.000000000 -0100
@@ -1103,7 +1103,7 @@ static int __init init_blkmtd(void)
     filp_close(file, NULL);
     return 1;
   }
-  rdev = inode->i_bdev->bd_dev;
+  rdev = inode->type.i_bdev->bd_dev;
   filp_close(file, NULL);
 #else
   rdev = name_to_dev_t(device);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/mtd/ftl.c inode/drivers/mtd/ftl.c
--- bk-linus/drivers/mtd/ftl.c	2003-03-08 08:57:10.000000000 -0100
+++ inode/drivers/mtd/ftl.c	2003-03-08 08:56:31.000000000 -0100
@@ -823,7 +823,7 @@ static u_int32_t find_free(partition_t *
 
 static int ftl_open(struct inode *inode, struct file *file)
 {
-	partition_t *partition = inode->i_bdev->bd_disk->private_data;
+	partition_t *partition = inode->type.i_bdev->bd_disk->private_data;
 	if (!partition)
 		return -ENODEV;
 
@@ -841,7 +841,7 @@ static int ftl_open(struct inode *inode,
 		return -EROFS;
 	}
     
-	DEBUG(0, "ftl_cs: ftl_open(%s)\n", inode->i_bdev->bd_disk->disk_name);
+	DEBUG(0, "ftl_cs: ftl_open(%s)\n", inode->type.i_bdev->bd_disk->disk_name);
 
 	atomic_inc(&partition->open);
 
@@ -852,10 +852,10 @@ static int ftl_open(struct inode *inode,
 
 static release_t ftl_close(struct inode *inode, struct file *file)
 {
-	partition_t *part = inode->i_bdev->bd_disk->private_data;
+	partition_t *part = inode->type.i_bdev->bd_disk->private_data;
 	int i;
     
-	DEBUG(0, "ftl_cs: ftl_close(%s)\n", inode->i_bdev->bd_disk->disk_name);
+	DEBUG(0, "ftl_cs: ftl_close(%s)\n", inode->type.i_bdev->bd_disk->disk_name);
 
 	/* Wait for any pending erase operations to complete */
 	if (part->mtd->sync)
@@ -1083,7 +1083,7 @@ static int ftl_write(partition_t *part, 
 static int ftl_ioctl(struct inode *inode, struct file *file,
 		     u_int cmd, u_long arg)
 {
-	partition_t *part = inode->i_bdev->bd_disk->private_data;
+	partition_t *part = inode->type.i_bdev->bd_disk->private_data;
 	struct hd_geometry *geo = (struct hd_geometry *)arg;
 	int ret = 0;
 	u_long sect;
@@ -1101,7 +1101,7 @@ static int ftl_ioctl(struct inode *inode
 	put_user(1, (char *)&geo->heads);
 	put_user(8, (char *)&geo->sectors);
 	put_user((sect>>3), (short *)&geo->cylinders);
-	put_user(get_start_sect(inode->i_bdev), (u_long *)&geo->start);
+	put_user(get_start_sect(inode->type.i_bdev), (u_long *)&geo->start);
 	return 0;
 } /* ftl_ioctl */
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/mtd/mtdblock.c inode/drivers/mtd/mtdblock.c
--- bk-linus/drivers/mtd/mtdblock.c	2003-03-08 08:57:10.000000000 -0100
+++ inode/drivers/mtd/mtdblock.c	2003-03-08 08:56:31.000000000 -0100
@@ -325,7 +325,7 @@ static int mtdblock_open(struct inode *i
 	}
 
 	mtdblks[dev] = mtdblk;
-	set_device_ro(inode->i_bdev, !(mtdblk->mtd->flags & MTD_WRITEABLE));
+	set_device_ro(inode->type.i_bdev, !(mtdblk->mtd->flags & MTD_WRITEABLE));
 
 	spin_unlock(&mtdblks_lock);
 
@@ -495,8 +495,8 @@ static int mtdblock_ioctl(struct inode *
 
 	switch (cmd) {
 	case BLKFLSBUF:
-		fsync_bdev(inode->i_bdev);
-		invalidate_bdev(inode->i_bdev, 0);
+		fsync_bdev(inode->type.i_bdev);
+		invalidate_bdev(inode->type.i_bdev, 0);
 		down(&mtdblk->cache_sem);
 		write_cached_data(mtdblk);
 		up(&mtdblk->cache_sem);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/mtd/mtdblock_ro.c inode/drivers/mtd/mtdblock_ro.c
--- bk-linus/drivers/mtd/mtdblock_ro.c	2003-03-08 08:57:10.000000000 -0100
+++ inode/drivers/mtd/mtdblock_ro.c	2003-03-08 08:56:31.000000000 -0100
@@ -42,7 +42,7 @@ static spinlock_t mtdro_lock = SPIN_LOCK
 
 static int mtdblock_open(struct inode *inode, struct file *file)
 {
-	struct mtdro_dev *mdev = inode->i_bdev->bd_disk->private_data;
+	struct mtdro_dev *mdev = inode->type.i_bdev->bd_disk->private_data;
 	int ret = 0;
 
 	DEBUG(1,"mtdblock_open\n");
@@ -58,7 +58,7 @@ static int mtdblock_open(struct inode *i
 	}
 
 	if (ret == 0) {
-		set_device_ro(inode->i_bdev, !(mdev->mtd->flags & MTD_CAP_RAM));
+		set_device_ro(inode->type.i_bdev, !(mdev->mtd->flags & MTD_CAP_RAM));
 		mdev->open++;
 	}
 	up(&mtd_sem);
@@ -70,7 +70,7 @@ static int mtdblock_open(struct inode *i
 
 static release_t mtdblock_release(struct inode *inode, struct file *file)
 {
-	struct mtdro_dev *mdev = inode->i_bdev->bd_disk->private_data;
+	struct mtdro_dev *mdev = inode->type.i_bdev->bd_disk->private_data;
 
    	DEBUG(1, "mtdblock_release\n");
 
@@ -170,13 +170,13 @@ static void mtdblock_request(request_que
 static int mtdblock_ioctl(struct inode * inode, struct file * file,
 		      unsigned int cmd, unsigned long arg)
 {
-	struct mtdro_dev *mdev = inode->i_bdev->bd_disk->private_data;
+	struct mtdro_dev *mdev = inode->type.i_bdev->bd_disk->private_data;
 
 	if (cmd != BLKFLSBUF)
 		return -EINVAL;
 
-	fsync_bdev(inode->i_bdev);
-	invalidate_bdev(inode->i_bdev, 0);
+	fsync_bdev(inode->type.i_bdev);
+	invalidate_bdev(inode->type.i_bdev, 0);
 	if (mdev->mtd->sync)
 		mdev->mtd->sync(mdev->mtd);
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/mtd/nftlcore.c inode/drivers/mtd/nftlcore.c
--- bk-linus/drivers/mtd/nftlcore.c	2003-03-08 08:57:10.000000000 -0100
+++ inode/drivers/mtd/nftlcore.c	2003-03-08 08:56:31.000000000 -0100
@@ -756,7 +756,7 @@ static int NFTL_readblock(struct NFTLrec
 
 static int nftl_ioctl(struct inode * inode, struct file * file, unsigned int cmd, unsigned long arg)
 {
-	struct NFTLrecord *nftl = inode->i_bdev->bd_disk->private_data;
+	struct NFTLrecord *nftl = inode->type.i_bdev->bd_disk->private_data;
 	switch (cmd) {
 	case HDIO_GETGEO: {
 		struct hd_geometry g;
@@ -764,12 +764,12 @@ static int nftl_ioctl(struct inode * ino
 		g.heads = nftl->heads;
 		g.sectors = nftl->sectors;
 		g.cylinders = nftl->cylinders;
-		g.start = get_start_sect(inode->i_bdev);
+		g.start = get_start_sect(inode->type.i_bdev);
 		return copy_to_user((void *)arg, &g, sizeof g) ? -EFAULT : 0;
 	}
 	case BLKFLSBUF:
-		fsync_bdev(inode->i_bdev);
-		invalidate_bdev(inode->i_bdev, 0);
+		fsync_bdev(inode->type.i_bdev);
+		invalidate_bdev(inode->type.i_bdev, 0);
 		if (nftl->mtd->sync)
 			nftl->mtd->sync(nftl->mtd);
 		return 0;
@@ -869,7 +869,7 @@ static struct gendisk *nftl_probe(dev_t 
 
 static int nftl_open(struct inode *ip, struct file *fp)
 {
-	struct NFTLrecord *thisNFTL = ip->i_bdev->bd_disk->private_data;
+	struct NFTLrecord *thisNFTL = ip->type.i_bdev->bd_disk->private_data;
 
 	DEBUG(MTD_DEBUG_LEVEL2,"NFTL_open\n");
 	if (!thisNFTL)
@@ -888,7 +888,7 @@ static int nftl_open(struct inode *ip, s
 
 static int nftl_release(struct inode *inode, struct file *fp)
 {
-	struct NFTLrecord *thisNFTL = inode->i_bdev->bd_disk->private_data;
+	struct NFTLrecord *thisNFTL = inode->type.i_bdev->bd_disk->private_data;
 
 	DEBUG(MTD_DEBUG_LEVEL2, "NFTL_release\n");
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/s390/block/dasd.c inode/drivers/s390/block/dasd.c
--- bk-linus/drivers/s390/block/dasd.c	2003-03-08 08:57:22.000000000 -0100
+++ inode/drivers/s390/block/dasd.c	2003-03-08 08:56:38.000000000 -0100
@@ -1728,7 +1728,7 @@ dasd_open(struct inode *inp, struct file
 		return -EPERM;
 	}
 
-	device = inp->i_bdev->bd_disk->private_data;
+	device = inp->type.i_bdev->bd_disk->private_data;
 	if (device->state < DASD_STATE_BASIC) {
 		DBF_DEV_EVENT(DBF_ERR, device, " %s",
 			      " Cannot open unrecognized device");
@@ -1751,7 +1751,7 @@ dasd_release(struct inode *inp, struct f
 {
 	dasd_device_t *device;
 
-	device = inp->i_bdev->bd_disk->private_data;
+	device = inp->type.i_bdev->bd_disk->private_data;
 
 	if (device->state < DASD_STATE_ACCEPT) {
 		DBF_DEV_EVENT(DBF_ERR, device, " %s",
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/s390/block/dasd_ioctl.c inode/drivers/s390/block/dasd_ioctl.c
--- bk-linus/drivers/s390/block/dasd_ioctl.c	2003-03-08 08:57:22.000000000 -0100
+++ inode/drivers/s390/block/dasd_ioctl.c	2003-03-08 08:56:39.000000000 -0100
@@ -88,7 +88,7 @@ int
 dasd_ioctl(struct inode *inp, struct file *filp,
 	   unsigned int no, unsigned long data)
 {
-	struct block_device *bdev = inp->i_bdev;
+	struct block_device *bdev = inp->type.i_bdev;
 	dasd_device_t *device = bdev->bd_disk->private_data;
 	dasd_ioctl_list_t *ioctl;
 	struct list_head *l;
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/scsi/ide-scsi.c inode/drivers/scsi/ide-scsi.c
--- bk-linus/drivers/scsi/ide-scsi.c	2003-02-04 11:58:09.000000000 -0100
+++ inode/drivers/scsi/ide-scsi.c	2003-03-08 08:56:42.000000000 -0100
@@ -634,14 +634,14 @@ static ide_driver_t idescsi_driver = {
 
 static int idescsi_ide_open(struct inode *inode, struct file *filp)
 {
-	ide_drive_t *drive = inode->i_bdev->bd_disk->private_data;
+	ide_drive_t *drive = inode->type.i_bdev->bd_disk->private_data;
 	drive->usage++;
 	return 0;
 }
 
 static int idescsi_ide_release(struct inode *inode, struct file *filp)
 {
-	ide_drive_t *drive = inode->i_bdev->bd_disk->private_data;
+	ide_drive_t *drive = inode->type.i_bdev->bd_disk->private_data;
 	drive->usage--;
 	return 0;
 }
@@ -649,7 +649,7 @@ static int idescsi_ide_release(struct in
 static int idescsi_ide_ioctl(struct inode *inode, struct file *file,
 			unsigned int cmd, unsigned long arg)
 {
-	struct block_device *bdev = inode->i_bdev;
+	struct block_device *bdev = inode->type.i_bdev;
 	return generic_ide_ioctl(bdev, cmd, arg);
 }
 
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/scsi/sd.c inode/drivers/scsi/sd.c
--- bk-linus/drivers/scsi/sd.c	2003-03-08 08:57:28.000000000 -0100
+++ inode/drivers/scsi/sd.c	2003-03-08 08:56:43.000000000 -0100
@@ -377,7 +377,7 @@ queue:
  **/
 static int sd_open(struct inode *inode, struct file *filp)
 {
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_bdev->bd_disk;
 	struct scsi_disk *sdkp = scsi_disk(disk);
 	struct scsi_device *sdev = sdkp->device;
 	int retval;
@@ -397,7 +397,7 @@ static int sd_open(struct inode *inode, 
 		goto error_out;
 
 	if (sdev->removable) {
-		check_disk_change(inode->i_bdev);
+		check_disk_change(inode->type.i_bdev);
 
 		/*
 		 * If the drive is empty, just let the open fail.
@@ -450,7 +450,7 @@ error_out:
  **/
 static int sd_release(struct inode *inode, struct file *filp)
 {
-	struct gendisk *disk = inode->i_bdev->bd_disk;
+	struct gendisk *disk = inode->type.i_bdev->bd_disk;
 	struct scsi_device *sdev = scsi_disk(disk)->device;
 
 	SCSI_LOG_HLQUEUE(3, printk("sd_release: disk=%s\n", disk->disk_name));
@@ -514,7 +514,7 @@ static int sd_hdio_getgeo(struct block_d
 static int sd_ioctl(struct inode * inode, struct file * filp, 
 		    unsigned int cmd, unsigned long arg)
 {
-	struct block_device *bdev = inode->i_bdev;
+	struct block_device *bdev = inode->type.i_bdev;
 	struct gendisk *disk = bdev->bd_disk;
 	struct scsi_device *sdp = scsi_disk(disk)->device;
 	int error;
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/scsi/sr.c inode/drivers/scsi/sr.c
--- bk-linus/drivers/scsi/sr.c	2003-03-08 08:57:28.000000000 -0100
+++ inode/drivers/scsi/sr.c	2003-03-08 08:56:43.000000000 -0100
@@ -420,20 +420,20 @@ queue:
 
 static int sr_block_open(struct inode *inode, struct file *file)
 {
-	struct scsi_cd *cd = scsi_cd(inode->i_bdev->bd_disk);
+	struct scsi_cd *cd = scsi_cd(inode->type.i_bdev->bd_disk);
 	return cdrom_open(&cd->cdi, inode, file);
 }
 
 static int sr_block_release(struct inode *inode, struct file *file)
 {
-	struct scsi_cd *cd = scsi_cd(inode->i_bdev->bd_disk);
+	struct scsi_cd *cd = scsi_cd(inode->type.i_bdev->bd_disk);
 	return cdrom_release(&cd->cdi, file);
 }
 
 static int sr_block_ioctl(struct inode *inode, struct file *file, unsigned cmd,
 			  unsigned long arg)
 {
-	struct scsi_cd *cd = scsi_cd(inode->i_bdev->bd_disk);
+	struct scsi_cd *cd = scsi_cd(inode->type.i_bdev->bd_disk);
 	struct scsi_device *sdev = cd->device;
 
         /*
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/fs/block_dev.c inode/fs/block_dev.c
--- bk-linus/fs/block_dev.c	2003-03-08 08:57:37.000000000 -0100
+++ inode/fs/block_dev.c	2003-03-08 08:56:51.000000000 -0100
@@ -94,10 +94,10 @@ static int
 blkdev_get_block(struct inode *inode, sector_t iblock,
 		struct buffer_head *bh, int create)
 {
-	if (iblock >= max_block(inode->i_bdev))
+	if (iblock >= max_block(inode->type.i_bdev))
 		return -EIO;
 
-	bh->b_bdev = inode->i_bdev;
+	bh->b_bdev = inode->type.i_bdev;
 	bh->b_blocknr = iblock;
 	set_buffer_mapped(bh);
 	return 0;
@@ -107,10 +107,10 @@ static int
 blkdev_get_blocks(struct inode *inode, sector_t iblock,
 		unsigned long max_blocks, struct buffer_head *bh, int create)
 {
-	if ((iblock + max_blocks) > max_block(inode->i_bdev))
+	if ((iblock + max_blocks) > max_block(inode->type.i_bdev))
 		return -EIO;
 
-	bh->b_bdev = inode->i_bdev;
+	bh->b_bdev = inode->type.i_bdev;
 	bh->b_blocknr = iblock;
 	bh->b_size = max_blocks << inode->i_blkbits;
 	set_buffer_mapped(bh);
@@ -124,7 +124,7 @@ blkdev_direct_IO(int rw, struct kiocb *i
 	struct file *file = iocb->ki_filp;
 	struct inode *inode = file->f_dentry->d_inode->i_mapping->host;
 
-	return blockdev_direct_IO(rw, iocb, inode, inode->i_bdev, iov, offset,
+	return blockdev_direct_IO(rw, iocb, inode, inode->type.i_bdev, iov, offset,
 				nr_segs, blkdev_get_blocks);
 }
 
@@ -156,7 +156,7 @@ static int blkdev_commit_write(struct fi
 static loff_t block_llseek(struct file *file, loff_t offset, int origin)
 {
 	/* ewww */
-	loff_t size = file->f_dentry->d_inode->i_bdev->bd_inode->i_size;
+	loff_t size = file->f_dentry->d_inode->type.i_bdev->bd_inode->i_size;
 	loff_t retval;
 
 	lock_kernel();
@@ -188,7 +188,7 @@ static int block_fsync(struct file *filp
 {
 	struct inode * inode = dentry->d_inode;
 
-	return sync_blockdev(inode->i_bdev);
+	return sync_blockdev(inode->type.i_bdev);
 }
 
 /*
@@ -316,7 +316,7 @@ struct block_device *bdget(dev_t dev)
 			new_bdev->bd_invalidated = 0;
 			inode->i_mode = S_IFBLK;
 			inode->i_rdev = kdev;
-			inode->i_bdev = new_bdev;
+			inode->type.i_bdev = new_bdev;
 			inode->i_data.a_ops = &def_blk_aops;
 			inode->i_data.gfp_mask = GFP_USER;
 			inode->i_data.backing_dev_info = &default_backing_dev_info;
@@ -361,7 +361,7 @@ long nr_blockdev_pages(void)
 static inline void __bd_forget(struct inode *inode)
 {
 	list_del_init(&inode->i_devices);
-	inode->i_bdev = NULL;
+	inode->type.i_bdev = NULL;
 	inode->i_mapping = &inode->i_data;
 }
 
@@ -385,8 +385,8 @@ int bd_acquire(struct inode *inode)
 {
 	struct block_device *bdev;
 	spin_lock(&bdev_lock);
-	if (inode->i_bdev) {
-		atomic_inc(&inode->i_bdev->bd_count);
+	if (inode->type.i_bdev) {
+		atomic_inc(&inode->type.i_bdev->bd_count);
 		spin_unlock(&bdev_lock);
 		return 0;
 	}
@@ -395,11 +395,11 @@ int bd_acquire(struct inode *inode)
 	if (!bdev)
 		return -ENOMEM;
 	spin_lock(&bdev_lock);
-	if (!inode->i_bdev) {
-		inode->i_bdev = bdev;
+	if (!inode->type.i_bdev) {
+		inode->type.i_bdev = bdev;
 		inode->i_mapping = bdev->bd_inode->i_mapping;
 		list_add(&inode->i_devices, &bdev->bd_inodes);
-	} else if (inode->i_bdev != bdev)
+	} else if (inode->type.i_bdev != bdev)
 		BUG();
 	spin_unlock(&bdev_lock);
 	return 0;
@@ -410,7 +410,7 @@ int bd_acquire(struct inode *inode)
 void bd_forget(struct inode *inode)
 {
 	spin_lock(&bdev_lock);
-	if (inode->i_bdev)
+	if (inode->type.i_bdev)
 		__bd_forget(inode);
 	spin_unlock(&bdev_lock);
 }
@@ -691,7 +691,7 @@ int blkdev_open(struct inode * inode, st
 	filp->f_flags |= O_LARGEFILE;
 
 	bd_acquire(inode);
-	bdev = inode->i_bdev;
+	bdev = inode->type.i_bdev;
 
 	return do_open(bdev, inode, filp);
 }
@@ -706,7 +706,7 @@ int blkdev_put(struct block_device *bdev
 	switch (kind) {
 	case BDEV_FILE:
 	case BDEV_FS:
-		sync_blockdev(bd_inode->i_bdev);
+		sync_blockdev(bd_inode->type.i_bdev);
 		break;
 	}
 	lock_kernel();
@@ -741,7 +741,7 @@ int blkdev_put(struct block_device *bdev
 
 int blkdev_close(struct inode * inode, struct file * filp)
 {
-	return blkdev_put(inode->i_bdev, BDEV_FILE);
+	return blkdev_put(inode->type.i_bdev, BDEV_FILE);
 }
 
 static ssize_t blkdev_file_write(struct file *file, const char *buf,
@@ -831,7 +831,7 @@ struct block_device *lookup_bdev(const c
 	error = bd_acquire(inode);
 	if (error)
 		goto fail;
-	bdev = inode->i_bdev;
+	bdev = inode->type.i_bdev;
 
 out:
 	path_release(&nd);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/fs/ext2/xattr.c inode/fs/ext2/xattr.c
--- bk-linus/fs/ext2/xattr.c	2003-03-08 08:57:39.000000000 -0100
+++ inode/fs/ext2/xattr.c	2003-03-08 08:56:52.000000000 -0100
@@ -974,7 +974,7 @@ ext2_xattr_cache_find(struct inode *inod
 	if (!header->h_hash)
 		return NULL;  /* never share */
 	ea_idebug(inode, "looking for cached blocks [%x]", (int)hash);
-	ce = mb_cache_entry_find_first(ext2_xattr_cache, 0, inode->i_bdev, hash);
+	ce = mb_cache_entry_find_first(ext2_xattr_cache, 0, inode->type.i_bdev, hash);
 	while (ce) {
 		struct buffer_head *bh = sb_bread(inode->i_sb, ce->e_block);
 
@@ -994,7 +994,7 @@ ext2_xattr_cache_find(struct inode *inod
 			return bh;
 		}
 		brelse(bh);
-		ce = mb_cache_entry_find_next(ce, 0, inode->i_bdev, hash);
+		ce = mb_cache_entry_find_next(ce, 0, inode->type.i_bdev, hash);
 	}
 	return NULL;
 }
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/fs/ext3/xattr.c inode/fs/ext3/xattr.c
--- bk-linus/fs/ext3/xattr.c	2003-03-08 08:57:39.000000000 -0100
+++ inode/fs/ext3/xattr.c	2003-03-08 08:56:53.000000000 -0100
@@ -1013,7 +1013,7 @@ ext3_xattr_cache_find(struct inode *inod
 	if (!header->h_hash)
 		return NULL;  /* never share */
 	ea_idebug(inode, "looking for cached blocks [%x]", (int)hash);
-	ce = mb_cache_entry_find_first(ext3_xattr_cache, 0, inode->i_bdev, hash);
+	ce = mb_cache_entry_find_first(ext3_xattr_cache, 0, inode->type.i_bdev, hash);
 	while (ce) {
 		struct buffer_head *bh = sb_bread(inode->i_sb, ce->e_block);
 
@@ -1033,7 +1033,7 @@ ext3_xattr_cache_find(struct inode *inod
 			return bh;
 		}
 		brelse(bh);
-		ce = mb_cache_entry_find_next(ce, 0, inode->i_bdev, hash);
+		ce = mb_cache_entry_find_next(ce, 0, inode->type.i_bdev, hash);
 	}
 	return NULL;
 }
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/fs/fifo.c inode/fs/fifo.c
--- bk-linus/fs/fifo.c	2003-03-08 08:57:38.000000000 -0100
+++ inode/fs/fifo.c	2003-03-08 08:56:51.000000000 -0100
@@ -38,7 +38,7 @@ static int fifo_open(struct inode *inode
 	if (down_interruptible(PIPE_SEM(*inode)))
 		goto err_nolock_nocleanup;
 
-	if (!inode->i_pipe) {
+	if (!inode->type.i_pipe) {
 		ret = -ENOMEM;
 		if(!pipe_new(inode))
 			goto err_nocleanup;
@@ -133,8 +133,8 @@ err_wr:
 
 err:
 	if (!PIPE_READERS(*inode) && !PIPE_WRITERS(*inode)) {
-		struct pipe_inode_info *info = inode->i_pipe;
-		inode->i_pipe = NULL;
+		struct pipe_inode_info *info = inode->type.i_pipe;
+		inode->type.i_pipe = NULL;
 		free_page((unsigned long)info->base);
 		kfree(info);
 	}
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/fs/inode.c inode/fs/inode.c
--- bk-linus/fs/inode.c	2003-03-08 08:57:38.000000000 -0100
+++ inode/fs/inode.c	2003-03-08 08:56:51.000000000 -0100
@@ -126,9 +126,9 @@ static struct inode *alloc_inode(struct 
 		inode->i_bytes = 0;
 		inode->i_generation = 0;
 		memset(&inode->i_dquot, 0, sizeof(inode->i_dquot));
-		inode->i_pipe = NULL;
-		inode->i_bdev = NULL;
-		inode->i_cdev = NULL;
+		inode->type.i_pipe = NULL;
+		inode->type.i_bdev = NULL;
+		inode->type.i_cdev = NULL;
 		inode->i_security = NULL;
 		if (security_inode_alloc(inode)) {
 			if (inode->i_sb->s_op->destroy_inode)
@@ -239,11 +239,11 @@ void clear_inode(struct inode *inode)
 	DQUOT_DROP(inode);
 	if (inode->i_sb && inode->i_sb->s_op->clear_inode)
 		inode->i_sb->s_op->clear_inode(inode);
-	if (inode->i_bdev)
+	if (inode->type.i_bdev)
 		bd_forget(inode);
-	else if (inode->i_cdev) {
-		cdput(inode->i_cdev);
-		inode->i_cdev = NULL;
+	else if (inode->type.i_cdev) {
+		cdput(inode->type.i_cdev);
+		inode->type.i_cdev = NULL;
 	}
 	inode->i_state = I_CLEAR;
 }
@@ -1292,7 +1292,7 @@ void init_special_inode(struct inode *in
 	if (S_ISCHR(mode)) {
 		inode->i_fop = &def_chr_fops;
 		inode->i_rdev = to_kdev_t(rdev);
-		inode->i_cdev = cdget(rdev);
+		inode->type.i_cdev = cdget(rdev);
 	} else if (S_ISBLK(mode)) {
 		inode->i_fop = &def_blk_fops;
 		inode->i_rdev = to_kdev_t(rdev);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/fs/pipe.c inode/fs/pipe.c
--- bk-linus/fs/pipe.c	2003-03-08 08:57:38.000000000 -0100
+++ inode/fs/pipe.c	2003-03-08 08:56:51.000000000 -0100
@@ -270,8 +270,8 @@ pipe_release(struct inode *inode, int de
 	PIPE_READERS(*inode) -= decr;
 	PIPE_WRITERS(*inode) -= decw;
 	if (!PIPE_READERS(*inode) && !PIPE_WRITERS(*inode)) {
-		struct pipe_inode_info *info = inode->i_pipe;
-		inode->i_pipe = NULL;
+		struct pipe_inode_info *info = inode->type.i_pipe;
+		inode->type.i_pipe = NULL;
 		free_page((unsigned long) info->base);
 		kfree(info);
 	} else {
@@ -478,8 +478,8 @@ struct inode* pipe_new(struct inode* ino
 	if (!page)
 		return NULL;
 
-	inode->i_pipe = kmalloc(sizeof(struct pipe_inode_info), GFP_KERNEL);
-	if (!inode->i_pipe)
+	inode->type.i_pipe = kmalloc(sizeof(struct pipe_inode_info), GFP_KERNEL);
+	if (!inode->type.i_pipe)
 		goto fail_page;
 
 	init_waitqueue_head(PIPE_WAIT(*inode));
@@ -608,8 +608,8 @@ close_f12_inode_i:
 	put_unused_fd(i);
 close_f12_inode:
 	free_page((unsigned long) PIPE_BASE(*inode));
-	kfree(inode->i_pipe);
-	inode->i_pipe = NULL;
+	kfree(inode->type.i_pipe);
+	inode->type.i_pipe = NULL;
 	iput(inode);
 close_f12:
 	put_filp(f2);
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/fs/reiserfs/journal.c inode/fs/reiserfs/journal.c
--- bk-linus/fs/reiserfs/journal.c	2003-03-08 08:57:42.000000000 -0100
+++ inode/fs/reiserfs/journal.c	2003-03-08 08:56:57.000000000 -0100
@@ -1926,16 +1926,16 @@ static int journal_init_dev( struct supe
 		struct inode *jdev_inode;
 
 		jdev_inode = journal -> j_dev_file -> f_dentry -> d_inode;
-		journal -> j_dev_bd = jdev_inode -> i_bdev;
+		journal -> j_dev_bd = jdev_inode -> type.i_bdev;
 		if( !S_ISBLK( jdev_inode -> i_mode ) ) {
 			printk( "journal_init_dev: '%s' is not a block device", jdev_name );
 			result = -ENOTBLK;
-		} else if( jdev_inode -> i_bdev == NULL ) {
+		} else if( jdev_inode -> type.i_bdev == NULL ) {
 			printk( "journal_init_dev: bdev uninitialized for '%s'", jdev_name );
 			result = -ENOMEM;
 		} else  {
 			/* ok */
-			jdev = jdev_inode -> i_bdev -> bd_dev;
+			jdev = jdev_inode -> type.i_bdev -> bd_dev;
 			set_blocksize(journal->j_dev_bd, super->s_blocksize);
 		}
 	} else {
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/include/linux/pipe_fs_i.h inode/include/linux/pipe_fs_i.h
--- bk-linus/include/linux/pipe_fs_i.h	2003-03-08 08:57:58.000000000 -0100
+++ inode/include/linux/pipe_fs_i.h	2003-03-08 08:57:21.000000000 -0100
@@ -21,17 +21,17 @@ struct pipe_inode_info {
 #define PIPE_SIZE		PAGE_SIZE
 
 #define PIPE_SEM(inode)		(&(inode).i_sem)
-#define PIPE_WAIT(inode)	(&(inode).i_pipe->wait)
-#define PIPE_BASE(inode)	((inode).i_pipe->base)
-#define PIPE_START(inode)	((inode).i_pipe->start)
-#define PIPE_LEN(inode)		((inode).i_pipe->len)
-#define PIPE_READERS(inode)	((inode).i_pipe->readers)
-#define PIPE_WRITERS(inode)	((inode).i_pipe->writers)
-#define PIPE_WAITING_WRITERS(inode)	((inode).i_pipe->waiting_writers)
-#define PIPE_RCOUNTER(inode)	((inode).i_pipe->r_counter)
-#define PIPE_WCOUNTER(inode)	((inode).i_pipe->w_counter)
-#define PIPE_FASYNC_READERS(inode)     (&((inode).i_pipe->fasync_readers))
-#define PIPE_FASYNC_WRITERS(inode)     (&((inode).i_pipe->fasync_writers))
+#define PIPE_WAIT(inode)	(&(inode).type.i_pipe->wait)
+#define PIPE_BASE(inode)	((inode).type.i_pipe->base)
+#define PIPE_START(inode)	((inode).type.i_pipe->start)
+#define PIPE_LEN(inode)		((inode).type.i_pipe->len)
+#define PIPE_READERS(inode)	((inode).type.i_pipe->readers)
+#define PIPE_WRITERS(inode)	((inode).type.i_pipe->writers)
+#define PIPE_WAITING_WRITERS(inode)	((inode).type.i_pipe->waiting_writers)
+#define PIPE_RCOUNTER(inode)	((inode).type.i_pipe->r_counter)
+#define PIPE_WCOUNTER(inode)	((inode).type.i_pipe->w_counter)
+#define PIPE_FASYNC_READERS(inode)     (&((inode).type.i_pipe->fasync_readers))
+#define PIPE_FASYNC_WRITERS(inode)     (&((inode).type.i_pipe->fasync_writers))
 
 #define PIPE_EMPTY(inode)	(PIPE_LEN(inode) == 0)
 #define PIPE_FULL(inode)	(PIPE_LEN(inode) == PIPE_SIZE)
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/mm/filemap.c inode/mm/filemap.c
--- bk-linus/mm/filemap.c	2003-03-08 08:58:01.000000000 -0100
+++ inode/mm/filemap.c	2003-03-08 08:57:26.000000000 -0100
@@ -1545,7 +1545,7 @@ inline int generic_write_checks(struct i
 		if (unlikely(*pos + *count > inode->i_sb->s_maxbytes))
 			*count = inode->i_sb->s_maxbytes - *pos;
 	} else {
-		if (bdev_read_only(inode->i_bdev))
+		if (bdev_read_only(inode->type.i_bdev))
 			return -EPERM;
 		if (*pos >= inode->i_size) {
 			if (*count || *pos > inode->i_size)
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/mm/swapfile.c inode/mm/swapfile.c
--- bk-linus/mm/swapfile.c	2003-03-08 08:58:02.000000000 -0100
+++ inode/mm/swapfile.c	2003-03-08 08:57:27.000000000 -0100
@@ -1055,7 +1055,7 @@ asmlinkage long sys_swapoff(const char *
 	vfree(swap_map);
 	if (S_ISBLK(swap_file->f_dentry->d_inode->i_mode)) {
 		struct block_device *bdev;
-		bdev = swap_file->f_dentry->d_inode->i_bdev;
+		bdev = swap_file->f_dentry->d_inode->type.i_bdev;
 		set_blocksize(bdev, p->old_block_size);
 		bd_release(bdev);
 	}
@@ -1240,14 +1240,14 @@ asmlinkage long sys_swapon(const char * 
 
 	error = -EINVAL;
 	if (S_ISBLK(swap_file->f_dentry->d_inode->i_mode)) {
-		bdev = swap_file->f_dentry->d_inode->i_bdev;
+		bdev = swap_file->f_dentry->d_inode->type.i_bdev;
 		error = bd_claim(bdev, sys_swapon);
 		if (error < 0) {
 			bdev = NULL;
 			goto bad_swap;
 		}
 		p->old_block_size = block_size(bdev);
-		error = set_blocksize(swap_file->f_dentry->d_inode->i_bdev,
+		error = set_blocksize(swap_file->f_dentry->d_inode->type.i_bdev,
 				      PAGE_SIZE);
 		if (error < 0)
 			goto bad_swap;

             reply	other threads:[~2003-03-09 12:46 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-09 13:54 Dave Jones [this message]
2003-03-09 17:13 ` Fwd: struct inode size reduction Andries Brouwer
2003-03-09 20:33   ` Dave Jones
2003-03-09 19:55     ` Christoph Hellwig
2003-03-09 20:31       ` Andries Brouwer
2003-03-09 22:18         ` Roman Zippel
2003-03-09 23:08           ` Andries Brouwer
2003-03-10  2:23             ` Alexander Viro
2003-03-10 10:58             ` Roman Zippel
2003-03-10 12:05               ` Andries Brouwer
2003-03-10 16:25                 ` Roman Zippel
2003-03-10 17:32                   ` Andries Brouwer
2003-03-10 18:39                     ` Roman Zippel
2003-03-09 22:45 ` J.A. Magallon
2003-03-10  0:11   ` Dave Jones
2003-03-09 23:59     ` J.A. Magallon
2003-03-10  5:04       ` Miles Bader
  -- strict thread matches above, loose matches on Subject: below --
2003-03-10  9:30 Fwd: " Andries.Brouwer
2003-03-10  9:32 Andries.Brouwer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030309135402.GB32107@suse.de \
    --to=davej@codemonkey.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox