Move initialization (CKRM RCFS rewrite)
 
Move filesystem initialization code to inode.c and add some printk macros

Signed-off-by: Shailabh Nagar <[EMAIL PROTECTED]>

 fs/rcfs/inode.c      |   80 ++++++++++++++++++++++++++++++++++++++++++++++++
 fs/rcfs/super.c      |   84 ---------------------------------------------------
 include/linux/rcfs.h |   25 +++++++++------
 3 files changed, 95 insertions(+), 94 deletions(-)

Index: linux-2.6.12/fs/rcfs/inode.c
===================================================================
--- linux-2.6.12.orig/fs/rcfs/inode.c	2005-08-09 15:30:16.391408848 -0400
+++ linux-2.6.12/fs/rcfs/inode.c	2005-08-09 15:30:16.463397904 -0400
@@ -158,3 +158,83 @@ int rcfs_delete_internal(struct dentry *
 struct inode_operations rcfs_file_inode_operations = {
 	.getattr = simple_getattr,
 };
+
+/******************************
+ *
+ * Generic inode/dentry helpers
+ *
+ ******************************/
+
+static kmem_cache_t *rcfs_inode_cachep;
+
+static void rcfs_init_once(void *foo, kmem_cache_t * cachep, unsigned long flags)
+{
+	struct rcfs_inode_info *ri = (struct rcfs_inode_info *)foo;
+
+	if ((flags & (SLAB_CTOR_VERIFY | SLAB_CTOR_CONSTRUCTOR)) ==
+	    SLAB_CTOR_CONSTRUCTOR)
+		inode_init_once(&ri->vfs_inode);
+}
+
+int rcfs_init_inodecache(void)
+{
+	rcfs_inode_cachep = kmem_cache_create("rcfs_inode_cache",
+					      sizeof(struct rcfs_inode_info),
+					      0,
+					      SLAB_HWCACHE_ALIGN |
+					      SLAB_RECLAIM_ACCOUNT,
+					      rcfs_init_once, NULL);
+	if (rcfs_inode_cachep == NULL)
+		return -ENOMEM;
+	return 0;
+}
+
+void rcfs_destroy_inodecache(void)
+{
+	if (kmem_cache_destroy(rcfs_inode_cachep))
+		info("inode cache not freed\n");
+}
+
+
+static struct file_system_type rcfs_fs_type = {
+	.owner =	THIS_MODULE,
+	.name =		"rcfs",
+	.get_sb =	rcfs_get_sb,
+	.kill_sb =	rcfs_kill_sb,
+};
+
+static int __init init_rcfs_fs(void)
+{
+	int ret;
+
+	ret = register_filesystem(&rcfs_fs_type);
+	if (ret)
+		goto out;
+
+	ret = rcfs_init_inodecache();
+	if (ret)
+		goto out_register;
+
+	/*
+	 * Due to tight coupling of this module with ckrm
+	 * do not allow this module to be removed.
+	 */
+	try_module_get(THIS_MODULE);
+	return ret;
+
+out_register:
+	unregister_filesystem(&rcfs_fs_type);
+out:
+	return ret;
+}
+
+static void __exit exit_rcfs_fs(void)
+{
+	rcfs_destroy_inodecache();
+	unregister_filesystem(&rcfs_fs_type);
+}
+
+module_init(init_rcfs_fs)
+module_exit(exit_rcfs_fs)
+
+MODULE_LICENSE("GPL");
Index: linux-2.6.12/fs/rcfs/super.c
===================================================================
--- linux-2.6.12.orig/fs/rcfs/super.c	2005-08-09 15:30:16.391408848 -0400
+++ linux-2.6.12/fs/rcfs/super.c	2005-08-09 15:30:16.464397752 -0400
@@ -34,10 +34,6 @@
 
 static kmem_cache_t *rcfs_inode_cachep;
 
-inline struct rcfs_inode_info *rcfs_get_inode_info(struct inode *inode)
-{
-	return container_of(inode, struct rcfs_inode_info, vfs_inode);
-}
 
 static struct inode *rcfs_alloc_inode(struct super_block *sb)
 {
@@ -58,37 +54,6 @@ static void rcfs_destroy_inode(struct in
 	kmem_cache_free(rcfs_inode_cachep, ri);
 }
 
-static void
-rcfs_init_once(void *foo, kmem_cache_t * cachep, unsigned long flags)
-{
-	struct rcfs_inode_info *ri = (struct rcfs_inode_info *)foo;
-
-	if ((flags & (SLAB_CTOR_VERIFY | SLAB_CTOR_CONSTRUCTOR)) ==
-	    SLAB_CTOR_CONSTRUCTOR)
-		inode_init_once(&ri->vfs_inode);
-}
-
-int rcfs_init_inodecache(void)
-{
-	rcfs_inode_cachep = kmem_cache_create("rcfs_inode_cache",
-					      sizeof(struct rcfs_inode_info),
-					      0,
-					      SLAB_HWCACHE_ALIGN |
-					      SLAB_RECLAIM_ACCOUNT,
-					      rcfs_init_once, NULL);
-	if (rcfs_inode_cachep == NULL)
-		return -ENOMEM;
-	return 0;
-}
-
-void rcfs_destroy_inodecache(void)
-{
-	pr_debug("destroy inodecache was called\n");
-	if (kmem_cache_destroy(rcfs_inode_cachep))
-		printk(KERN_INFO
-		       "rcfs_inode_cache: not all structures were freed\n");
-}
-
 struct super_operations rcfs_super_ops = {
 	.alloc_inode = rcfs_alloc_inode,
 	.destroy_inode = rcfs_destroy_inode,
@@ -240,52 +205,3 @@ void rcfs_kill_sb(struct super_block *sb
 	generic_shutdown_super(sb);
 }
 
-static struct file_system_type rcfs_fs_type = {
-	.name = "rcfs",
-	.get_sb = rcfs_get_sb,
-	.kill_sb = rcfs_kill_sb,
-};
-
-struct rcfs_functions my_rcfs_fn = {
-	.mkroot = rcfs_mkroot,
-	.rmroot = rcfs_rmroot,
-	.register_classtype = rcfs_register_classtype,
-	.deregister_classtype = rcfs_deregister_classtype,
-};
-
-extern struct rcfs_functions rcfs_fn;
-
-static int __init init_rcfs_fs(void)
-{
-	int ret;
-
-	ret = register_filesystem(&rcfs_fs_type);
-	if (ret)
-		goto init_register_err;
-	ret = rcfs_init_inodecache();
-	if (ret)
-		goto init_cache_err;
-	rcfs_fn = my_rcfs_fn;
-	/*
-	 * Due to tight coupling of this module with ckrm
-	 * do not allow this module to be removed.
-	 */
-	try_module_get(THIS_MODULE);
-	return ret;
-
-init_cache_err:
-	unregister_filesystem(&rcfs_fs_type);
-init_register_err:
-	return ret;
-}
-
-static void __exit exit_rcfs_fs(void)
-{
-	rcfs_destroy_inodecache();
-	unregister_filesystem(&rcfs_fs_type);
-}
-
-module_init(init_rcfs_fs)
-module_exit(exit_rcfs_fs)
-
-MODULE_LICENSE("GPL");
Index: linux-2.6.12/include/linux/rcfs.h
===================================================================
--- linux-2.6.12.orig/include/linux/rcfs.h	2005-08-09 15:30:16.391408848 -0400
+++ linux-2.6.12/include/linux/rcfs.h	2005-08-09 15:30:16.465397600 -0400
@@ -57,7 +57,6 @@ struct rcfs_mfdesc {
 
 extern struct rcfs_mfdesc *genmfdesc[];
 
-struct rcfs_inode_info *rcfs_get_inode_info(struct inode *inode);
 struct inode *rcfs_get_inode(struct super_block *, int, dev_t);
 int rcfs_mknod(struct inode *, struct dentry *, int, dev_t);
 struct dentry *rcfs_set_magf_byname(char *, void *);
@@ -80,15 +79,6 @@ extern struct file_operations members_fi
 extern struct file_operations reclassify_fileops;
 extern struct file_operations rcfs_file_operations;
 
-/* Callbacks into rcfs from ckrm */
-
-struct rcfs_functions {
-	int (*mkroot) (struct rcfs_magf *, int, struct dentry **);
-	int (*rmroot) (struct dentry *);
-	int (*register_classtype) (struct ckrm_classtype *);
-	int (*deregister_classtype) (struct ckrm_classtype *);
-};
-
 int rcfs_register_classtype(struct ckrm_classtype *);
 int rcfs_deregister_classtype(struct ckrm_classtype *);
 int rcfs_mkroot(struct rcfs_magf *, int, struct dentry **);
@@ -98,4 +88,19 @@ int rcfs_rmroot(struct dentry *);
 extern struct dentry *rcfs_rootde;
 extern struct rbce_eng_callback rcfs_eng_callbacks;
 
+static inline struct rcfs_inode_info *rcfs_get_inode_info(struct inode *inode)
+{
+	return container_of(inode, struct rcfs_inode_info, vfs_inode);
+}
+
+#ifdef RCFS_DEBUG
+#define dbg(format, arg...) printk(KERN_DEBUG "%s: " format "\n" , __FUNCTION__ , ## arg)
+#else
+#define dbg(format, arg...) do {} while (0)
+#endif
+
+#define err(format, arg...) printk(KERN_ERR "%s: " format "\n" , __FUNCTION__ , ## arg)
+#define info(format, arg...) printk(KERN_INFO "%s: " format "\n" , __FUNCTION__ , ## arg)
+#define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n" , __FUNCTION__ , ## arg)
+
 #endif	/* _LINUX_RCFS_H */

Reply via email to