diff options
Diffstat (limited to 'fs/exofs/super.c')
-rw-r--r-- | fs/exofs/super.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/fs/exofs/super.c b/fs/exofs/super.c index 735ca06430ac..433783624d10 100644 --- a/fs/exofs/super.c +++ b/fs/exofs/super.c | |||
@@ -472,6 +472,7 @@ static void exofs_put_super(struct super_block *sb) | |||
472 | _exofs_print_device("Unmounting", NULL, ore_comp_dev(&sbi->oc, 0), | 472 | _exofs_print_device("Unmounting", NULL, ore_comp_dev(&sbi->oc, 0), |
473 | sbi->one_comp.obj.partition); | 473 | sbi->one_comp.obj.partition); |
474 | 474 | ||
475 | exofs_sysfs_sb_del(sbi); | ||
475 | bdi_destroy(&sbi->bdi); | 476 | bdi_destroy(&sbi->bdi); |
476 | exofs_free_sbi(sbi); | 477 | exofs_free_sbi(sbi); |
477 | sb->s_fs_info = NULL; | 478 | sb->s_fs_info = NULL; |
@@ -632,6 +633,12 @@ static int exofs_read_lookup_dev_table(struct exofs_sb_info *sbi, | |||
632 | memcpy(&sbi->oc.ods[numdevs], &sbi->oc.ods[0], | 633 | memcpy(&sbi->oc.ods[numdevs], &sbi->oc.ods[0], |
633 | (numdevs - 1) * sizeof(sbi->oc.ods[0])); | 634 | (numdevs - 1) * sizeof(sbi->oc.ods[0])); |
634 | 635 | ||
636 | /* create sysfs subdir under which we put the device table | ||
637 | * And cluster layout. A Superblock is identified by the string: | ||
638 | * "dev[0].osdname"_"pid" | ||
639 | */ | ||
640 | exofs_sysfs_sb_add(sbi, &dt->dt_dev_table[0]); | ||
641 | |||
635 | for (i = 0; i < numdevs; i++) { | 642 | for (i = 0; i < numdevs; i++) { |
636 | struct exofs_fscb fscb; | 643 | struct exofs_fscb fscb; |
637 | struct osd_dev_info odi; | 644 | struct osd_dev_info odi; |
@@ -657,6 +664,7 @@ static int exofs_read_lookup_dev_table(struct exofs_sb_info *sbi, | |||
657 | eds[i].ored.od = fscb_od; | 664 | eds[i].ored.od = fscb_od; |
658 | ++sbi->oc.numdevs; | 665 | ++sbi->oc.numdevs; |
659 | fscb_od = NULL; | 666 | fscb_od = NULL; |
667 | exofs_sysfs_odev_add(&eds[i], sbi); | ||
660 | continue; | 668 | continue; |
661 | } | 669 | } |
662 | 670 | ||
@@ -682,6 +690,7 @@ static int exofs_read_lookup_dev_table(struct exofs_sb_info *sbi, | |||
682 | odi.osdname); | 690 | odi.osdname); |
683 | goto out; | 691 | goto out; |
684 | } | 692 | } |
693 | exofs_sysfs_odev_add(&eds[i], sbi); | ||
685 | 694 | ||
686 | /* TODO: verify other information is correct and FS-uuid | 695 | /* TODO: verify other information is correct and FS-uuid |
687 | * matches. Benny what did you say about device table | 696 | * matches. Benny what did you say about device table |
@@ -745,7 +754,6 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent) | |||
745 | sbi->one_comp.obj.partition = opts->pid; | 754 | sbi->one_comp.obj.partition = opts->pid; |
746 | sbi->one_comp.obj.id = 0; | 755 | sbi->one_comp.obj.id = 0; |
747 | exofs_make_credential(sbi->one_comp.cred, &sbi->one_comp.obj); | 756 | exofs_make_credential(sbi->one_comp.cred, &sbi->one_comp.obj); |
748 | sbi->oc.numdevs = 1; | ||
749 | sbi->oc.single_comp = EC_SINGLE_COMP; | 757 | sbi->oc.single_comp = EC_SINGLE_COMP; |
750 | sbi->oc.comps = &sbi->one_comp; | 758 | sbi->oc.comps = &sbi->one_comp; |
751 | 759 | ||
@@ -804,6 +812,7 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent) | |||
804 | goto free_sbi; | 812 | goto free_sbi; |
805 | 813 | ||
806 | ore_comp_set_dev(&sbi->oc, 0, od); | 814 | ore_comp_set_dev(&sbi->oc, 0, od); |
815 | sbi->oc.numdevs = 1; | ||
807 | } | 816 | } |
808 | 817 | ||
809 | __sbi_read_stats(sbi); | 818 | __sbi_read_stats(sbi); |
@@ -844,6 +853,7 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent) | |||
844 | goto free_sbi; | 853 | goto free_sbi; |
845 | } | 854 | } |
846 | 855 | ||
856 | exofs_sysfs_dbg_print(); | ||
847 | _exofs_print_device("Mounting", opts->dev_name, | 857 | _exofs_print_device("Mounting", opts->dev_name, |
848 | ore_comp_dev(&sbi->oc, 0), | 858 | ore_comp_dev(&sbi->oc, 0), |
849 | sbi->one_comp.obj.partition); | 859 | sbi->one_comp.obj.partition); |
@@ -1023,6 +1033,9 @@ static int __init init_exofs(void) | |||
1023 | if (err) | 1033 | if (err) |
1024 | goto out_d; | 1034 | goto out_d; |
1025 | 1035 | ||
1036 | /* We don't fail if sysfs creation failed */ | ||
1037 | exofs_sysfs_init(); | ||
1038 | |||
1026 | return 0; | 1039 | return 0; |
1027 | out_d: | 1040 | out_d: |
1028 | destroy_inodecache(); | 1041 | destroy_inodecache(); |
@@ -1032,6 +1045,7 @@ out: | |||
1032 | 1045 | ||
1033 | static void __exit exit_exofs(void) | 1046 | static void __exit exit_exofs(void) |
1034 | { | 1047 | { |
1048 | exofs_sysfs_uninit(); | ||
1035 | unregister_filesystem(&exofs_type); | 1049 | unregister_filesystem(&exofs_type); |
1036 | destroy_inodecache(); | 1050 | destroy_inodecache(); |
1037 | } | 1051 | } |