return NULL;
}
-static LIST_HEAD(device_names);
-
-char * partition_name(kdev_t dev)
-{
- struct gendisk *hd;
- static char nomem [] = "<nomem>";
- dev_name_t *dname;
- struct list_head *tmp;
-
- list_for_each(tmp, &device_names) {
- dname = list_entry(tmp, dev_name_t, list);
- if (kdev_same(dname->dev, dev))
- return dname->name;
- }
-
- dname = (dev_name_t *) kmalloc(sizeof(*dname), GFP_KERNEL);
-
- if (!dname)
- return nomem;
- /*
- * ok, add this new device name to the list
- */
- hd = get_gendisk (dev);
- dname->name = NULL;
- if (hd)
- dname->name = disk_name(hd, minor(dev)-hd->first_minor, dname->namebuf);
- if (!dname->name) {
- sprintf (dname->namebuf, "[dev %s]", kdevname(dev));
- dname->name = dname->namebuf;
- }
-
- dname->dev = dev;
- list_add(&dname->list, &device_names);
-
- return dname->name;
-}
-
static unsigned int calc_dev_sboffset(struct block_device *bdev)
{
unsigned int size = bdev->bd_inode->i_size >> BLOCK_SIZE_BITS;
static void print_desc(mdp_disk_t *desc)
{
printk(" DISK<N:%d,%s(%d,%d),R:%d,S:%d>\n", desc->number,
- partition_name(mk_kdev(desc->major,desc->minor)),
+ partition_name(MKDEV(desc->major,desc->minor)),
desc->major,desc->minor,desc->raid_disk,desc->state);
}
rdev = (mdk_rdev_t *) kmalloc(sizeof(*rdev), GFP_KERNEL);
if (!rdev) {
- printk(KERN_ERR "md: could not alloc mem for %s!\n", partition_name(to_kdev_t(newdev)));
+ printk(KERN_ERR "md: could not alloc mem for %s!\n", partition_name(newdev));
return ERR_PTR(-ENOMEM);
}
memset(rdev, 0, sizeof(*rdev));
err = lock_rdev(rdev, newdev);
if (err) {
printk(KERN_ERR "md: could not lock %s.\n",
- partition_name(to_kdev_t(newdev)));
+ partition_name(newdev));
goto abort_free;
}
rdev->desc_nr = -1;
start_rdev = md_import_device(startdev, 1);
if (IS_ERR(start_rdev)) {
- printk(KERN_WARNING "md: could not import %s!\n", partition_name(to_kdev_t(startdev)));
+ printk(KERN_WARNING "md: could not import %s!\n", partition_name(startdev));
goto abort;
}
rdev = md_import_device(dev, 1);
if (IS_ERR(rdev)) {
printk(KERN_WARNING "md: could not import %s, trying to run array nevertheless.\n",
- partition_name(to_kdev_t(dev)));
+ partition_name(dev));
continue;
}
list_add(&rdev->same_set, &pending_raid_disks);
return -ENODEV;
printk(KERN_INFO "md: trying to generate %s error in md%d ... \n",
- partition_name(to_kdev_t(dev)), mdidx(mddev));
+ partition_name(dev), mdidx(mddev));
rdev = find_rdev(mddev, dev);
if (!rdev) {
return -ENODEV;
printk(KERN_INFO "md: trying to remove %s from md%d ... \n",
- partition_name(to_kdev_t(dev)), mdidx(mddev));
+ partition_name(dev), mdidx(mddev));
rdev = find_rdev(mddev, dev);
if (!rdev)
return -ENODEV;
printk(KERN_INFO "md: trying to hot-add %s to md%d ... \n",
- partition_name(to_kdev_t(dev)), mdidx(mddev));
+ partition_name(dev), mdidx(mddev));
if (!mddev->pers->hot_add_disk) {
printk(KERN_WARNING "md%d: personality does not support diskops!\n",
err = autostart_array(arg);
if (err) {
printk(KERN_WARNING "md: autostart %s failed!\n",
- partition_name(val_to_kdev(arg)));
+ partition_name(arg));
goto abort;
}
goto done;
rdev = md_import_device(dev,1);
if (IS_ERR(rdev)) {
printk(KERN_ALERT "md: could not import %s!\n",
- partition_name(to_kdev_t(dev)));
+ partition_name(dev));
continue;
}
if (rdev->faulty) {
return md_init();
}
-static void free_device_names(void)
-{
- while (!list_empty(&device_names)) {
- dev_name_t *tmp = list_entry(device_names.next,
- dev_name_t, list);
- list_del(&tmp->list);
- kfree(tmp);
- }
-}
-
-
void cleanup_module(void)
{
md_unregister_thread(md_recovery_thread);
blk_dev[MAJOR_NR].queue = NULL;
blk_clear(MAJOR_NR);
-
- free_device_names();
}
#endif
EXPORT_SYMBOL(md_size);
EXPORT_SYMBOL(register_md_personality);
EXPORT_SYMBOL(unregister_md_personality);
-EXPORT_SYMBOL(partition_name);
EXPORT_SYMBOL(md_error);
EXPORT_SYMBOL(md_sync_acct);
EXPORT_SYMBOL(md_done_sync);
disk->part = NULL;
}
}
+
+struct dev_name {
+ struct list_head list;
+ dev_t dev;
+ char namebuf[64];
+ char *name;
+};
+
+static LIST_HEAD(device_names);
+
+char *partition_name(dev_t dev)
+{
+ struct gendisk *hd;
+ static char nomem [] = "<nomem>";
+ struct dev_name *dname;
+ struct list_head *tmp;
+
+ list_for_each(tmp, &device_names) {
+ dname = list_entry(tmp, struct dev_name, list);
+ if (dname->dev == dev)
+ return dname->name;
+ }
+
+ dname = kmalloc(sizeof(*dname), GFP_KERNEL);
+
+ if (!dname)
+ return nomem;
+ /*
+ * ok, add this new device name to the list
+ */
+ hd = get_gendisk(to_kdev_t(dev));
+ dname->name = NULL;
+ if (hd)
+ dname->name = disk_name(hd, MINOR(dev)-hd->first_minor, dname->namebuf);
+ if (!dname->name) {
+ sprintf(dname->namebuf, "[dev %s]", kdevname(to_kdev_t(dev)));
+ dname->name = dname->namebuf;
+ }
+
+ dname->dev = dev;
+ list_add(&dname->list, &device_names);
+
+ return dname->name;
+}