X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=block%2Fgenhd.c;fp=block%2Fgenhd.c;h=7f406f97c0f38200cbb69f7f6b806343c8e35d42;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=25d1f42568cc19714a2f8a5469ecd2842e9ea7e5;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/block/genhd.c b/block/genhd.c index 25d1f4256..7f406f97c 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -2,6 +2,7 @@ * gendisk handling */ +#include #include #include #include @@ -14,10 +15,10 @@ #include #include #include -#include -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]),