[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ckrm-tech
Subject:    [ckrm-tech] [PATCH 2/2][RFC]:f series - Add teardown functionality to rcfs
From:       Chandra Seetharaman <sekharan () us ! ibm ! com>
Date:       2005-09-30 7:51:28
Message-ID: 1128066688.27300.20.camel () linuxchandra
[Download RAW message or body]

Adds teardown fucntionality to rcfs. Goes thru the directory structure
and
deletes all the directory depth first and calls ckrm_teardown().

--
 fs/rcfs/inode.c      |    9 +++------
 fs/rcfs/taskclass.c  |   17 +++++++++++++++++
 include/linux/rcfs.h |    1 +
 3 files changed, 21 insertions(+), 6 deletions(-)

Index: linux-2.6.13f.uml/fs/rcfs/inode.c
===================================================================
--- linux-2.6.13f.uml.orig/fs/rcfs/inode.c
+++ linux-2.6.13f.uml/fs/rcfs/inode.c
@@ -620,6 +620,8 @@ static void rcfs_kill_sb(struct super_bl
 	if (!sb->s_root)
 		goto out;
 
+	rcfs_teardown(sb->s_root);
+	ckrm_teardown();
 	rc = rcfs_destroy_virtual(sb->s_root);
 	if (rc) {
 		err("Magic file destroy failed %d\n", rc);
@@ -658,11 +660,6 @@ static int __init init_rcfs_fs(void)
 	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:
Index: linux-2.6.13f.uml/fs/rcfs/taskclass.c
===================================================================
--- linux-2.6.13f.uml.orig/fs/rcfs/taskclass.c
+++ linux-2.6.13f.uml/fs/rcfs/taskclass.c
@@ -83,6 +83,23 @@ out:
 	return rc;
 }
 
+void
+rcfs_teardown(struct dentry *parent)
+{
+	struct dentry *tmp, *child;
+
+	if (!parent)
+		return;
+
+	list_for_each_entry_safe(child, tmp, &parent->d_subdirs, d_child) {
+		if (S_ISDIR(child->d_inode->i_mode))
+			rcfs_teardown(child);
+	}
+	if (parent != parent->d_sb->s_root)
+		rcfs_tc_rmdir(parent->d_parent->d_inode, parent);
+	return;
+}
+
 struct inode_operations rcfs_taskclass_dir_ops = {
 	.create		= rcfs_create_noperm,
 	.lookup		= simple_lookup,
Index: linux-2.6.13f.uml/include/linux/rcfs.h
===================================================================
--- linux-2.6.13f.uml.orig/include/linux/rcfs.h
+++ linux-2.6.13f.uml/include/linux/rcfs.h
@@ -57,6 +57,7 @@ extern int rcfs_mknod_noperm(struct inod
 extern int rcfs_rename_noperm(struct inode *, struct dentry *,
 					struct inode *, struct dentry *);
 extern int rcfs_unlink_noent(struct inode *dir, struct dentry *dentry);
+extern void rcfs_teardown(struct dentry *dentry);
 
 static inline struct rcfs_inode_info *
 rcfs_get_inode_info(struct inode *inode)

-- 

----------------------------------------------------------------------
    Chandra Seetharaman               | Be careful what you choose....
              - sekharan@us.ibm.com   |      .......you may get it.
----------------------------------------------------------------------




-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
ckrm-tech mailing list
https://lists.sourceforge.net/lists/listinfo/ckrm-tech
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic