linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / block / genhd.c
index 25d1f42..7f406f9 100644 (file)
@@ -2,6 +2,7 @@
  *  gendisk handling
  */
 
+#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/fs.h>
 #include <linux/genhd.h>
 #include <linux/kmod.h>
 #include <linux/kobj_map.h>
 #include <linux/buffer_head.h>
-#include <linux/mutex.h>
 
-struct subsystem block_subsys;
-static DEFINE_MUTEX(block_subsys_lock);
+static struct subsystem block_subsys;
+
+static DECLARE_MUTEX(block_subsys_sem);
 
 /*
  * Can be deleted altogether. Later.
@@ -42,10 +43,10 @@ void blkdev_show(struct seq_file *f, off_t offset)
        struct blk_major_name *dp;
 
        if (offset < BLKDEV_MAJOR_HASH_SIZE) {
-               mutex_lock(&block_subsys_lock);
+               down(&block_subsys_sem);
                for (dp = major_names[offset]; dp; dp = dp->next)
                        seq_printf(f, "%3d %s\n", dp->major, dp->name);
-               mutex_unlock(&block_subsys_lock);
+               up(&block_subsys_sem);
        }
 }
 
@@ -56,7 +57,7 @@ int register_blkdev(unsigned int major, const char *name)
        struct blk_major_name **n, *p;
        int index, ret = 0;
 
-       mutex_lock(&block_subsys_lock);
+       down(&block_subsys_sem);
 
        /* temporary */
        if (major == 0) {
@@ -101,7 +102,7 @@ int register_blkdev(unsigned int major, const char *name)
                kfree(p);
        }
 out:
-       mutex_unlock(&block_subsys_lock);
+       up(&block_subsys_sem);
        return ret;
 }
 
@@ -115,7 +116,7 @@ int unregister_blkdev(unsigned int major, const char *name)
        int index = major_to_index(major);
        int ret = 0;
 
-       mutex_lock(&block_subsys_lock);
+       down(&block_subsys_sem);
        for (n = &major_names[index]; *n; n = &(*n)->next)
                if ((*n)->major == major)
                        break;
@@ -125,7 +126,7 @@ int unregister_blkdev(unsigned int major, const char *name)
                p = *n;
                *n = p->next;
        }
-       mutex_unlock(&block_subsys_lock);
+       up(&block_subsys_sem);
        kfree(p);
 
        return ret;
@@ -219,7 +220,7 @@ static void *part_start(struct seq_file *part, loff_t *pos)
        struct list_head *p;
        loff_t l = *pos;
 
-       mutex_lock(&block_subsys_lock);
+       down(&block_subsys_sem);
        list_for_each(p, &block_subsys.kset.list)
                if (!l--)
                        return list_entry(p, struct gendisk, kobj.entry);
@@ -236,7 +237,7 @@ static void *part_next(struct seq_file *part, void *v, loff_t *pos)
 
 static void part_stop(struct seq_file *part, void *v)
 {
-       mutex_unlock(&block_subsys_lock);
+       up(&block_subsys_sem);
 }
 
 static int show_partition(struct seq_file *part, void *v)
@@ -295,7 +296,7 @@ static struct kobject *base_probe(dev_t dev, int *part, void *data)
 
 static int __init genhd_device_init(void)
 {
-       bdev_map = kobj_map_init(base_probe, &block_subsys_lock);
+       bdev_map = kobj_map_init(base_probe, &block_subsys_sem);
        blk_dev_init();
        subsystem_register(&block_subsys);
        return 0;
@@ -371,8 +372,8 @@ static ssize_t disk_stats_read(struct gendisk * disk, char *page)
        disk_round_stats(disk);
        preempt_enable();
        return sprintf(page,
-               "%8lu %8lu %8llu %8u "
-               "%8lu %8lu %8llu %8u "
+               "%8u %8u %8llu %8u "
+               "%8u %8u %8llu %8u "
                "%8u %8u %8u"
                "\n",
                disk_stat_read(disk, ios[READ]),
@@ -509,7 +510,9 @@ static struct kset_uevent_ops block_uevent_ops = {
        .uevent         = block_uevent,
 };
 
-decl_subsys(block, &ktype_block, &block_uevent_ops);
+/* declare block_subsys. */
+static decl_subsys(block, &ktype_block, &block_uevent_ops);
+
 
 /*
  * aggregate disk stat collector.  Uses the same stats that the sysfs
@@ -527,7 +530,7 @@ static void *diskstats_start(struct seq_file *part, loff_t *pos)
        loff_t k = *pos;
        struct list_head *p;
 
-       mutex_lock(&block_subsys_lock);
+       down(&block_subsys_sem);
        list_for_each(p, &block_subsys.kset.list)
                if (!k--)
                        return list_entry(p, struct gendisk, kobj.entry);
@@ -544,7 +547,7 @@ static void *diskstats_next(struct seq_file *part, void *v, loff_t *pos)
 
 static void diskstats_stop(struct seq_file *part, void *v)
 {
-       mutex_unlock(&block_subsys_lock);
+       up(&block_subsys_sem);
 }
 
 static int diskstats_show(struct seq_file *s, void *v)
@@ -564,7 +567,7 @@ static int diskstats_show(struct seq_file *s, void *v)
        preempt_disable();
        disk_round_stats(gp);
        preempt_enable();
-       seq_printf(s, "%4d %4d %s %lu %lu %llu %u %lu %lu %llu %u %u %u %u\n",
+       seq_printf(s, "%4d %4d %s %u %u %llu %u %u %u %llu %u %u %u %u\n",
                gp->major, n + gp->first_minor, disk_name(gp, n, buf),
                disk_stat_read(gp, ios[0]), disk_stat_read(gp, merges[0]),
                (unsigned long long)disk_stat_read(gp, sectors[0]),