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 <j-nomura@xxxxxxxxxxxxx> --- 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; }
-- dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel