2005-09-09 13:04:20 -07:00
/*
* V9FS definitions .
*
2008-02-06 19:25:03 -06:00
* Copyright ( C ) 2004 - 2008 by Eric Van Hensbergen < ericvh @ gmail . com >
2005-09-09 13:04:20 -07:00
* Copyright ( C ) 2002 by Ron Minnich < rminnich @ lanl . gov >
*
* This program is free software ; you can redistribute it and / or modify
2006-03-25 03:07:28 -08:00
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation .
2005-09-09 13:04:20 -07:00
*
* 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 :
* Free Software Foundation
* 51 Franklin Street , Fifth Floor
* Boston , MA 02111 - 1301 USA
*
*/
/*
* Session structure provides information for an opened session
*
*/
struct v9fs_session_info {
/* options */
2007-10-17 14:31:07 -05:00
unsigned char flags ; /* session flags */
2005-09-09 13:04:20 -07:00
unsigned char nodev ; /* set to 1 if no disable device mapping */
unsigned short debug ; /* debug level */
unsigned int afid ; /* authentication fid */
2007-02-11 13:21:39 -06:00
unsigned int cache ; /* cache mode */
2005-09-09 13:04:20 -07:00
2007-10-17 14:31:07 -05:00
char * options ; /* copy of mount options */
2007-10-17 14:31:07 -05:00
char * uname ; /* user name to mount as */
char * aname ; /* name of remote hierarchy being mounted */
2008-02-06 19:25:03 -06:00
unsigned int maxdata ; /* max data for client interface */
2007-10-17 14:31:07 -05:00
unsigned int dfltuid ; /* default uid/muid for legacy support */
unsigned int dfltgid ; /* default gid for legacy support */
2007-10-17 14:31:07 -05:00
u32 uid ; /* if ACCESS_SINGLE, the uid that has access */
2007-07-10 17:57:28 -05:00
struct p9_client * clnt ; /* 9p client */
2006-01-08 01:04:58 -08:00
struct dentry * debugfs_dir ;
2005-09-09 13:04:20 -07:00
} ;
2007-10-17 14:31:07 -05:00
/* session flags */
enum {
2007-10-17 14:31:07 -05:00
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 */
2007-10-17 14:31:07 -05:00
} ;
2007-02-11 13:21:39 -06:00
/* possible values of ->cache */
/* eventually support loose, tight, time, session, default always none */
enum {
CACHE_NONE , /* default */
CACHE_LOOSE , /* no consistency */
} ;
2006-01-08 01:04:58 -08:00
extern struct dentry * v9fs_debugfs_root ;
2007-07-10 17:57:28 -05:00
struct p9_fid * v9fs_session_init ( struct v9fs_session_info * , const char * ,
char * ) ;
2005-09-09 13:04:20 -07:00
void v9fs_session_close ( struct v9fs_session_info * v9ses ) ;
2005-09-09 13:04:23 -07:00
void v9fs_session_cancel ( struct v9fs_session_info * v9ses ) ;
2005-09-09 13:04:20 -07:00
# define V9FS_MAGIC 0x01021997
/* other default globals */
2007-10-17 14:31:07 -05:00
# define V9FS_PORT 564
2005-09-09 13:04:20 -07:00
# define V9FS_DEFUSER "nobody"
# define V9FS_DEFANAME ""
2007-10-17 14:31:07 -05:00
# define V9FS_DEFUID (-2)
# define V9FS_DEFGID (-2)
2005-09-09 13:04:20 -07:00
2007-07-10 17:57:28 -05:00
static inline struct v9fs_session_info * v9fs_inode2v9ses ( struct inode * inode )
{
return ( inode - > i_sb - > s_fs_info ) ;
}
2007-10-17 14:31:07 -05:00
static inline int v9fs_extended ( struct v9fs_session_info * v9ses )
{
return v9ses - > flags & V9FS_EXTENDED ;
}