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