diff mbox

[PoC,1/7] Add kset to file_system_type

Message ID 1461895282-4941-2-git-send-email-rgoldwyn@suse.de (mailing list archive)
State New, archived
Headers show

Commit Message

Goldwyn Rodrigues April 29, 2016, 2:01 a.m. UTC
From: Goldwyn Rodrigues <rgoldwyn@suse.com>

Most of the filesystems use kset, even though they don't use
the functions/features associated with kset.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
---
 fs/filesystems.c   | 3 +++
 include/linux/fs.h | 4 +++-
 2 files changed, 6 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/fs/filesystems.c b/fs/filesystems.c
index c5618db..64560a2 100644
--- a/fs/filesystems.c
+++ b/fs/filesystems.c
@@ -81,6 +81,8 @@  int register_filesystem(struct file_system_type * fs)
 	else
 		*p = fs;
 	write_unlock(&file_systems_lock);
+	if (!res && (fs->fs_flags & FS_CREATE_SYSFS))
+		fs->kset = kset_create_and_add(fs->name, NULL, fs_kobj);
 	return res;
 }
 
@@ -109,6 +111,7 @@  int unregister_filesystem(struct file_system_type * fs)
 			*tmp = fs->next;
 			fs->next = NULL;
 			write_unlock(&file_systems_lock);
+			kset_unregister(fs->kset);
 			synchronize_rcu();
 			return 0;
 		}
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 70e61b5..cfea7b4 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -35,6 +35,7 @@ 
 
 #include <asm/byteorder.h>
 #include <uapi/linux/fs.h>
+#include <linux/kobject.h>
 
 struct backing_dev_info;
 struct bdi_writeback;
@@ -42,7 +43,6 @@  struct export_operations;
 struct hd_geometry;
 struct iovec;
 struct kiocb;
-struct kobject;
 struct pipe_inode_info;
 struct poll_table_struct;
 struct kstatfs;
@@ -1980,6 +1980,7 @@  struct file_system_type {
 #define FS_USERNS_MOUNT		8	/* Can be mounted by userns root */
 #define FS_USERNS_DEV_MOUNT	16 /* A userns mount does not imply MNT_NODEV */
 #define FS_USERNS_VISIBLE	32	/* FS must already be visible */
+#define FS_CREATE_SYSFS		128	/* Create sysfs entries, temporary flag to explain RFC */
 #define FS_RENAME_DOES_D_MOVE	32768	/* FS will handle d_move() during rename() internally. */
 	struct dentry *(*mount) (struct file_system_type *, int,
 		       const char *, void *);
@@ -1996,6 +1997,7 @@  struct file_system_type {
 	struct lock_class_key i_lock_key;
 	struct lock_class_key i_mutex_key;
 	struct lock_class_key i_mutex_dir_key;
+	struct kset *kset;
 };
 
 #define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)