Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 39743
b: refs/heads/master
c: eee44cc
h: refs/heads/master
i:
  39741: ac93263
  39739: 1507dbb
  39735: 4955a0d
  39727: c3ff6dd
  39711: ae1990a
  39679: 1d66859
v: v3
  • Loading branch information
Jeff Garzik authored and Linus Torvalds committed Oct 17, 2006
1 parent c1891f2 commit 7224036
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6b5f29675c6a1041aefc147271508bd56cf2b761
refs/heads/master: eee44cca665aa1a5663e6a00c2bdfc275739dac5
50 changes: 42 additions & 8 deletions trunk/fs/partitions/check.c
Original file line number Diff line number Diff line change
Expand Up @@ -376,18 +376,48 @@ static char *make_block_name(struct gendisk *disk)
return name;
}

static void disk_sysfs_symlinks(struct gendisk *disk)
static int disk_sysfs_symlinks(struct gendisk *disk)
{
struct device *target = get_device(disk->driverfs_dev);
int err;
char *disk_name = NULL;

if (target) {
char *disk_name = make_block_name(disk);
sysfs_create_link(&disk->kobj,&target->kobj,"device");
if (disk_name) {
sysfs_create_link(&target->kobj,&disk->kobj,disk_name);
kfree(disk_name);
disk_name = make_block_name(disk);
if (!disk_name) {
err = -ENOMEM;
goto err_out;
}

err = sysfs_create_link(&disk->kobj, &target->kobj, "device");
if (err)
goto err_out_disk_name;

err = sysfs_create_link(&target->kobj, &disk->kobj, disk_name);
if (err)
goto err_out_dev_link;
}
sysfs_create_link(&disk->kobj, &block_subsys.kset.kobj, "subsystem");

err = sysfs_create_link(&disk->kobj, &block_subsys.kset.kobj,
"subsystem");
if (err)
goto err_out_disk_name_lnk;

kfree(disk_name);

return 0;

err_out_disk_name_lnk:
if (target) {
sysfs_remove_link(&target->kobj, disk_name);
err_out_dev_link:
sysfs_remove_link(&disk->kobj, "device");
err_out_disk_name:
kfree(disk_name);
err_out:
put_device(target);
}
return err;
}

/* Not exported, helper to add_disk(). */
Expand All @@ -406,7 +436,11 @@ void register_disk(struct gendisk *disk)
*s = '!';
if ((err = kobject_add(&disk->kobj)))
return;
disk_sysfs_symlinks(disk);
err = disk_sysfs_symlinks(disk);
if (err) {
kobject_del(&disk->kobj);
return;
}
disk_sysfs_add_subdirs(disk);

/* No minors to use for partitions */
Expand Down

0 comments on commit 7224036

Please sign in to comment.