This patch modifies md driver to create symlinks to/from
underlying devices.
--
Jun'ichi Nomura, NEC Solutions (America), Inc.
Exporting stacked device relationship to sysfs (md)
Signed-off-by: Jun'ichi Nomura <[email protected]>
--- linux-2.6.15.orig/include/linux/raid/md_k.h 2006-01-02 22:21:10.000000000 -0500
+++ linux-2.6.15/include/linux/raid/md_k.h 2006-02-16 15:36:22.000000000 -0500
@@ -155,6 +155,7 @@ struct mddev_s
struct gendisk *gendisk;
struct kobject kobj;
+ struct kobject slave_dir;
/* Superblock information */
int major_version,
md.c linux-2.6.15/drivers/md/md.c
--- linux-2.6.15.orig/drivers/md/md.c 2006-01-02 22:21:10.000000000 -0500
+++ linux-2.6.15/drivers/md/md.c 2006-02-16 17:44:49.000000000 -0500
@@ -182,6 +182,7 @@ static void mddev_put(mddev_t *mddev)
return;
if (!mddev->raid_disks && list_empty(&mddev->disks)) {
list_del(&mddev->all_mddevs);
+ stackdev_clear(&mddev->slave_dir);
blk_put_queue(mddev->queue);
kobject_unregister(&mddev->kobj);
}
@@ -1226,6 +1227,7 @@ static int bind_rdev_to_array(mdk_rdev_t
else
ko = &rdev->bdev->bd_disk->kobj;
sysfs_create_link(&rdev->kobj, ko, "block");
+ stackdev_link(rdev->bdev, &mddev->slave_dir, &mddev->gendisk->kobj);
return 0;
}
@@ -1236,6 +1238,8 @@ static void unbind_rdev_from_array(mdk_r
MD_BUG();
return;
}
+ stackdev_unlink(rdev->bdev, &rdev->mddev->slave_dir,
+ &rdev->mddev->gendisk->kobj);
list_del_init(&rdev->same_set);
printk(KERN_INFO "md: unbind<%s>\n", bdevname(rdev->bdev,b));
rdev->mddev = NULL;
@@ -1924,6 +1928,7 @@ static struct kobject *md_probe(dev_t de
snprintf(mddev->kobj.name, KOBJ_NAME_LEN, "%s", "md");
mddev->kobj.ktype = &md_ktype;
kobject_register(&mddev->kobj);
+ stackdev_init(&mddev->slave_dir, &mddev->gendisk->kobj);
return NULL;
}
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]