summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/fs/configfs/mount.c
diff options
context:
space:
mode:
Diffstat (limited to 'ANDROID_3.4.5/fs/configfs/mount.c')
-rw-r--r--ANDROID_3.4.5/fs/configfs/mount.c183
1 files changed, 0 insertions, 183 deletions
diff --git a/ANDROID_3.4.5/fs/configfs/mount.c b/ANDROID_3.4.5/fs/configfs/mount.c
deleted file mode 100644
index aee0a7eb..00000000
--- a/ANDROID_3.4.5/fs/configfs/mount.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/* -*- mode: c; c-basic-offset: 8; -*-
- * vim: noexpandtab sw=8 ts=8 sts=0:
- *
- * mount.c - operations for initializing and mounting configfs.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 021110-1307, USA.
- *
- * Based on sysfs:
- * sysfs is Copyright (C) 2001, 2002, 2003 Patrick Mochel
- *
- * configfs Copyright (C) 2005 Oracle. All rights reserved.
- */
-
-#include <linux/fs.h>
-#include <linux/module.h>
-#include <linux/mount.h>
-#include <linux/pagemap.h>
-#include <linux/init.h>
-#include <linux/slab.h>
-
-#include <linux/configfs.h>
-#include "configfs_internal.h"
-
-/* Random magic number */
-#define CONFIGFS_MAGIC 0x62656570
-
-static struct vfsmount *configfs_mount = NULL;
-struct kmem_cache *configfs_dir_cachep;
-static int configfs_mnt_count = 0;
-
-static const struct super_operations configfs_ops = {
- .statfs = simple_statfs,
- .drop_inode = generic_delete_inode,
-};
-
-static struct config_group configfs_root_group = {
- .cg_item = {
- .ci_namebuf = "root",
- .ci_name = configfs_root_group.cg_item.ci_namebuf,
- },
-};
-
-int configfs_is_root(struct config_item *item)
-{
- return item == &configfs_root_group.cg_item;
-}
-
-static struct configfs_dirent configfs_root = {
- .s_sibling = LIST_HEAD_INIT(configfs_root.s_sibling),
- .s_children = LIST_HEAD_INIT(configfs_root.s_children),
- .s_element = &configfs_root_group.cg_item,
- .s_type = CONFIGFS_ROOT,
- .s_iattr = NULL,
-};
-
-static int configfs_fill_super(struct super_block *sb, void *data, int silent)
-{
- struct inode *inode;
- struct dentry *root;
-
- sb->s_blocksize = PAGE_CACHE_SIZE;
- sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
- sb->s_magic = CONFIGFS_MAGIC;
- sb->s_op = &configfs_ops;
- sb->s_time_gran = 1;
-
- inode = configfs_new_inode(S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO,
- &configfs_root, sb);
- if (inode) {
- inode->i_op = &configfs_root_inode_operations;
- inode->i_fop = &configfs_dir_operations;
- /* directory inodes start off with i_nlink == 2 (for "." entry) */
- inc_nlink(inode);
- } else {
- pr_debug("configfs: could not get root inode\n");
- return -ENOMEM;
- }
-
- root = d_make_root(inode);
- if (!root) {
- pr_debug("%s: could not get root dentry!\n",__func__);
- return -ENOMEM;
- }
- config_group_init(&configfs_root_group);
- configfs_root_group.cg_item.ci_dentry = root;
- root->d_fsdata = &configfs_root;
- sb->s_root = root;
- sb->s_d_op = &configfs_dentry_ops; /* the rest get that */
- return 0;
-}
-
-static struct dentry *configfs_do_mount(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
-{
- return mount_single(fs_type, flags, data, configfs_fill_super);
-}
-
-static struct file_system_type configfs_fs_type = {
- .owner = THIS_MODULE,
- .name = "configfs",
- .mount = configfs_do_mount,
- .kill_sb = kill_litter_super,
-};
-
-struct dentry *configfs_pin_fs(void)
-{
- int err = simple_pin_fs(&configfs_fs_type, &configfs_mount,
- &configfs_mnt_count);
- return err ? ERR_PTR(err) : configfs_mount->mnt_root;
-}
-
-void configfs_release_fs(void)
-{
- simple_release_fs(&configfs_mount, &configfs_mnt_count);
-}
-
-
-static struct kobject *config_kobj;
-
-static int __init configfs_init(void)
-{
- int err = -ENOMEM;
-
- configfs_dir_cachep = kmem_cache_create("configfs_dir_cache",
- sizeof(struct configfs_dirent),
- 0, 0, NULL);
- if (!configfs_dir_cachep)
- goto out;
-
- config_kobj = kobject_create_and_add("config", kernel_kobj);
- if (!config_kobj)
- goto out2;
-
- err = configfs_inode_init();
- if (err)
- goto out3;
-
- err = register_filesystem(&configfs_fs_type);
- if (err)
- goto out4;
-
- return 0;
-out4:
- printk(KERN_ERR "configfs: Unable to register filesystem!\n");
- configfs_inode_exit();
-out3:
- kobject_put(config_kobj);
-out2:
- kmem_cache_destroy(configfs_dir_cachep);
- configfs_dir_cachep = NULL;
-out:
- return err;
-}
-
-static void __exit configfs_exit(void)
-{
- unregister_filesystem(&configfs_fs_type);
- kobject_put(config_kobj);
- kmem_cache_destroy(configfs_dir_cachep);
- configfs_dir_cachep = NULL;
- configfs_inode_exit();
-}
-
-MODULE_AUTHOR("Oracle");
-MODULE_LICENSE("GPL");
-MODULE_VERSION("0.0.2");
-MODULE_DESCRIPTION("Simple RAM filesystem for user driven kernel subsystem configuration.");
-
-module_init(configfs_init);
-module_exit(configfs_exit);