+- add patches.fixes/linux-post-2.6.3-20040220
[linux-flexiantxendom0-3.2.10.git] / drivers / block / rd.c
index 775b0d4..34b5aba 100644 (file)
@@ -1,15 +1,15 @@
 /*
  * ramdisk.c - Multiple RAM disk driver - gzip-loading version - v. 0.8 beta.
- * 
- * (C) Chad Page, Theodore Ts'o, et. al, 1995. 
+ *
+ * (C) Chad Page, Theodore Ts'o, et. al, 1995.
  *
  * This RAM disk is designed to have filesystems created on it and mounted
- * just like a regular floppy disk.  
- *  
+ * just like a regular floppy disk.
+ *
  * It also does something suggested by Linus: use the buffer cache as the
  * RAM disk data.  This makes it possible to dynamically allocate the RAM disk
- * buffer - with some consequences I have to deal with as I write this. 
- * 
+ * buffer - with some consequences I have to deal with as I write this.
+ *
  * This code is based on the original ramdisk.c, written mostly by
  * Theodore Ts'o (TYT) in 1991.  The code was largely rewritten by
  * Chad Page to use the buffer cache to store the RAM disk data in
@@ -33,7 +33,7 @@
  *
  *  Added initrd: Werner Almesberger & Hans Lermen, Feb '96
  *
- * 4/25/96 : Made RAM disk size a parameter (default is now 4 MB) 
+ * 4/25/96 : Made RAM disk size a parameter (default is now 4 MB)
  *             - Chad Page
  *
  * Add support for fs images split across >1 disk, Paul Gortmaker, Mar '98
@@ -60,7 +60,7 @@
 #include <asm/uaccess.h>
 
 /* The RAM disk size is now a parameter */
-#define NUM_RAMDISKS 16                /* This cannot be overridden (yet) */ 
+#define NUM_RAMDISKS 16                /* This cannot be overridden (yet) */
 
 /* Various static variables go here.  Most are used only in the RAM disk code.
  */
@@ -73,7 +73,7 @@ static struct request_queue *rd_queue[NUM_RAMDISKS];
  * Parameters for the boot-loading of the RAM disk.  These are set by
  * init/main.c (from arguments to the kernel command line) or from the
  * architecture-specific setup routine (from the stored boot sector
- * information). 
+ * information).
  */
 int rd_size = CONFIG_BLK_DEV_RAM_SIZE;         /* Size of the RAM disks */
 /*
@@ -94,7 +94,7 @@ int rd_blocksize = BLOCK_SIZE;                        /* blocksize of the RAM disks */
  *               2000 Transmeta Corp.
  * aops copied from ramfs.
  */
