envfs-commits Mailing List for /env file system (Page 2)
Status: Pre-Alpha
Brought to you by:
lethal
You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(28) |
Oct
(7) |
Nov
|
Dec
|
|---|
|
From: Paul M. <le...@us...> - 2001-09-19 03:07:40
|
Update of /cvsroot/envfs/envfs/fs/envfs
In directory usw-pr-cvs1:/tmp/cvs-serv5906/fs/envfs
Modified Files:
file.c
Log Message:
2.4.8 merge
Index: file.c
===================================================================
RCS file: /cvsroot/envfs/envfs/fs/envfs/file.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- file.c 2001/09/19 03:01:45 1.1
+++ file.c 2001/09/19 03:07:37 1.2
@@ -145,5 +145,6 @@
struct file_operations envfs_fops = {
read: envfs_read_file,
mmap: generic_file_mmap,
+ llseek: generic_file_llseek,
};
|
|
From: Paul M. <le...@us...> - 2001-09-19 03:07:40
|
Update of /cvsroot/envfs/envfs In directory usw-pr-cvs1:/tmp/cvs-serv5906 Added Files: AGAINST-2.4.8 Removed Files: AGAINST-2.4.7 Log Message: 2.4.8 merge --- NEW FILE: AGAINST-2.4.8 --- --- AGAINST-2.4.7 DELETED --- |
|
From: Paul M. <le...@us...> - 2001-09-19 03:01:48
|
Update of /cvsroot/envfs/envfs/fs
In directory usw-pr-cvs1:/tmp/cvs-serv4903/fs
Added Files:
Config.in Makefile
Log Message:
Initial import of envfs sources, against 2.4.7.
--- NEW FILE: Config.in ---
#
# File system configuration
#
mainmenu_option next_comment
comment 'File systems'
bool 'Quota support' CONFIG_QUOTA
tristate 'Kernel automounter support' CONFIG_AUTOFS_FS
tristate 'Kernel automounter version 4 support (also supports v3)' CONFIG_AUTOFS4_FS
dep_tristate 'Reiserfs support' CONFIG_REISERFS_FS $CONFIG_EXPERIMENTAL
dep_mbool ' Have reiserfs do extra internal checking' CONFIG_REISERFS_CHECK $CONFIG_REISERFS_FS $CONFIG_EXPERIMENTAL
dep_tristate 'ADFS file system support' CONFIG_ADFS_FS $CONFIG_EXPERIMENTAL
dep_mbool ' ADFS write support (DANGEROUS)' CONFIG_ADFS_FS_RW $CONFIG_ADFS_FS $CONFIG_EXPERIMENTAL
dep_tristate 'Amiga FFS file system support (EXPERIMENTAL)' CONFIG_AFFS_FS $CONFIG_EXPERIMENTAL
dep_tristate 'Apple Macintosh file system support (EXPERIMENTAL)' CONFIG_HFS_FS $CONFIG_EXPERIMENTAL
dep_tristate 'BFS file system support (EXPERIMENTAL)' CONFIG_BFS_FS $CONFIG_EXPERIMENTAL
tristate 'Ext3 journalling file system support (EXPERIMENTAL)' CONFIG_EXT3_FS
# CONFIG_JBD could be its own option (even modular), but until there are
# other users than ext3, we will simply make it be the same as CONFIG_EXT3_FS
# dep_tristate ' Journal Block Device support (JBD for ext3)' CONFIG_JBD $CONFIG_EXT3_FS
define_bool CONFIG_JBD $CONFIG_EXT3_FS
dep_mbool ' JBD (ext3) debugging support' CONFIG_JBD_DEBUG $CONFIG_JBD
bool 'Buffer Head tracing (DEBUG)' CONFIG_BUFFER_DEBUG
# msdos file systems
tristate 'DOS FAT fs support' CONFIG_FAT_FS
dep_tristate ' MSDOS fs support' CONFIG_MSDOS_FS $CONFIG_FAT_FS
dep_tristate ' UMSDOS: Unix-like file system on top of standard MSDOS fs' CONFIG_UMSDOS_FS $CONFIG_MSDOS_FS
dep_tristate ' VFAT (Windows-95) fs support' CONFIG_VFAT_FS $CONFIG_FAT_FS
dep_tristate 'EFS file system support (read only) (EXPERIMENTAL)' CONFIG_EFS_FS $CONFIG_EXPERIMENTAL
dep_tristate 'Journalling Flash File System (JFFS) support (EXPERIMENTAL)' CONFIG_JFFS_FS $CONFIG_EXPERIMENTAL $CONFIG_MTD
if [ "$CONFIG_JFFS_FS" = "y" -o "$CONFIG_JFFS_FS" = "m" ] ; then
int 'JFFS debugging verbosity (0 = quiet, 3 = noisy)' CONFIG_JFFS_FS_VERBOSE 0
fi
tristate 'Compressed ROM file system support' CONFIG_CRAMFS
bool 'Virtual memory file system support (former shm fs)' CONFIG_TMPFS
tristate 'Simple RAM-based file system support' CONFIG_RAMFS
tristate 'ISO 9660 CDROM file system support' CONFIG_ISO9660_FS
dep_mbool ' Microsoft Joliet CDROM extensions' CONFIG_JOLIET $CONFIG_ISO9660_FS
tristate 'Minix fs support' CONFIG_MINIX_FS
tristate 'FreeVxFS file system support (VERITAS VxFS(TM) compatible)' CONFIG_VXFS_FS
tristate 'NTFS file system support (read only)' CONFIG_NTFS_FS
dep_mbool ' NTFS write support (DANGEROUS)' CONFIG_NTFS_RW $CONFIG_NTFS_FS $CONFIG_EXPERIMENTAL
tristate 'OS/2 HPFS file system support' CONFIG_HPFS_FS
bool '/proc file system support' CONFIG_PROC_FS
dep_tristate '/env file system support (EXPERIMENTAL)' CONFIG_ENVFS_FS $CONFIG_EXPERIMENTAL
dep_bool ' Debug envfs' CONFIG_ENVFS_FS_DEBUG $CONFIG_ENVFS_FS
dep_bool '/dev file system support (EXPERIMENTAL)' CONFIG_DEVFS_FS $CONFIG_EXPERIMENTAL
dep_bool ' Automatically mount at boot' CONFIG_DEVFS_MOUNT $CONFIG_DEVFS_FS
dep_bool ' Debug devfs' CONFIG_DEVFS_DEBUG $CONFIG_DEVFS_FS
# It compiles as a module for testing only. It should not be used
# as a module in general. If we make this "tristate", a bunch of people
# who don't know what they are doing turn it on and complain when it
# breaks.
dep_bool '/dev/pts file system for Unix98 PTYs' CONFIG_DEVPTS_FS $CONFIG_UNIX98_PTYS
dep_tristate 'QNX4 file system support (read only) (EXPERIMENTAL)' CONFIG_QNX4FS_FS $CONFIG_EXPERIMENTAL
dep_mbool ' QNX4FS write support (DANGEROUS)' CONFIG_QNX4FS_RW $CONFIG_QNX4FS_FS $CONFIG_EXPERIMENTAL
tristate 'ROM file system support' CONFIG_ROMFS_FS
tristate 'Second extended fs support' CONFIG_EXT2_FS
tristate 'System V/Xenix/V7/Coherent file system support' CONFIG_SYSV_FS
tristate 'UDF file system support (read only)' CONFIG_UDF_FS
dep_mbool ' UDF write support (DANGEROUS)' CONFIG_UDF_RW $CONFIG_UDF_FS $CONFIG_EXPERIMENTAL
tristate 'UFS file system support (read only)' CONFIG_UFS_FS
dep_mbool ' UFS file system write support (DANGEROUS)' CONFIG_UFS_FS_WRITE $CONFIG_UFS_FS $CONFIG_EXPERIMENTAL
if [ "$CONFIG_NET" = "y" ]; then
mainmenu_option next_comment
comment 'Network File Systems'
dep_tristate 'Coda file system support (advanced network fs)' CONFIG_CODA_FS $CONFIG_INET
dep_tristate 'NFS file system support' CONFIG_NFS_FS $CONFIG_INET
dep_mbool ' Provide NFSv3 client support' CONFIG_NFS_V3 $CONFIG_NFS_FS
dep_bool ' Root file system on NFS' CONFIG_ROOT_NFS $CONFIG_NFS_FS $CONFIG_IP_PNP
dep_tristate 'NFS server support' CONFIG_NFSD $CONFIG_INET
dep_mbool ' Provide NFSv3 server support' CONFIG_NFSD_V3 $CONFIG_NFSD
if [ "$CONFIG_NFS_FS" = "y" -o "$CONFIG_NFSD" = "y" ]; then
define_tristate CONFIG_SUNRPC y
define_tristate CONFIG_LOCKD y
else
if [ "$CONFIG_NFS_FS" = "m" -o "$CONFIG_NFSD" = "m" ]; then
define_tristate CONFIG_SUNRPC m
define_tristate CONFIG_LOCKD m
else
define_tristate CONFIG_SUNRPC n
define_tristate CONFIG_LOCKD n
fi
fi
if [ "$CONFIG_NFSD_V3" = "y" -o "$CONFIG_NFS_V3" = "y" ]; then
define_bool CONFIG_LOCKD_V4 y
fi
dep_tristate 'SMB file system support (to mount Windows shares etc.)' CONFIG_SMB_FS $CONFIG_INET
if [ "$CONFIG_SMB_FS" != "n" ]; then
bool ' Use a default NLS' CONFIG_SMB_NLS_DEFAULT
if [ "$CONFIG_SMB_NLS_DEFAULT" = "y" ]; then
string ' Default Remote NLS Option' CONFIG_SMB_NLS_REMOTE "cp437"
fi
fi
if [ "$CONFIG_IPX" != "n" -o "$CONFIG_INET" != "n" ]; then
tristate 'NCP file system support (to mount NetWare volumes)' CONFIG_NCP_FS
source fs/ncpfs/Config.in
else
# for fs/nls/Config.in
define_bool CONFIG_NCPFS_NLS n
fi
endmenu
else
# for fs/nls/Config.in
define_bool CONFIG_NCPFS_NLS n
define_bool CONFIG_SMB_FS n
fi
mainmenu_option next_comment
comment 'Partition Types'
source fs/partitions/Config.in
endmenu
source fs/nls/Config.in
endmenu
--- NEW FILE: Makefile ---
#
# Makefile for the Linux filesystems.
#
# 14 Sep 2000, Christoph Hellwig <hc...@ca...>
# Rewritten to use lists instead of if-statements.
#
O_TARGET := fs.o
export-objs := filesystems.o dcache.o buffer.o jbd-kernel.o
mod-subdirs := nls
obj-y := open.o read_write.o devices.o file_table.o buffer.o \
super.o block_dev.o char_dev.o stat.o exec.o pipe.o namei.o \
fcntl.o ioctl.o readdir.o select.o fifo.o locks.o \
dcache.o inode.o attr.o bad_inode.o file.o iobuf.o dnotify.o \
filesystems.o jbd-kernel.o
ifeq ($(CONFIG_QUOTA),y)
obj-y += dquot.o
else
obj-y += noquot.o
endif
subdir-$(CONFIG_PROC_FS) += proc
subdir-y += partitions
# Do not add any filesystems before this line
subdir-$(CONFIG_EXT3_FS) += ext3 # Before ext2 so root fs can be ext3
subdir-$(CONFIG_JBD) += jbd
subdir-$(CONFIG_EXT2_FS) += ext2
subdir-$(CONFIG_CRAMFS) += cramfs
subdir-$(CONFIG_RAMFS) += ramfs
subdir-$(CONFIG_CODA_FS) += coda
subdir-$(CONFIG_MINIX_FS) += minix
subdir-$(CONFIG_FAT_FS) += fat
subdir-$(CONFIG_MSDOS_FS) += msdos
subdir-$(CONFIG_VFAT_FS) += vfat
subdir-$(CONFIG_BFS_FS) += bfs
subdir-$(CONFIG_ISO9660_FS) += isofs
subdir-$(CONFIG_DEVFS_FS) += devfs
subdir-$(CONFIG_HFS_FS) += hfs
subdir-$(CONFIG_VXFS_FS) += freevxfs
subdir-$(CONFIG_NFS_FS) += nfs
subdir-$(CONFIG_NFSD) += nfsd
subdir-$(CONFIG_LOCKD) += lockd
subdir-$(CONFIG_NLS) += nls
subdir-$(CONFIG_UMSDOS_FS) += umsdos
subdir-$(CONFIG_SYSV_FS) += sysv
subdir-$(CONFIG_SMB_FS) += smbfs
subdir-$(CONFIG_NCP_FS) += ncpfs
subdir-$(CONFIG_HPFS_FS) += hpfs
subdir-$(CONFIG_NTFS_FS) += ntfs
subdir-$(CONFIG_UFS_FS) += ufs
subdir-$(CONFIG_EFS_FS) += efs
subdir-$(CONFIG_JFFS_FS) += jffs
subdir-$(CONFIG_AFFS_FS) += affs
subdir-$(CONFIG_ROMFS_FS) += romfs
subdir-$(CONFIG_QNX4FS_FS) += qnx4
subdir-$(CONFIG_UDF_FS) += udf
subdir-$(CONFIG_AUTOFS_FS) += autofs
subdir-$(CONFIG_AUTOFS4_FS) += autofs4
subdir-$(CONFIG_ADFS_FS) += adfs
subdir-$(CONFIG_REISERFS_FS) += reiserfs
subdir-$(CONFIG_DEVPTS_FS) += devpts
subdir-$(CONFIG_SUN_OPENPROMFS) += openpromfs
subdir-$(CONFIG_ENVFS_FS) += envfs
obj-$(CONFIG_BINFMT_AOUT) += binfmt_aout.o
obj-$(CONFIG_BINFMT_EM86) += binfmt_em86.o
obj-$(CONFIG_BINFMT_MISC) += binfmt_misc.o
# binfmt_script is always there
obj-y += binfmt_script.o
obj-$(CONFIG_BINFMT_ELF) += binfmt_elf.o
# persistent filesystems
obj-y += $(join $(subdir-y),$(subdir-y:%=/%.o))
include $(TOPDIR)/Rules.make
|
|
From: Paul M. <le...@us...> - 2001-09-19 03:01:47
|
Update of /cvsroot/envfs/envfs/fs/envfs
In directory usw-pr-cvs1:/tmp/cvs-serv4903/fs/envfs
Added Files:
Makefile dir.c file.c inode.c super.c
Log Message:
Initial import of envfs sources, against 2.4.7.
--- NEW FILE: Makefile ---
#
# Makefile for the Linux envfs filesystem routines.
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (not a .c file).
#
# Note 2! The CFLAGS definitions are now in the main makefile.
O_TARGET := envfs.o
obj-y := super.o inode.o dir.o file.o
obj-m := $(O_TARGET)
include $(TOPDIR)/Rules.make
--- NEW FILE: dir.c ---
/*
* fs/envfs/dir.c
*
* envfs directory operations
*
* Copyright (C) 2001 Paul Mundt <le...@ch...>
*
* Released under the terms of the GNU GPL v2.0.
*
*/
#include <linux/envfs_fs.h>
static struct dentry *envfs_lookup(struct inode *dir, struct dentry *dentry)
{
envfs_debug("entering\n");
if (!dentry)
goto out;
if (!dentry->d_name.name)
goto out;
envfs_debug("dir->i_ino == %d\n", dir->i_ino);
envfs_debug("dentry->d_name.name == %s\n", dentry->d_name.name);
dentry->d_inode = envfs_get_inode(dir->i_sb,
0644 | S_IFREG,
dir->i_dev);
out:
envfs_debug("leaving\n");
return NULL;
}
static int envfs_mknod(struct inode *dir, struct dentry *dentry,
int mode, int dev)
{
struct inode *inode = envfs_get_inode(dir->i_sb, mode, dev);
envfs_debug("entering\n");
if (!inode)
return -ENOSPC;
dentry->d_inode = inode;
envfs_debug("inode == %d\n", dentry->d_inode->i_ino);
dentry->d_inode = inode;
dget(dentry);
envfs_debug("leaving\n");
return 0;
}
static int envfs_create(struct inode *dir, struct dentry *dentry, int mode)
{
envfs_debug("entering\n");
envfs_debug("dir->i_ino == %d\n", dir->i_ino);
envfs_debug("leaving\n");
return envfs_mknod(dir, dentry, mode | S_IFREG, 0);
}
int envfs_create_by_name(const char *name, mode_t mode, struct dentry *parent,
struct dentry **dentry)
{
struct qstr qstr;
struct dentry *pdentry = parent;
char *tmp;
int ret = 0;
envfs_debug("entering\n");
qstr.name = name;
qstr.len = strlen(qstr.name);
qstr.hash = full_name_hash(qstr.name, qstr.len);
/*
* FIXME: This is a hack.. for some odd reason, we get garbage
* in the name when new environment variables are set.
*
* This check is just to ensure that we have a valid environment
* variable before allocating an inode and setting up the dentry.
*/
tmp = envfs_getenv(qstr.name);
if (!tmp) {
ret = -EINVAL;
goto out;
}
if (!pdentry)
pdentry = envfs_find_sb_dentry();
if (!d_lookup(pdentry, &qstr)) {
*dentry = d_alloc(pdentry, &qstr);
ret = envfs_mknod(pdentry->d_inode, *dentry, mode, 0);
}
kfree(tmp);
out:
envfs_debug("leaving\n");
return ret;
}
static int envfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
{
struct dentry *dentry = filp->f_dentry;
envfs_debug("entering\n");
envfs_debug("filp->f_pos == %d\n", filp->f_pos);
if (!dentry)
goto out;
if (!dentry->d_inode || !dentry->d_parent)
goto out;
switch ((unsigned int)filp->f_pos) {
case 0:
if (filldir(dirent, ".", 1, filp->f_pos,
dentry->d_inode->i_ino,
DT_DIR) < 0) {
break;
}
filp->f_pos++;
case 1:
if (filldir(dirent, "..", 2, filp->f_pos,
dentry->d_parent->d_inode->i_ino,
DT_DIR) < 0) {
break;
}
filp->f_pos++;
default:
envfs_getenv_vars(filp, dirent, filldir);
break;
}
out:
envfs_debug("leaving\n");
return 0;
}
struct file_operations envfs_dops = {
read: generic_read_dir,
readdir: envfs_readdir,
};
struct inode_operations envfs_diops = {
create: envfs_create,
lookup: envfs_lookup,
mknod: envfs_mknod,
};
--- NEW FILE: file.c ---
/*
* fs/envfs/file.c
*
* envfs file operations
*
* Copyright (C) 2001 Paul Mundt <le...@ch...>
*
* Released under the terms of the GNU GPL v2.0.
*
*/
#include <linux/slab.h>
#include <linux/envfs_fs.h>
#include <asm/uaccess.h>
char *envfs_getenv_vars(struct file *filp, void *dirent, filldir_t filldir)
{
unsigned long currkey;
struct dentry *dentry;
char *buf, *opt;
int i = 0;
envfs_debug("entering\n");
buf = kmalloc(current->mm->env_end -
current->mm->env_start,
GFP_KERNEL);
for (currkey = current->mm->env_start;
currkey < current->mm->env_end;
currkey++) {
get_user(buf[i], (char *)currkey);
if (buf[i] == ' '|| !buf[i] || buf[i] == '\t')
buf[i] = '|';
i++;
}
for (i = 0; i < filp->f_pos - 2; i++) {
strsep(&buf, "|");
}
opt = strsep(&buf, "=");
if (!*opt)
goto out;
if (envfs_create_by_name(opt, 0755 | S_IFREG, NULL, &dentry) == -EINVAL)
goto out;
if (filldir(dirent, dentry->d_name.name, dentry->d_name.len,
filp->f_pos, dentry->d_inode->i_ino, DT_UNKNOWN) < 0)
goto out;
filp->f_pos++;
out:
kfree(buf);
envfs_debug("leaving\n");
return NULL;
}
char *envfs_getenv(const char *key)
{
unsigned long currkey;
char *buf, c;
int i, match, len;
envfs_debug("entering\n");
i = 1;
match = 0;
len = strlen(key) + 1;
buf = kmalloc(ENVFS_MAX_ENVLEN, GFP_KERNEL);
for (currkey = current->mm->env_start;
currkey < current->mm->env_end;
currkey++) {
get_user(c, (char *)currkey);
if (match) {
if (i == (ENVFS_MAX_ENVLEN - 1))
c = '\0';
buf[i] = c;
if (!c || c == ' ' || c == '\t') {
if (i) {
buf[i] = '\n';
buf[i+1] = '\0';
envfs_debug("leaving: 0\n");
return ++buf;
}
i = 0;
} else {
i++;
}
if (!c)
break;
continue;
}
if ((!i && !c) || (i && c == key[i - 1])) {
i++;
} else {
i = 0;
}
if (i == len) {
match = 1;
i = 0;
}
}
kfree(buf);
envfs_debug("leaving: 1\n");
return NULL;
}
static ssize_t envfs_read_file(struct file *filp, char *buf,
size_t count, loff_t *ppos)
{
char *tmpbuf;
envfs_debug("entering\n");
tmpbuf = envfs_getenv((char *)filp->f_dentry->d_name.name);
if (!tmpbuf) {
kfree(tmpbuf);
envfs_debug("leaving\n");
return 0;
}
if (count + *ppos > strlen(tmpbuf))
count = strlen(tmpbuf) - *ppos;
copy_to_user(buf, tmpbuf + *ppos, count);
*ppos += count;
kfree(tmpbuf);
envfs_debug("leaving\n");
return count;
}
struct file_operations envfs_fops = {
read: envfs_read_file,
mmap: generic_file_mmap,
};
--- NEW FILE: inode.c ---
/*
* fs/envfs/inode.c
*
* envfs inode operations
*
* Copyright (C) 2001 Paul Mundt <le...@ch...>
*
* Released under the terms of the GNU GPL v2.0.
*
*/
#include <linux/locks.h>
#include <linux/envfs_fs.h>
void envfs_read_inode(struct inode *inode)
{
inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
}
struct inode *envfs_get_inode(struct super_block *sb, int mode, int dev)
{
struct inode *inode = new_inode(sb);
envfs_debug("entering\n");
if (!inode)
return NULL;
inode->i_mode = mode;
inode->i_uid = current->fsuid;
inode->i_gid = current->fsgid;
inode->i_blksize = PAGE_CACHE_SIZE;
inode->i_blocks = 0;
inode->i_rdev = NODEV;
inode->i_mapping->a_ops = &envfs_aops;
inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
/*
* FIXME: This is a hack to force everything into a read-only state.
* Since we don't currently support writing to or creating new
* environment variables.
*/
inode->i_flags |= S_IMMUTABLE;
switch (mode & S_IFMT) {
case S_IFREG:
inode->i_fop = &envfs_fops;
break;
case S_IFDIR:
inode->i_op = &envfs_diops;
inode->i_fop = &envfs_dops;
break;
default:
init_special_inode(inode, mode, dev);
break;
}
envfs_debug("leaving\n");
return inode;
}
struct address_space_operations envfs_aops = {
/* Left empty intentionally */
};
--- NEW FILE: super.c ---
/*
* fs/envfs/super.c
*
* envfs superblock operations
*
* Copyright (C) 2001 Paul Mundt <le...@ch...>
*
* Released under the terms of the GNU GPL v2.0.
*
*/
#include <linux/module.h>
#include <linux/init.h>
#include <linux/pagemap.h>
#include <linux/envfs_fs.h>
static struct vfsmount *envfs_mnt;
static int envfs_statfs(struct super_block *sb, struct statfs *buf)
{
envfs_debug("entering\n");
buf->f_type = ENVFS_SUPER_MAGIC;
buf->f_bsize = PAGE_CACHE_SIZE;
buf->f_namelen = NAME_MAX;
envfs_debug("leaving\n");
return 0;
}
struct dentry *envfs_find_sb_dentry(void)
{
struct super_block *sb;
struct list_head *list;
envfs_debug("entering\n");
list_for_each(list, &super_blocks) {
sb = sb_entry(list);
if (sb->s_magic == ENVFS_SUPER_MAGIC) {
envfs_debug("leaving: 0\n");
return sb->s_root;
}
}
envfs_debug("leaving: 1\n");
return NULL;
}
static struct super_operations envfs_sops = {
statfs: envfs_statfs,
put_inode: force_delete,
read_inode: envfs_read_inode,
};
static struct super_block *envfs_read_super(struct super_block *sb,
void *data, int silent)
{
struct inode *root_inode;
envfs_debug("entering\n");
sb->s_blocksize = PAGE_CACHE_SIZE;
sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
sb->s_magic = ENVFS_SUPER_MAGIC;
sb->s_op = &envfs_sops;
root_inode = envfs_get_inode(sb, S_IFDIR | 0755, 0);
if (!root_inode)
return NULL;
sb->s_root = d_alloc_root(root_inode);
if (!sb->s_root) {
iput(root_inode);
return NULL;
}
envfs_debug("leaving\n");
return sb;
}
static DECLARE_FSTYPE(envfs_fs_type, "envfs", envfs_read_super, FS_SINGLE);
static int __init init_envfs_fs(void)
{
int ret = register_filesystem(&envfs_fs_type);
if (!ret) {
envfs_mnt = kern_mount(&envfs_fs_type);
ret = PTR_ERR(envfs_mnt);
if (!IS_ERR(envfs_mnt))
ret = 0;
}
return ret;
}
static void __exit exit_envfs_fs(void)
{
kern_umount(envfs_mnt);
unregister_filesystem(&envfs_fs_type);
}
EXPORT_NO_SYMBOLS;
MODULE_AUTHOR("Paul Mundt <le...@ch...>");
MODULE_DESCRIPTION("/env file system");
module_init(init_envfs_fs);
module_exit(exit_envfs_fs);
|
|
From: Paul M. <le...@us...> - 2001-09-19 03:01:47
|
Update of /cvsroot/envfs/envfs/include/linux In directory usw-pr-cvs1:/tmp/cvs-serv4903/include/linux Added Files: envfs_fs.h Log Message: Initial import of envfs sources, against 2.4.7. --- NEW FILE: envfs_fs.h --- /* * include/linux/envfs_fs.h * * Primary envfs header. * * Copyright (C) 2001 Paul Mundt <le...@ch...> * * Released under the terms of the GNU GPL v2.0. * */ #ifndef __ENVFS_FS_H #define __ENVFS_FS_H #include <linux/slab.h> #include <linux/fs.h> #include <linux/config.h> #include <linux/kernel.h> #define ENVFS_SUPER_MAGIC 0x9cfe #define ENVFS_MAX_ENVLEN (4 << 10) #ifdef CONFIG_ENVFS_FS_DEBUG #define envfs_debug(x...) printk(KERN_DEBUG "envfs: " \ __FUNCTION__ "(): " ##x) #else #define envfs_debug(x...) #endif /* fs/envfs/inode.c */ extern struct address_space_operations envfs_aops; extern void envfs_read_inode(struct inode *inode); extern struct inode *envfs_get_inode(struct super_block *sb, int mode, int dev); /* fs/envfs/file.c */ extern struct file_operations envfs_fops; extern char *envfs_getenv_vars(struct file *filp, void *dirent, filldir_t filldir); extern char *envfs_getenv(const char *key); /* fs/envfs/super.c */ extern struct dentry *envfs_find_sb_dentry(void); /* fs/envfs/dir.c */ extern struct file_operations envfs_dops; extern struct inode_operations envfs_diops; extern int envfs_create_by_name(const char *name, mode_t mode, struct dentry *parent, struct dentry **dentry); #endif /* __ENVFS_FS_H */ |
|
From: Paul M. <le...@us...> - 2001-09-19 03:01:47
|
Update of /cvsroot/envfs/envfs In directory usw-pr-cvs1:/tmp/cvs-serv4903 Added Files: AGAINST-2.4.7 Log Message: Initial import of envfs sources, against 2.4.7. --- NEW FILE: AGAINST-2.4.7 --- |
|
From: Paul M. <le...@us...> - 2001-09-19 03:00:57
|
Update of /cvsroot/envfs/envfs/fs/envfs In directory usw-pr-cvs1:/tmp/cvs-serv4713/fs/envfs Log Message: Directory /cvsroot/envfs/envfs/fs/envfs added to the repository |
|
From: Paul M. <le...@us...> - 2001-09-19 03:00:57
|
Update of /cvsroot/envfs/envfs/include/linux In directory usw-pr-cvs1:/tmp/cvs-serv4713/include/linux Log Message: Directory /cvsroot/envfs/envfs/include/linux added to the repository |
|
From: Paul M. <le...@us...> - 2001-09-19 03:00:56
|
Update of /cvsroot/envfs/envfs/include In directory usw-pr-cvs1:/tmp/cvs-serv4713/include Log Message: Directory /cvsroot/envfs/envfs/include added to the repository |
|
From: Paul M. <le...@us...> - 2001-09-19 03:00:39
|
Update of /cvsroot/envfs/envfs/fs In directory usw-pr-cvs1:/tmp/cvs-serv4681/fs Log Message: Directory /cvsroot/envfs/envfs/fs added to the repository |