summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorAlexander Viro <viro@parcelfarce.linux.theplanet.co.uk>2003-04-27 03:47:05 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2003-04-27 03:47:05 -0700
commitdeddb7cba8ef29f7a1366a064df9ae50ec14f01d (patch)
tree41c7704b229135df368e7249e5ed32090b1b940d /include/linux
parenta113994eae7b1ed2c22f2952093fdc1392208731 (diff)
[PATCH] simple_fill_super()
New libfs.c helper - simple_fill_super(). Abstracted from nfsd/nfsctl.c, couple of filesystems converted to it (nfsctl, binfmt_misc). Function takes an array of triples (name, file_operations, mode), superblock and value for its ->s_magic. It acts as fill_super() - populates superblock or fails. We get a ramfs-style flat tree - root directory and a bunch of files in it. That animal allows to put together a simple filesystem without touching any directory-related stuff - now it's as easy as implementing file_operations for files you want to have and telling what to call them.
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/fs.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h
index ce89b15c54a1..00ddb3866b15 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1292,6 +1292,8 @@ extern struct dentry *simple_lookup(struct inode *, struct dentry *);
extern ssize_t generic_read_dir(struct file *, char *, size_t, loff_t *);
extern struct file_operations simple_dir_operations;
extern struct inode_operations simple_dir_inode_operations;
+struct tree_descr { char *name; struct file_operations *ops; int mode; };
+extern int simple_fill_super(struct super_block *, int, struct tree_descr *);
#ifdef CONFIG_BLK_DEV_INITRD
extern unsigned int real_root_dev;