| .. | .. |
|---|
| 487 | 487 | complete(&sbi->s_kobj_unregister); |
|---|
| 488 | 488 | } |
|---|
| 489 | 489 | |
|---|
| 490 | +static void ext4_feat_release(struct kobject *kobj) |
|---|
| 491 | +{ |
|---|
| 492 | + kfree(kobj); |
|---|
| 493 | +} |
|---|
| 494 | + |
|---|
| 490 | 495 | static const struct sysfs_ops ext4_attr_ops = { |
|---|
| 491 | 496 | .show = ext4_attr_show, |
|---|
| 492 | 497 | .store = ext4_attr_store, |
|---|
| .. | .. |
|---|
| 501 | 506 | static struct kobj_type ext4_feat_ktype = { |
|---|
| 502 | 507 | .default_groups = ext4_feat_groups, |
|---|
| 503 | 508 | .sysfs_ops = &ext4_attr_ops, |
|---|
| 504 | | - .release = (void (*)(struct kobject *))kfree, |
|---|
| 509 | + .release = ext4_feat_release, |
|---|
| 505 | 510 | }; |
|---|
| 506 | 511 | |
|---|
| 507 | 512 | static struct kobject *ext4_root; |
|---|
| .. | .. |
|---|
| 534 | 539 | ext4_fc_info_show, sb); |
|---|
| 535 | 540 | proc_create_seq_data("mb_groups", S_IRUGO, sbi->s_proc, |
|---|
| 536 | 541 | &ext4_mb_seq_groups_ops, sb); |
|---|
| 542 | + proc_create_single_data("mb_stats", 0444, sbi->s_proc, |
|---|
| 543 | + ext4_seq_mb_stats_show, sb); |
|---|
| 537 | 544 | } |
|---|
| 538 | 545 | return 0; |
|---|
| 539 | 546 | } |
|---|