mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
9p: Documentation updates
The kernel-doc comments of much of the 9p system have been in disarray since reorganization. This patch fixes those problems, adds additional documentation and a template book which collects the 9p information. Signed-off-by: Eric Van Hensbergen <[email protected]>
This commit is contained in:
parent
b32a09db4f
commit
ee443996a3
18 changed files with 854 additions and 124 deletions
15
fs/9p/fid.h
15
fs/9p/fid.h
|
|
@ -22,6 +22,21 @@
|
|||
|
||||
#include <linux/list.h>
|
||||
|
||||
/**
|
||||
* struct v9fs_dentry - 9p private data stored in dentry d_fsdata
|
||||
* @lock: protects the fidlist
|
||||
* @fidlist: list of FIDs currently associated with this dentry
|
||||
*
|
||||
* This structure defines the 9p private data associated with
|
||||
* a particular dentry. In particular, this private data is used
|
||||
* to lookup which 9P FID handle should be used for a particular VFS
|
||||
* operation. FID handles are associated with dentries instead of
|
||||
* inodes in order to more closely map functionality to the Plan 9
|
||||
* expected behavior for FID reclaimation and tracking.
|
||||
*
|
||||
* See Also: Mapping FIDs to Linux VFS model in
|
||||
* Design and Implementation of the Linux 9P File System documentation
|
||||
*/
|
||||
struct v9fs_dentry {
|
||||
spinlock_t lock; /* protect fidlist */
|
||||
struct list_head fidlist;
|
||||
|
|
|
|||
|
|
@ -71,7 +71,6 @@ static match_table_t tokens = {
|
|||
|
||||
/**
|
||||
* v9fs_parse_options - parse mount options into session structure
|
||||
* @options: options string passed from mount
|
||||
* @v9ses: existing v9fs session information
|
||||
*
|
||||
*/
|
||||
|
|
@ -256,9 +255,12 @@ void v9fs_session_close(struct v9fs_session_info *v9ses)
|
|||
}
|
||||
|
||||
/**
|
||||
* v9fs_session_cancel - mark transport as disconnected
|
||||
* and cancel all pending requests.
|
||||
* v9fs_session_cancel - terminate a session
|
||||
* @v9ses: session to terminate
|
||||
*
|
||||
* mark transport as disconnected and cancel all pending requests.
|
||||
*/
|
||||
|
||||
void v9fs_session_cancel(struct v9fs_session_info *v9ses) {
|
||||
P9_DPRINTK(P9_DEBUG_ERROR, "cancel session %p\n", v9ses);
|
||||
p9_client_disconnect(v9ses->clnt);
|
||||
|
|
|
|||
85
fs/9p/v9fs.h
85
fs/9p/v9fs.h
|
|
@ -21,18 +21,69 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Session structure provides information for an opened session
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* enum p9_session_flags - option flags for each 9P session
|
||||
* @V9FS_EXTENDED: whether or not to use 9P2000.u extensions
|
||||
* @V9FS_ACCESS_SINGLE: only the mounting user can access the hierarchy
|
||||
* @V9FS_ACCESS_USER: a new attach will be issued for every user (default)
|
||||
* @V9FS_ACCESS_ANY: use a single attach for all users
|
||||
* @V9FS_ACCESS_MASK: bit mask of different ACCESS options
|
||||
*
|
||||
* Session flags reflect options selected by users at mount time
|
||||
*/
|
||||
enum p9_session_flags {
|
||||
V9FS_EXTENDED = 0x01,
|
||||
V9FS_ACCESS_SINGLE = 0x02,
|
||||
V9FS_ACCESS_USER = 0x04,
|
||||
V9FS_ACCESS_ANY = 0x06,
|
||||
V9FS_ACCESS_MASK = 0x06,
|
||||
};
|
||||
|
||||
/* possible values of ->cache */
|
||||
/**
|
||||
* enum p9_cache_modes - user specified cache preferences
|
||||
* @CACHE_NONE: do not cache data, dentries, or directory contents (default)
|
||||
* @CACHE_LOOSE: cache data, dentries, and directory contents w/no consistency
|
||||
*
|
||||
* eventually support loose, tight, time, session, default always none
|
||||
*/
|
||||
|
||||
enum p9_cache_modes {
|
||||
CACHE_NONE,
|
||||
CACHE_LOOSE,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct v9fs_session_info - per-instance session information
|
||||
* @flags: session options of type &p9_session_flags
|
||||
* @nodev: set to 1 to disable device mapping
|
||||
* @debug: debug level
|
||||
* @afid: authentication handle
|
||||
* @cache: cache mode of type &p9_cache_modes
|
||||
* @options: copy of options string given by user
|
||||
* @uname: string user name to mount hierarchy as
|
||||
* @aname: mount specifier for remote hierarchy
|
||||
* @maxdata: maximum data to be sent/recvd per protocol message
|
||||
* @dfltuid: default numeric userid to mount hierarchy as
|
||||
* @dfltgid: default numeric groupid to mount hierarchy as
|
||||
* @uid: if %V9FS_ACCESS_SINGLE, the numeric uid which mounted the hierarchy
|
||||
* @clnt: reference to 9P network client instantiated for this session
|
||||
* @debugfs_dir: reference to debugfs_dir which can be used for add'l debug
|
||||
*
|
||||
* This structure holds state for each session instance established during
|
||||
* a sys_mount() .
|
||||
*
|
||||
* Bugs: there seems to be a lot of state which could be condensed and/or
|
||||
* removed.
|
||||
*/
|
||||
|
||||
struct v9fs_session_info {
|
||||
/* options */
|
||||
unsigned char flags; /* session flags */
|
||||
unsigned char nodev; /* set to 1 if no disable device mapping */
|
||||
unsigned short debug; /* debug level */
|
||||
unsigned int afid; /* authentication fid */
|
||||
unsigned int cache; /* cache mode */
|
||||
unsigned char flags;
|
||||
unsigned char nodev;
|
||||
unsigned short debug;
|
||||
unsigned int afid;
|
||||
unsigned int cache;
|
||||
|
||||
char *options; /* copy of mount options */
|
||||
char *uname; /* user name to mount as */
|
||||
|
|
@ -45,22 +96,6 @@ struct v9fs_session_info {
|
|||
struct dentry *debugfs_dir;
|
||||
};
|
||||
|
||||
/* session flags */
|
||||
enum {
|
||||
V9FS_EXTENDED = 0x01, /* 9P2000.u */
|
||||
V9FS_ACCESS_MASK = 0x06, /* access mask */
|
||||
V9FS_ACCESS_SINGLE = 0x02, /* only one user can access the files */
|
||||
V9FS_ACCESS_USER = 0x04, /* attache per user */
|
||||
V9FS_ACCESS_ANY = 0x06, /* use the same attach for all users */
|
||||
};
|
||||
|
||||
/* possible values of ->cache */
|
||||
/* eventually support loose, tight, time, session, default always none */
|
||||
enum {
|
||||
CACHE_NONE, /* default */
|
||||
CACHE_LOOSE, /* no consistency */
|
||||
};
|
||||
|
||||
extern struct dentry *v9fs_debugfs_root;
|
||||
|
||||
struct p9_fid *v9fs_session_init(struct v9fs_session_info *, const char *,
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
/**
|
||||
* v9fs_vfs_readpage - read an entire page in from 9P
|
||||
*
|
||||
* @file: file being read
|
||||
* @filp: file being read
|
||||
* @page: structure to page
|
||||
*
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ static inline int dt_type(struct p9_stat *mistat)
|
|||
|
||||
/**
|
||||
* v9fs_dir_readdir - read a directory
|
||||
* @filep: opened file structure
|
||||
* @filp: opened file structure
|
||||
* @dirent: directory structure ???
|
||||
* @filldir: function to populate directory structure ???
|
||||
*
|
||||
|
|
|
|||
|
|
@ -90,10 +90,11 @@ int v9fs_file_open(struct inode *inode, struct file *file)
|
|||
|
||||
/**
|
||||
* v9fs_file_lock - lock a file (or directory)
|
||||
* @inode: inode to be opened
|
||||
* @file: file being opened
|
||||
* @filp: file to be locked
|
||||
* @cmd: lock command
|
||||
* @fl: file lock structure
|
||||
*
|
||||
* XXX - this looks like a local only lock, we should extend into 9P
|
||||
* Bugs: this looks like a local only lock, we should extend into 9P
|
||||
* by using open exclusive
|
||||
*/
|
||||
|
||||
|
|
@ -118,7 +119,7 @@ static int v9fs_file_lock(struct file *filp, int cmd, struct file_lock *fl)
|
|||
|
||||
/**
|
||||
* v9fs_file_read - read from a file
|
||||
* @filep: file pointer to read
|
||||
* @filp: file pointer to read
|
||||
* @data: data buffer to read data into
|
||||
* @count: size of buffer
|
||||
* @offset: offset at which to read data
|
||||
|
|
@ -142,7 +143,7 @@ v9fs_file_read(struct file *filp, char __user * data, size_t count,
|
|||
|
||||
/**
|
||||
* v9fs_file_write - write to a file
|
||||
* @filep: file pointer to write
|
||||
* @filp: file pointer to write
|
||||
* @data: data buffer to write data from
|
||||
* @count: size of buffer
|
||||
* @offset: offset at which to write data
|
||||
|
|
|
|||
|
|
@ -129,6 +129,12 @@ static int p9mode2unixmode(struct v9fs_session_info *v9ses, int mode)
|
|||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* v9fs_uflags2omode- convert posix open flags to plan 9 mode bits
|
||||
* @uflags: flags to convert
|
||||
*
|
||||
*/
|
||||
|
||||
int v9fs_uflags2omode(int uflags)
|
||||
{
|
||||
int ret;
|
||||
|
|
@ -312,6 +318,14 @@ error:
|
|||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* v9fs_inode_from_fid - populate an inode by issuing a attribute request
|
||||
* @v9ses: session information
|
||||
* @fid: fid to issue attribute request for
|
||||
* @sb: superblock on which to create inode
|
||||
*
|
||||
*/
|
||||
|
||||
static struct inode *
|
||||
v9fs_inode_from_fid(struct v9fs_session_info *v9ses, struct p9_fid *fid,
|
||||
struct super_block *sb)
|
||||
|
|
@ -384,9 +398,12 @@ v9fs_open_created(struct inode *inode, struct file *file)
|
|||
|
||||
/**
|
||||
* v9fs_create - Create a file
|
||||
* @v9ses: session information
|
||||
* @dir: directory that dentry is being created in
|
||||
* @dentry: dentry that is being created
|
||||
* @perm: create permissions
|
||||
* @mode: open mode
|
||||
* @extension: 9p2000.u extension string to support devices, etc.
|
||||
*
|
||||
*/
|
||||
static struct p9_fid *
|
||||
|
|
@ -461,7 +478,7 @@ error:
|
|||
|
||||
/**
|
||||
* v9fs_vfs_create - VFS hook to create files
|
||||
* @inode: directory inode that is being created
|
||||
* @dir: directory inode that is being created
|
||||
* @dentry: dentry that is being deleted
|
||||
* @mode: create permissions
|
||||
* @nd: path information
|
||||
|
|
@ -519,7 +536,7 @@ error:
|
|||
|
||||
/**
|
||||
* v9fs_vfs_mkdir - VFS mkdir hook to create a directory
|
||||
* @inode: inode that is being unlinked
|
||||
* @dir: inode that is being unlinked
|
||||
* @dentry: dentry that is being unlinked
|
||||
* @mode: mode for new directory
|
||||
*
|
||||
|
|
@ -703,9 +720,9 @@ done:
|
|||
|
||||
/**
|
||||
* v9fs_vfs_getattr - retrieve file metadata
|
||||
* @mnt - mount information
|
||||
* @dentry - file to get attributes on
|
||||
* @stat - metadata structure to populate
|
||||
* @mnt: mount information
|
||||
* @dentry: file to get attributes on
|
||||
* @stat: metadata structure to populate
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
@ -928,7 +945,7 @@ done:
|
|||
/**
|
||||
* v9fs_vfs_readlink - read a symlink's location
|
||||
* @dentry: dentry for symlink
|
||||
* @buf: buffer to load symlink location into
|
||||
* @buffer: buffer to load symlink location into
|
||||
* @buflen: length of buffer
|
||||
*
|
||||
*/
|
||||
|
|
@ -996,10 +1013,12 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
|||
* v9fs_vfs_put_link - release a symlink path
|
||||
* @dentry: dentry for symlink
|
||||
* @nd: nameidata
|
||||
* @p: unused
|
||||
*
|
||||
*/
|
||||
|
||||
static void v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
|
||||
static void
|
||||
v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
|
||||
{
|
||||
char *s = nd_get_link(nd);
|
||||
|
||||
|
|
@ -1008,6 +1027,15 @@ static void v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void
|
|||
__putname(s);
|
||||
}
|
||||
|
||||
/**
|
||||
* v9fs_vfs_mkspecial - create a special file
|
||||
* @dir: inode to create special file in
|
||||
* @dentry: dentry to create
|
||||
* @mode: mode to create special file
|
||||
* @extension: 9p2000.u format extension string representing special file
|
||||
*
|
||||
*/
|
||||
|
||||
static int v9fs_vfs_mkspecial(struct inode *dir, struct dentry *dentry,
|
||||
int mode, const char *extension)
|
||||
{
|
||||
|
|
@ -1037,7 +1065,7 @@ static int v9fs_vfs_mkspecial(struct inode *dir, struct dentry *dentry,
|
|||
* @dentry: dentry for symlink
|
||||
* @symname: symlink data
|
||||
*
|
||||
* See 9P2000.u RFC for more information
|
||||
* See Also: 9P2000.u RFC for more information
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
@ -1058,10 +1086,6 @@ v9fs_vfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
|
|||
*
|
||||
*/
|
||||
|
||||
/* XXX - lots of code dup'd from symlink and creates,
|
||||
* figure out a better reuse strategy
|
||||
*/
|
||||
|
||||
static int
|
||||
v9fs_vfs_link(struct dentry *old_dentry, struct inode *dir,
|
||||
struct dentry *dentry)
|
||||
|
|
@ -1098,7 +1122,7 @@ clunk_fid:
|
|||
* @dir: inode destination for new link
|
||||
* @dentry: dentry for file
|
||||
* @mode: mode for creation
|
||||
* @dev_t: device associated with special file
|
||||
* @rdev: device associated with special file
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ static int v9fs_set_super(struct super_block *s, void *data)
|
|||
* v9fs_fill_super - populate superblock with info
|
||||
* @sb: superblock
|
||||
* @v9ses: session information
|
||||
* @flags: flags propagated from v9fs_get_sb()
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue