This patch switches the aufs_subsys from a subsystem to a kset. It also
 switches sysaufs_sbinfo to use the kset as well.

 This was on the TODO list and allows us to eliminate a number of ugly
 macros mapping to/from ksets and subsystems on different versions.

Signed-off-by: Jeff Mahoney <[EMAIL PROTECTED]>
---
 fs/aufs/sysaufs.c |   81 ++++++++++++++++++++----------------------------------
 fs/aufs/sysaufs.h |   25 ----------------
 2 files changed, 32 insertions(+), 74 deletions(-)

--- a/fs/aufs/sysaufs.c
+++ b/fs/aufs/sysaufs.c
@@ -34,7 +34,8 @@
 DEFINE_MUTEX(au_sbilist_mtx);
 LIST_HEAD(au_sbilist);
 
-static decl_subsys(aufs, NULL, NULL);
+static struct kset aufs_subsys;
+
 enum {
        Sbi, Stat, Config,
 #ifdef CONFIG_AUFS_DEBUG
@@ -43,9 +44,8 @@ enum {
        _Last
 };
 
-static ssize_t config_show(au_subsys_t *subsys, char *buf)
+static ssize_t config_show(struct kset *kset, char *buf)
 {
-       //struct kset *kset = &au_subsys_to_kset(*subsys);
 #define conf_bool(name)        "CONFIG_AUFS_" #name "=y\n"
        static const char opt[] =
 #ifdef CONFIG_AUFS
@@ -139,9 +139,8 @@ static ssize_t config_show(au_subsys_t *
                return -EFBIG;
 }
 
-static ssize_t stat_show(au_subsys_t *subsys, char *buf)
+static ssize_t stat_show(struct kset *kset, char *buf)
 {
-       //struct kset *kset = &au_subsys_to_kset(*subsys);
        char *p = buf;
        const char *end = buf + PAGE_SIZE;
        int i;
@@ -159,9 +158,8 @@ static ssize_t stat_show(au_subsys_t *su
                return -EFBIG;
 }
 
-static ssize_t sbi_show(au_subsys_t *subsys, char *buf)
+static ssize_t sbi_show(struct kset *kset, char *buf)
 {
-       //struct kset *kset = &au_subsys_to_kset(*subsys);
        char *p = buf;
        const char *end = buf + PAGE_SIZE;
        struct aufs_sbinfo *sbinfo;
@@ -180,16 +178,13 @@ static ssize_t sbi_show(au_subsys_t *sub
 }
 
 #ifdef CONFIG_AUFS_DEBUG
-static ssize_t debug_show(au_subsys_t *subsys, char *buf)
+static ssize_t debug_show(struct kset *kset, char *buf)
 {
-       //struct kset *kset = &au_subsys_to_kset(*subsys);
        return sprintf(buf, "%d\n", au_test_debug());
 }
 
-static ssize_t debug_store(au_subsys_t *subsys, const char *buf, size_t sz)
+static ssize_t debug_store(struct kset *kset, const char *buf, size_t sz)
 {
-       //struct kset *kset = &au_subsys_to_kset(*subsys);
-
        LKTRTrace("%.*s\n", sz, buf);
 
        if (unlikely(!sz || (*buf != '0' && *buf != '1')))
@@ -336,7 +331,7 @@ static struct super_block *find_sb_lock(
 
        sb = NULL;
        list_for_each_entry(sbinfo, &au_sbilist, si_list) {
-               if (&au_subsys_to_kset(sbinfo->si_sa->subsys).kobj != kobj)
+               if (&sbinfo->si_sa->kset.kobj != kobj)
                        continue;
                sb = sbinfo->si_mnt->mnt_sb;
                si_read_lock(sb, !AuLock_FLUSH);
@@ -481,8 +476,7 @@ void sysaufs_brs_del(struct super_block 
                        continue;
 
                sabr->added = 0;
-               sysfs_remove_file(&au_subsys_to_kset(sa->subsys).kobj,
-                                 &sabr->attr);
+               sysfs_remove_file(&sa->kset.kobj, &sabr->attr);
                sysaufs_br_put(br);
                /* for older sysfs */
                module_put(THIS_MODULE);
@@ -516,8 +510,7 @@ void sysaufs_brs_add(struct super_block 
                sabr->attr.owner = THIS_MODULE;
                /* for older sysfs */
                BUG_ON(!try_module_get(THIS_MODULE));
-               err = sysfs_create_file(&au_subsys_to_kset(sa->subsys).kobj,
-                                       &sabr->attr);
+               err = sysfs_create_file(&sa->kset.kobj, &sabr->attr);
                if (!err)
                        sabr->added = 1;
                else
@@ -569,22 +562,20 @@ void sysaufs_sbinfo_add(struct super_blo
        AuTraceEnter();
        MtxMustLock(&au_sbilist_mtx);
 
-       err = kobject_set_name(&au_subsys_to_kset(sa->subsys).kobj,
-                              "sbi_%p", sbinfo);
+       err = kobject_set_name(&sa->kset.kobj, "sbi_%p", sbinfo);
        if (unlikely(err))
                goto out;
-       name = kobject_name(&au_subsys_to_kset(sa->subsys).kobj);
-       subsys_get(&aufs_subsys);
-       kobj_set_kset_s(&au_subsys_to_kset(sa->subsys), aufs_subsys);
-       //au_subsys_to_kset(sa->subsys).kobj.ktype = &sysaufs_ktype;
-       err = subsystem_register(&sa->subsys);
+       name = kobject_name(&sa->kset.kobj);
+       kobj_set_kset_s(&sa->kset, aufs_subsys);
+       //sa->kset.kobj.ktype = &sysaufs_ktype;
+       err = kset_register(&sa->kset);
        if (unlikely(err))
-               goto out_put;
+               goto out;
 #if 1
-       if (au_subsys_to_kset(sa->subsys).kobj.ktype)
-               sysaufs_sbi_ktype = *(au_subsys_to_kset(sa->subsys).kobj.ktype);
+       if (sa->kset.kobj.ktype)
+               sysaufs_sbi_ktype = *(sa->kset.kobj.ktype);
        sysaufs_sbi_ktype.sysfs_ops = &sysaufs_sbi_ops;
-       au_subsys_to_kset(sa->subsys).kobj.ktype = &sysaufs_sbi_ktype;
+       sa->kset.kobj.ktype = &sysaufs_sbi_ktype;
 #endif
 
        for (i = 0; i < SysaufsSb_Last; i++) {
@@ -593,8 +584,7 @@ void sysaufs_sbinfo_add(struct super_blo
                sa->attr[i].owner = THIS_MODULE;
                /* for older sysfs */
                BUG_ON(!try_module_get(THIS_MODULE));
-               err = sysfs_create_file(&au_subsys_to_kset(sa->subsys).kobj,
-                                       sa->attr + i);
+               err = sysfs_create_file(&sa->kset.kobj, sa->attr + i);
                if (unlikely(err))
                        goto out_reg;
        }
@@ -605,14 +595,11 @@ void sysaufs_sbinfo_add(struct super_blo
 
  out_reg:
        for (; i >= 0; i--) {
-               sysfs_remove_file(&au_subsys_to_kset(sa->subsys).kobj,
-                                 sa->attr + i);
+               sysfs_remove_file(&sa->kset.kobj, sa->attr + i);
                /* for older sysfs */
                module_put(THIS_MODULE);
        }
-       subsystem_unregister(&sa->subsys);
- out_put:
-       subsys_put(&aufs_subsys);
+       kset_unregister(&sa->kset);
  out:
        if (!err)
                sysaufs_sbinfo_get(sb);
@@ -631,14 +618,12 @@ void sysaufs_sbinfo_del(struct super_blo
 
        sysaufs_brs_del(sb);
        for (i = 0; i < SysaufsSb_Last; i++) {
-               sysfs_remove_file(&au_subsys_to_kset(sa->subsys).kobj,
-                                 sa->attr + i);
+               sysfs_remove_file(&sa->kset.kobj, sa->attr + i);
                /* for older sysfs */
                module_put(THIS_MODULE);
        }
        sa->added = 0;
-       subsystem_unregister(&sa->subsys);
-       subsys_put(&aufs_subsys);
+       kset_unregister(&sa->kset);
        sysaufs_sbinfo_put(sb);
 }
 
@@ -651,19 +636,17 @@ int __init sysaufs_init(void)
        for (i = 0; i < _Last; i++)
                sysaufs_attr[i] = &sysaufs_entry[i].attr;
 
-       subsys_get(&fs_subsys);
-       kobj_set_kset_s(&au_subsys_to_kset(aufs_subsys), fs_subsys);
-       err = subsystem_register(&aufs_subsys);
+       kobj_set_kset_s(&aufs_subsys, fs_subsys);
+       kobject_set_name(&aufs_subsys.kobj, "aufs");
+       err = kset_register(&aufs_subsys);
        if (unlikely(err))
                goto out_put;
-       err = sysfs_create_group(&au_subsys_to_kset(aufs_subsys).kobj,
-                                &sysaufs_attr_group);
+       err = sysfs_create_group(&aufs_subsys.kobj, &sysaufs_attr_group);
        if (!err)
                return err; /* success */
 
-       subsystem_unregister(&aufs_subsys);
+       kset_unregister(&aufs_subsys);
  out_put:
-       subsys_put(&fs_subsys);
        AuTraceErr(err);
        return err;
 }
@@ -671,8 +654,6 @@ int __init sysaufs_init(void)
 void sysaufs_fin(void)
 {
        AuDebugOn(!list_empty(&au_sbilist));
-       sysfs_remove_group(&au_subsys_to_kset(aufs_subsys).kobj,
-                          &sysaufs_attr_group);
-       subsystem_unregister(&aufs_subsys);
-       subsys_put(&fs_subsys);
+       sysfs_remove_group(&aufs_subsys.kobj, &sysaufs_attr_group);
+       kset_unregister(&aufs_subsys);
 }
--- a/fs/aufs/sysaufs.h
+++ b/fs/aufs/sysaufs.h
@@ -33,28 +33,6 @@
 
 /* ---------------------------------------------------------------------- */
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
-typedef struct kset au_subsys_t;
-#define au_subsys_to_kset(subsys) (subsys)
-#else
-typedef struct subsystem au_subsys_t;
-#define au_subsys_to_kset(subsys) ((subsys).kset)
-#endif
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24)
-static inline struct kset *subsys_get(struct kset *s)
-{
-       return kset_get(s);
-}
-
-static inline void subsys_put(struct kset *s)
-{
-       kset_put(s);
-}
-#endif
-
-/* ---------------------------------------------------------------------- */
-
 /* entries under sysfs per super block */
 enum {
        SysaufsSb_XINO,
@@ -67,8 +45,7 @@ enum {
 };
 
 struct sysaufs_sbinfo {
-       //todo: try kset directly
-       au_subsys_t             subsys;
+       struct kset             kset;
        struct attribute        attr[SysaufsSb_Last];
        struct kref             ref;
        int                     added;

-- 
Jeff Mahoney
SUSE Labs


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

Reply via email to