130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng   You may distribute this file under either of the two licenses that
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng   follow at your discretion.
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng*/
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* BLURB lgpl
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng                           Coda File System
930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng                              Release 5
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng          Copyright (c) 1987-1999 Carnegie Mellon University
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng                  Additional copyrights listed below
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1430692c65c4174412c90e79489e98ab85c1a7412fBen ChengThis code is distributed "AS IS" without warranty of any kind under
1530692c65c4174412c90e79489e98ab85c1a7412fBen Chengthe terms of the GNU Library General Public Licence Version 2, as
1630692c65c4174412c90e79489e98ab85c1a7412fBen Chengshown in the file LICENSE, or under the license shown below. The
1730692c65c4174412c90e79489e98ab85c1a7412fBen Chengtechnical and financial contributors to Coda are listed in the file
1830692c65c4174412c90e79489e98ab85c1a7412fBen ChengCREDITS.
1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng                        Additional copyrights
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng*/
2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng            Coda: an Experimental Distributed File System
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng                             Release 4.0
2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng          Copyright (c) 1987-1999 Carnegie Mellon University
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng                         All Rights Reserved
3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3130692c65c4174412c90e79489e98ab85c1a7412fBen ChengPermission  to  use, copy, modify and distribute this software and its
3230692c65c4174412c90e79489e98ab85c1a7412fBen Chengdocumentation is hereby granted,  provided  that  both  the  copyright
3330692c65c4174412c90e79489e98ab85c1a7412fBen Chengnotice  and  this  permission  notice  appear  in  all  copies  of the
3430692c65c4174412c90e79489e98ab85c1a7412fBen Chengsoftware, derivative works or  modified  versions,  and  any  portions
3530692c65c4174412c90e79489e98ab85c1a7412fBen Chengthereof, and that both notices appear in supporting documentation, and
3630692c65c4174412c90e79489e98ab85c1a7412fBen Chengthat credit is given to Carnegie Mellon University  in  all  documents
3730692c65c4174412c90e79489e98ab85c1a7412fBen Chengand publicity pertaining to direct or indirect use of this code or its
3830692c65c4174412c90e79489e98ab85c1a7412fBen Chengderivatives.
3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4030692c65c4174412c90e79489e98ab85c1a7412fBen ChengCODA IS AN EXPERIMENTAL SOFTWARE SYSTEM AND IS  KNOWN  TO  HAVE  BUGS,
4130692c65c4174412c90e79489e98ab85c1a7412fBen ChengSOME  OF  WHICH MAY HAVE SERIOUS CONSEQUENCES.  CARNEGIE MELLON ALLOWS
4230692c65c4174412c90e79489e98ab85c1a7412fBen ChengFREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION.   CARNEGIE  MELLON
4330692c65c4174412c90e79489e98ab85c1a7412fBen ChengDISCLAIMS  ANY  LIABILITY  OF  ANY  KIND  FOR  ANY  DAMAGES WHATSOEVER
4430692c65c4174412c90e79489e98ab85c1a7412fBen ChengRESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE  OR  OF
4530692c65c4174412c90e79489e98ab85c1a7412fBen ChengANY DERIVATIVE WORK.
4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4730692c65c4174412c90e79489e98ab85c1a7412fBen ChengCarnegie  Mellon  encourages  users  of  this  software  to return any
4830692c65c4174412c90e79489e98ab85c1a7412fBen Chengimprovements or extensions that  they  make,  and  to  grant  Carnegie
4930692c65c4174412c90e79489e98ab85c1a7412fBen ChengMellon the rights to redistribute these changes without encumbrance.
5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng*/
5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Based on cfs.h from Mach, but revamped for increased simplicity.
5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Linux modifications by
5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Peter Braam, Aug 1996
5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPI_CODA_HEADER_
6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPI_CODA_HEADER_
6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Catch new _KERNEL defn for NetBSD and DJGPP/__CYGWIN32__ */
6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if defined(__NetBSD__) || \
6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  ((defined(DJGPP) || defined(__CYGWIN32__)) && !defined(KERNEL))
6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <sys/types.h>
6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef CODA_MAXSYMLINKS
7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_MAXSYMLINKS 10
7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if defined(DJGPP) || defined(__CYGWIN32__)
7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifdef KERNEL
7530692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned long u_long;
7630692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned int u_int;
7730692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned short u_short;
7830692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef u_long ino_t;
7930692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef u_long dev_t;
8030692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef void * caddr_t;
8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifdef DOS
8230692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned __int64 u_quad_t;
8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#else
8430692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned long long u_quad_t;
8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define inline
8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
8930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct timespec {
9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        long       ts_sec;
9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        long       ts_nsec;
9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#else  /* DJGPP but not KERNEL */
9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <sys/time.h>
9530692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned long long u_quad_t;
9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* !KERNEL */
9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* !DJGPP */
9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if defined(__linux__)
10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/time.h>
10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define cdev_t u_quad_t
10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __KERNEL__
10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if !defined(_UQUAD_T_) && (!defined(__GLIBC__) || __GLIBC__ < 2)
10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UQUAD_T_ 1
10630692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned long long u_quad_t;
10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* __KERNEL__ */
10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#else
11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define cdev_t dev_t
11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
11330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifdef __CYGWIN32__
11430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct timespec {
11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        time_t  tv_sec;         /* seconds */
11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        long    tv_nsec;        /* nanoseconds */
11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
11930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __BIT_TYPES_DEFINED__
12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define __BIT_TYPES_DEFINED__
12230692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef signed char	      int8_t;
12330692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned char	    u_int8_t;
12430692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef short		     int16_t;
12530692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned short	   u_int16_t;
12630692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef int		     int32_t;
12730692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned int	   u_int32_t;
12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
13230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Cfs constants
13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_MAXNAMLEN   255
13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_MAXPATHLEN  1024
13630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_MAXSYMLINK  10
13730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* these are Coda's version of O_RDONLY etc combinations
13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * to deal with VFS open modes
14030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
14130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	C_O_READ	0x001
14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	C_O_WRITE       0x002
14330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define C_O_TRUNC       0x010
14430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define C_O_EXCL	0x100
14530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define C_O_CREAT	0x200
14630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
14730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* these are to find mode bits in Venus */
14830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define C_M_READ  00400
14930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define C_M_WRITE 00200
15030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
15130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* for access Venus will use */
15230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define C_A_C_OK    8               /* Test for writing upon create.  */
15330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define C_A_R_OK    4               /* Test for read permission.  */
15430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define C_A_W_OK    2               /* Test for write permission.  */
15530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define C_A_X_OK    1               /* Test for execute permission.  */
15630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define C_A_F_OK    0               /* Test for existence.  */
15730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
15830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
15930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
16030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _VENUS_DIRENT_T_
16130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _VENUS_DIRENT_T_ 1
16230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct venus_dirent {
16330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        u_int32_t d_fileno;		/* file number of entry */
16430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        u_int16_t d_reclen;		/* length of this record */
16530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        u_int8_t  d_type;			/* file type, see below */
16630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        u_int8_t  d_namlen;		/* length of string in d_name */
16730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        char	  d_name[CODA_MAXNAMLEN + 1];/* name must be no longer than this */
16830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
16930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#undef DIRSIZ
17030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DIRSIZ(dp)      ((sizeof (struct venus_dirent) - (CODA_MAXNAMLEN+1)) + \
17130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng                         (((dp)->d_namlen+1 + 3) &~ 3))
17230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
17330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
17430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * File types
17530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
17630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	CDT_UNKNOWN	 0
17730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	CDT_FIFO	 1
17830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	CDT_CHR		 2
17930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	CDT_DIR		 4
18030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	CDT_BLK		 6
18130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	CDT_REG		 8
18230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	CDT_LNK		10
18330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	CDT_SOCK	12
18430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	CDT_WHT		14
18530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
18630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
18730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Convert between stat structure types and directory types.
18830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
18930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	IFTOCDT(mode)	(((mode) & 0170000) >> 12)
19030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	CDTTOIF(dirtype)	((dirtype) << 12)
19130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
19230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
19330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
19430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _VUID_T_
19530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _VUID_T_
19630692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef u_int32_t vuid_t;
19730692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef u_int32_t vgid_t;
19830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /*_VUID_T_ */
19930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
20030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct CodaFid {
20130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	u_int32_t opaque[4];
20230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
20330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
20430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define coda_f2i(fid)\
20530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	(fid ? (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]) : 0)
20630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
20730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _VENUS_VATTR_T_
20830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _VENUS_VATTR_T_
20930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
21030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Vnode types.  VNON means no type.
21130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
21230692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum coda_vtype	{ C_VNON, C_VREG, C_VDIR, C_VBLK, C_VCHR, C_VLNK, C_VSOCK, C_VFIFO, C_VBAD };
21330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
21430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_vattr {
21530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long     	va_type;	/* vnode type (for create) */
21630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	u_short		va_mode;	/* files access mode and type */
21730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	short		va_nlink;	/* number of references to file */
21830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	vuid_t		va_uid;		/* owner user id */
21930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	vgid_t		va_gid;		/* owner group id */
22030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long		va_fileid;	/* file id */
22130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	u_quad_t	va_size;	/* file size in bytes */
22230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long		va_blocksize;	/* blocksize preferred for i/o */
22330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct timespec	va_atime;	/* time of last access */
22430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct timespec	va_mtime;	/* time of last modification */
22530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct timespec	va_ctime;	/* time file changed */
22630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	u_long		va_gen;		/* generation number of file */
22730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	u_long		va_flags;	/* flags defined for file */
22830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	cdev_t	        va_rdev;	/* device special file represents */
22930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	u_quad_t	va_bytes;	/* bytes of disk space held by file */
23030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	u_quad_t	va_filerev;	/* file modification number */
23130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
23230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
23330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
23430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
23530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* structure used by CODA_STATFS for getting cache information from venus */
23630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_statfs {
23730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int32_t f_blocks;
23830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int32_t f_bfree;
23930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int32_t f_bavail;
24030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int32_t f_files;
24130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int32_t f_ffree;
24230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
24330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
24430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
24530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Kernel <--> Venus communications.
24630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
24730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
24830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_ROOT	2
24930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_OPEN_BY_FD	3
25030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_OPEN	4
25130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_CLOSE	5
25230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_IOCTL	6
25330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_GETATTR	7
25430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_SETATTR	8
25530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_ACCESS	9
25630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_LOOKUP	10
25730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_CREATE	11
25830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_REMOVE	12
25930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_LINK	13
26030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_RENAME	14
26130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_MKDIR	15
26230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_RMDIR	16
26330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_SYMLINK	18
26430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_READLINK	19
26530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_FSYNC	20
26630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_VGET	22
26730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_SIGNAL	23
26830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_REPLACE	 24 /* DOWNCALL */
26930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_FLUSH       25 /* DOWNCALL */
27030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_PURGEUSER   26 /* DOWNCALL */
27130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_ZAPFILE     27 /* DOWNCALL */
27230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_ZAPDIR      28 /* DOWNCALL */
27330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_PURGEFID    30 /* DOWNCALL */
27430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_OPEN_BY_PATH 31
27530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_RESOLVE     32
27630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_REINTEGRATE 33
27730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_STATFS	 34
27830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_STORE	 35
27930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_RELEASE	 36
28030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_NCALLS 37
28130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
28230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DOWNCALL(opcode) (opcode >= CODA_REPLACE && opcode <= CODA_PURGEFID)
28330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
28430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VC_MAXDATASIZE	    8192
28530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VC_MAXMSGSIZE      sizeof(union inputArgs)+sizeof(union outputArgs) +\
28630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng                            VC_MAXDATASIZE
28730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
28830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CIOC_KERNEL_VERSION _IOWR('c', 10, size_t)
28930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
29030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_KERNEL_VERSION 3 /* 128-bit file identifiers */
29130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
29230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
29330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *        Venus <-> Coda  RPC arguments
29430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
29530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_in_hdr {
29630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    u_int32_t opcode;
29730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    u_int32_t unique;	    /* Keep multiple outstanding msgs distinct */
29830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    pid_t pid;
29930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    pid_t pgid;
30030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    vuid_t uid;
30130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
30230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
30330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Really important that opcode and unique are 1st two fields! */
30430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_out_hdr {
30530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    u_int32_t opcode;
30630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    u_int32_t unique;
30730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    u_int32_t result;
30830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
30930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
31030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_root: NO_IN */
31130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_root_out {
31230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
31330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
31430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
31530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
31630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_root_in {
31730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr in;
31830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
31930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
32030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_open: */
32130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_open_in {
32230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
32330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
32430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	flags;
32530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
32630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
32730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_open_out {
32830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
32930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    cdev_t	dev;
33030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    ino_t	inode;
33130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
33230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
33330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
33430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_store: */
33530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_store_in {
33630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
33730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
33830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	flags;
33930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
34030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
34130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_store_out {
34230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
34330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
34430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
34530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_release: */
34630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_release_in {
34730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
34830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
34930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	flags;
35030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
35130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
35230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_release_out {
35330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
35430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
35530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
35630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_close: */
35730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_close_in {
35830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
35930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
36030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	flags;
36130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
36230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
36330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_close_out {
36430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
36530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
36630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
36730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_ioctl: */
36830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_ioctl_in {
36930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
37030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
37130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	cmd;
37230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	len;
37330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	rwflag;
37430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    char *data;			/* Place holder for data. */
37530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
37630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
37730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_ioctl_out {
37830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
37930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	len;
38030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    caddr_t	data;		/* Place holder for data. */
38130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
38230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
38330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
38430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_getattr: */
38530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_getattr_in {
38630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
38730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
38830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
38930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
39030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_getattr_out {
39130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
39230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_vattr attr;
39330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
39430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
39530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
39630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_setattr: NO_OUT */
39730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_setattr_in {
39830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
39930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
40030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_vattr attr;
40130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
40230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
40330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_setattr_out {
40430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
40530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
40630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
40730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_access: NO_OUT */
40830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_access_in {
40930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
41030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
41130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	flags;
41230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
41330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
41430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_access_out {
41530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
41630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
41730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
41830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
41930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* lookup flags */
42030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLU_CASE_SENSITIVE     0x01
42130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLU_CASE_INSENSITIVE   0x02
42230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
42330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_lookup: */
42430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct  coda_lookup_in {
42530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
42630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
42730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int         name;		/* Place holder for data. */
42830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int         flags;
42930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
43030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
43130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_lookup_out {
43230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
43330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
43430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	vtype;
43530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
43630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
43730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
43830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_create: */
43930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_create_in {
44030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
44130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
44230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_vattr attr;
44330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int excl;
44430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int mode;
44530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int 	name;		/* Place holder for data. */
44630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
44730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
44830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_create_out {
44930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
45030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
45130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_vattr attr;
45230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
45330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
45430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
45530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_remove: NO_OUT */
45630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_remove_in {
45730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
45830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
45930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int name;		/* Place holder for data. */
46030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
46130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
46230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_remove_out {
46330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
46430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
46530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
46630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_link: NO_OUT */
46730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_link_in {
46830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
46930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid sourceFid;	/* cnode to link *to* */
47030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid destFid;	/* Directory in which to place link */
47130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int tname;		/* Place holder for data. */
47230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
47330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
47430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_link_out {
47530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
47630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
47730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
47830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
47930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_rename: NO_OUT */
48030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_rename_in {
48130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
48230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid sourceFid;
48330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int 	srcname;
48430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid destFid;
48530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int 	destname;
48630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
48730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
48830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_rename_out {
48930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
49030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
49130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
49230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_mkdir: */
49330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_mkdir_in {
49430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
49530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
49630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_vattr attr;
49730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	   name;		/* Place holder for data. */
49830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
49930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
50030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_mkdir_out {
50130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
50230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
50330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_vattr attr;
50430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
50530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
50630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
50730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_rmdir: NO_OUT */
50830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_rmdir_in {
50930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
51030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
51130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int name;		/* Place holder for data. */
51230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
51330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
51430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_rmdir_out {
51530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
51630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
51730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
51830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_symlink: NO_OUT */
51930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_symlink_in {
52030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
52130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;	/* Directory to put symlink in */
52230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int srcname;
52330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_vattr attr;
52430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int tname;
52530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
52630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
52730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_symlink_out {
52830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
52930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
53030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
53130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_readlink: */
53230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_readlink_in {
53330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
53430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
53530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
53630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
53730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_readlink_out {
53830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
53930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	count;
54030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    caddr_t	data;		/* Place holder for data. */
54130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
54230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
54330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
54430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_fsync: NO_OUT */
54530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_fsync_in {
54630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
54730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
54830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
54930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
55030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_fsync_out {
55130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr out;
55230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
55330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
55430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_vget: */
55530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_vget_in {
55630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
55730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
55830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
55930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
56030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_vget_out {
56130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
56230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
56330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	vtype;
56430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
56530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
56630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
56730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* CODA_SIGNAL is out-of-band, doesn't need data. */
56830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* CODA_INVALIDATE is a venus->kernel call */
56930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* CODA_FLUSH is a venus->kernel call */
57030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
57130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_purgeuser: */
57230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* CODA_PURGEUSER is a venus->kernel call */
57330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_purgeuser_out {
57430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
57530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    vuid_t uid;
57630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
57730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
57830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_zapfile: */
57930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* CODA_ZAPFILE is a venus->kernel call */
58030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_zapfile_out {
58130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
58230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid CodaFid;
58330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
58430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
58530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_zapdir: */
58630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* CODA_ZAPDIR is a venus->kernel call */
58730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_zapdir_out {
58830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
58930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid CodaFid;
59030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
59130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
59230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_purgefid: */
59330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* CODA_PURGEFID is a venus->kernel call */
59430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_purgefid_out {
59530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
59630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid CodaFid;
59730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
59830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
59930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_replace: */
60030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* CODA_REPLACE is a venus->kernel call */
60130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_replace_out { /* coda_replace is a venus->kernel call */
60230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
60330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid NewFid;
60430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid OldFid;
60530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
60630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
60730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_open_by_fd: */
60830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_open_by_fd_in {
60930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
61030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
61130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int        flags;
61230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
61330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
61430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_open_by_fd_out {
61530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
61630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int fd;
61730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
61830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifdef __KERNEL__
61930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct file *fh; /* not passed from userspace but used in-kernel only */
62030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
62130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
62230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
62330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_open_by_path: */
62430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_open_by_path_in {
62530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;
62630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct CodaFid VFid;
62730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    int	flags;
62830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
62930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
63030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_open_by_path_out {
63130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
63230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int path;
63330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
63430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
63530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* coda_statfs: NO_IN */
63630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_statfs_in {
63730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr in;
63830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
63930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
64030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_statfs_out {
64130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;
64230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_statfs stat;
64330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
64430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
64530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
64630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Occasionally, we don't cache the fid returned by CODA_LOOKUP.
64730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * For instance, if the fid is inconsistent.
64830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This case is handled by setting the top bit of the type result parameter.
64930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
65030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_NOCACHE          0x80000000
65130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
65230692c65c4174412c90e79489e98ab85c1a7412fBen Chengunion inputArgs {
65330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_in_hdr ih;		/* NB: every struct below begins with an ih */
65430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_open_in coda_open;
65530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_store_in coda_store;
65630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_release_in coda_release;
65730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_close_in coda_close;
65830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_ioctl_in coda_ioctl;
65930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_getattr_in coda_getattr;
66030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_setattr_in coda_setattr;
66130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_access_in coda_access;
66230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_lookup_in coda_lookup;
66330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_create_in coda_create;
66430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_remove_in coda_remove;
66530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_link_in coda_link;
66630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_rename_in coda_rename;
66730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_mkdir_in coda_mkdir;
66830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_rmdir_in coda_rmdir;
66930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_symlink_in coda_symlink;
67030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_readlink_in coda_readlink;
67130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_fsync_in coda_fsync;
67230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_vget_in coda_vget;
67330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_open_by_fd_in coda_open_by_fd;
67430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_open_by_path_in coda_open_by_path;
67530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_statfs_in coda_statfs;
67630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
67730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
67830692c65c4174412c90e79489e98ab85c1a7412fBen Chengunion outputArgs {
67930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_out_hdr oh;		/* NB: every struct below begins with an oh */
68030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_root_out coda_root;
68130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_open_out coda_open;
68230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_ioctl_out coda_ioctl;
68330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_getattr_out coda_getattr;
68430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_lookup_out coda_lookup;
68530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_create_out coda_create;
68630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_mkdir_out coda_mkdir;
68730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_readlink_out coda_readlink;
68830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_vget_out coda_vget;
68930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_purgeuser_out coda_purgeuser;
69030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_zapfile_out coda_zapfile;
69130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_zapdir_out coda_zapdir;
69230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_purgefid_out coda_purgefid;
69330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_replace_out coda_replace;
69430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_open_by_fd_out coda_open_by_fd;
69530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_open_by_path_out coda_open_by_path;
69630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_statfs_out coda_statfs;
69730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
69830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
69930692c65c4174412c90e79489e98ab85c1a7412fBen Chengunion coda_downcalls {
70030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    /* CODA_INVALIDATE is a venus->kernel call */
70130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    /* CODA_FLUSH is a venus->kernel call */
70230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_purgeuser_out purgeuser;
70330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_zapfile_out zapfile;
70430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_zapdir_out zapdir;
70530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_purgefid_out purgefid;
70630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng    struct coda_replace_out replace;
70730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
70830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
70930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
71030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
71130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Used for identifying usage of "Control" and pioctls
71230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
71330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
71430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define PIOCPARM_MASK 0x0000ffff
71530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ViceIoctl {
71630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        void __user *in;        /* Data to be transferred in */
71730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        void __user *out;       /* Data to be transferred out */
71830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        u_short in_size;        /* Size of input buffer <= 2K */
71930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        u_short out_size;       /* Maximum size of output buffer, <= 2K */
72030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
72130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
72230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct PioctlData {
72330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        const char __user *path;
72430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        int follow;
72530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng        struct ViceIoctl vi;
72630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
72730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
72830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_CONTROL		".CONTROL"
72930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_CONTROLLEN		8
73030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CTL_INO			-1
73130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
73230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Data passed to mount */
73330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
73430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CODA_MOUNT_VERSION 1
73530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
73630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct coda_mount_data {
73730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int		version;
73830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int		fd;       /* Opened device */
73930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
74030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
74130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPI_CODA_HEADER_ */
742