diff options
author | Tyson Nottingham <tgnottingham@gmail.com> | 2018-03-30 00:41:34 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2018-03-30 00:41:34 -0400 |
commit | bc1420ae56266fa2c5a8e452d55f744ca98fe42f (patch) | |
tree | e995c7afc4e7a2a8975517aca7b9c55f8146c635 | |
parent | 6ca06829fba6019913f524772ec189f1dc7ec3c8 (diff) |
ext4: simplify kobject usage
Replace kset with generic kobject provided by kobject_create_and_add(),
since the latter is sufficient.
Signed-off-by: Tyson Nottingham <tgnottingham@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r-- | fs/ext4/sysfs.c | 45 |
1 files changed, 12 insertions, 33 deletions
diff --git a/fs/ext4/sysfs.c b/fs/ext4/sysfs.c index 3b6b3ab57bf6..9ebd26c957c2 100644 --- a/fs/ext4/sysfs.c +++ b/fs/ext4/sysfs.c | |||
@@ -325,13 +325,6 @@ static void ext4_sb_release(struct kobject *kobj) | |||
325 | complete(&sbi->s_kobj_unregister); | 325 | complete(&sbi->s_kobj_unregister); |
326 | } | 326 | } |
327 | 327 | ||
328 | static void ext4_kset_release(struct kobject *kobj) | ||
329 | { | ||
330 | struct kset *kset = container_of(kobj, struct kset, kobj); | ||
331 | |||
332 | kfree(kset); | ||
333 | } | ||
334 | |||
335 | static const struct sysfs_ops ext4_attr_ops = { | 328 | static const struct sysfs_ops ext4_attr_ops = { |
336 | .show = ext4_attr_show, | 329 | .show = ext4_attr_show, |
337 | .store = ext4_attr_store, | 330 | .store = ext4_attr_store, |
@@ -343,19 +336,14 @@ static struct kobj_type ext4_sb_ktype = { | |||
343 | .release = ext4_sb_release, | 336 | .release = ext4_sb_release, |
344 | }; | 337 | }; |
345 | 338 | ||
346 | static struct kobj_type ext4_ktype = { | ||
347 | .sysfs_ops = &ext4_attr_ops, | ||
348 | .release = ext4_kset_release, | ||
349 | }; | ||
350 | |||
351 | static struct kset *ext4_kset; | ||
352 | |||
353 | static struct kobj_type ext4_feat_ktype = { | 339 | static struct kobj_type ext4_feat_ktype = { |
354 | .default_attrs = ext4_feat_attrs, | 340 | .default_attrs = ext4_feat_attrs, |
355 | .sysfs_ops = &ext4_attr_ops, | 341 | .sysfs_ops = &ext4_attr_ops, |
356 | .release = (void (*)(struct kobject *))kfree, | 342 | .release = (void (*)(struct kobject *))kfree, |
357 | }; | 343 | }; |
358 | 344 | ||
345 | static struct kobject *ext4_root; | ||
346 | |||
359 | static struct kobject *ext4_feat; | 347 | static struct kobject *ext4_feat; |
360 | 348 | ||
361 | #define PROC_FILE_SHOW_DEFN(name) \ | 349 | #define PROC_FILE_SHOW_DEFN(name) \ |
@@ -393,9 +381,8 @@ int ext4_register_sysfs(struct super_block *sb) | |||
393 | const struct ext4_proc_files *p; | 381 | const struct ext4_proc_files *p; |
394 | int err; | 382 | int err; |
395 | 383 | ||
396 | sbi->s_kobj.kset = ext4_kset; | ||
397 | init_completion(&sbi->s_kobj_unregister); | 384 | init_completion(&sbi->s_kobj_unregister); |
398 | err = kobject_init_and_add(&sbi->s_kobj, &ext4_sb_ktype, NULL, | 385 | err = kobject_init_and_add(&sbi->s_kobj, &ext4_sb_ktype, ext4_root, |
399 | "%s", sb->s_id); | 386 | "%s", sb->s_id); |
400 | if (err) { | 387 | if (err) { |
401 | kobject_put(&sbi->s_kobj); | 388 | kobject_put(&sbi->s_kobj); |
@@ -431,26 +418,18 @@ int __init ext4_init_sysfs(void) | |||
431 | { | 418 | { |
432 | int ret; | 419 | int ret; |
433 | 420 | ||
434 | ext4_kset = kzalloc(sizeof(*ext4_kset), GFP_KERNEL); | 421 | ext4_root = kobject_create_and_add("ext4", fs_kobj); |
435 | if (!ext4_kset) | 422 | if (!ext4_root) |
436 | return -ENOMEM; | 423 | return -ENOMEM; |
437 | 424 | ||
438 | kobject_set_name(&ext4_kset->kobj, "ext4"); | ||
439 | ext4_kset->kobj.parent = fs_kobj; | ||
440 | ext4_kset->kobj.ktype = &ext4_ktype; | ||
441 | ret = kset_register(ext4_kset); | ||
442 | if (ret) | ||
443 | goto kset_err; | ||
444 | |||
445 | ext4_feat = kzalloc(sizeof(*ext4_feat), GFP_KERNEL); | 425 | ext4_feat = kzalloc(sizeof(*ext4_feat), GFP_KERNEL); |
446 | if (!ext4_feat) { | 426 | if (!ext4_feat) { |
447 | ret = -ENOMEM; | 427 | ret = -ENOMEM; |
448 | goto kset_err; | 428 | goto root_err; |
449 | } | 429 | } |
450 | 430 | ||
451 | ext4_feat->kset = ext4_kset; | ||
452 | ret = kobject_init_and_add(ext4_feat, &ext4_feat_ktype, | 431 | ret = kobject_init_and_add(ext4_feat, &ext4_feat_ktype, |
453 | NULL, "features"); | 432 | ext4_root, "features"); |
454 | if (ret) | 433 | if (ret) |
455 | goto feat_err; | 434 | goto feat_err; |
456 | 435 | ||
@@ -460,9 +439,9 @@ int __init ext4_init_sysfs(void) | |||
460 | feat_err: | 439 | feat_err: |
461 | kobject_put(ext4_feat); | 440 | kobject_put(ext4_feat); |
462 | ext4_feat = NULL; | 441 | ext4_feat = NULL; |
463 | kset_err: | 442 | root_err: |
464 | kset_unregister(ext4_kset); | 443 | kobject_put(ext4_root); |
465 | ext4_kset = NULL; | 444 | ext4_root = NULL; |
466 | return ret; | 445 | return ret; |
467 | } | 446 | } |
468 | 447 | ||
@@ -470,8 +449,8 @@ void ext4_exit_sysfs(void) | |||
470 | { | 449 | { |
471 | kobject_put(ext4_feat); | 450 | kobject_put(ext4_feat); |
472 | ext4_feat = NULL; | 451 | ext4_feat = NULL; |
473 | kset_unregister(ext4_kset); | 452 | kobject_put(ext4_root); |
474 | ext4_kset = NULL; | 453 | ext4_root = NULL; |
475 | remove_proc_entry(proc_dirname, NULL); | 454 | remove_proc_entry(proc_dirname, NULL); |
476 | ext4_proc_root = NULL; | 455 | ext4_proc_root = NULL; |
477 | } | 456 | } |