-static int ramdisk_readpage(struct file *file, struct page * page)
+static int ramdisk_readpage(struct file *file, struct page *page)
 {
        if (!PageUptodate(page)) {
                void *kaddr = kmap_atomic(page, KM_USER0);
@@ -108,7 +108,8 @@ static int ramdisk_readpage(struct file *file, struct page * page)
        return 0;
 }
 
-static int ramdisk_prepare_write(struct file *file, struct page *page, unsigned offset, unsigned to)
+static int ramdisk_prepare_write(struct file *file, struct page *page,
+                               unsigned offset, unsigned to)
 {
        if (!PageUptodate(page)) {
                void *kaddr = kmap_atomic(page, KM_USER0);
@@ -122,7 +123,8 @@ static int ramdisk_prepare_write(struct file *file, struct page *page, unsigned
        return 0;
 }
 
-static int ramdisk_commit_write(struct file *file, struct page *page, unsigned offset, unsigned to)
+static int ramdisk_commit_write(struct file *file, struct page *page,
+                               unsigned offset, unsigned to)
 {
        return 0;
 }
@@ -212,7 +214,7 @@ static int rd_blkdev_pagecache_IO(int rw, struct bio_vec *vec, sector_t sector,
  * 19-JAN-1998  Richard Gooch <rgooch@atnf.csiro.au>  Added devfs support
  *
  */
-static int rd_make_request(request_queue_t * q, struct bio *bio)
+static int rd_make_request(request_queue_t *q, struct bio *bio)
 {
        struct block_device *bdev = bio->bi_bdev;
        struct address_space * mapping = bdev->bd_inode->i_mapping;
@@ -242,7 +244,8 @@ fail:
        return 0;
 } 
 
-static int rd_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
+static int rd_ioctl(struct inode *inode, struct file *file,
+                       unsigned int cmd, unsigned long arg)
 {
        int error;
        struct block_device *bdev = inode->i_bdev;
@@ -250,9 +253,11 @@ static int rd_ioctl(struct inode *inode, struct file *file, unsigned int cmd, un
        if (cmd != BLKFLSBUF)
                return -EINVAL;
 
-       /* special: we want to release the ramdisk memory,
-          it's not like with the other blockdevices where
-          this ioctl only flushes away the buffer cache. */
+       /*
+        * special: we want to release the ramdisk memory, it's not like with
+        * the other blockdevices where this ioctl only flushes away the buffer
+        * cache
+        */
        error = -EBUSY;
        down(&bdev->bd_sem);
        if (bdev->bd_openers <= 2) {
@@ -268,7 +273,7 @@ static struct backing_dev_info rd_backing_dev_info = {
        .memory_backed  = 1,    /* Does not contribute to dirty memory */
 };
 
-static int rd_open(struct inode * inode, struct file * filp)
+static int rd_open(struct inode *inode, struct file *filp)
 {
        unsigned unit = iminor(inode);
 
@@ -295,33 +300,37 @@ static struct block_device_operations rd_bd_op = {
        .ioctl =        rd_ioctl,
 };
 
-/* Before freeing the module, invalidate all of the protected buffers! */
-static void __exit rd_cleanup (void)
+/*
+ * Before freeing the module, invalidate all of the protected buffers!
+ */
+static void __exit rd_cleanup(void)
 {
        int i;
 
-       for (i = 0 ; i < NUM_RAMDISKS; i++) {
+       for (i = 0; i < NUM_RAMDISKS; i++) {
                struct block_device *bdev = rd_bdev[i];
                rd_bdev[i] = NULL;
                if (bdev) {
                        invalidate_bdev(bdev, 1);
-                       blkdev_put(bdev, BDEV_FILE);
+                       blkdev_put(bdev);
                }
                del_gendisk(rd_disks[i]);
                put_disk(rd_disks[i]);
        }
        devfs_remove("rd");
-       unregister_blkdev(RAMDISK_MAJOR, "ramdisk" );
+       unregister_blkdev(RAMDISK_MAJOR, "ramdisk");
 }
 
-/* This is the registration and initialization section of the RAM disk driver */
-static int __init rd_init (void)
+/*
+ * This is the registration and initialization section of the RAM disk driver
+ */
+static int __init rd_init(void)
 {
        int i;
        int err = -ENOMEM;
 
        if (rd_blocksize > PAGE_SIZE || rd_blocksize < 512 ||
-           (rd_blocksize & (rd_blocksize-1))) {
+                       (rd_blocksize & (rd_blocksize-1))) {
                printk("RAMDISK: wrong blocksize %d, reverting to defaults\n",
                       rd_blocksize);
                rd_blocksize = BLOCK_SIZE;
@@ -354,6 +363,7 @@ static int __init rd_init (void)
                disk->first_minor = i;
                disk->fops = &rd_bd_op;
                disk->queue = rd_queue[i];
+               disk->flags |= GENHD_FL_SUPPRESS_PARTITION_INFO;
                sprintf(disk->disk_name, "ram%d", i);
                sprintf(disk->devfs_name, "rd/%d", i);
                set_capacity(disk, rd_size * 2);
@@ -362,8 +372,8 @@ static int __init rd_init (void)
 
        /* rd_size is given in kB */
        printk("RAMDISK driver initialized: "
-              "%d RAM disks of %dK size %d blocksize\n",
-              NUM_RAMDISKS, rd_size, rd_blocksize);
+               "%d RAM disks of %dK size %d blocksize\n",
+               NUM_RAMDISKS, rd_size, rd_blocksize);
 
        return 0;
 out_queue: