1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru   You may distribute this file under either of the two licenses that
3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru   follow at your discretion.
4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru*/
5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* BLURB lgpl
7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru                           Coda File System
9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru                              Release 5
10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru          Copyright (c) 1987-1999 Carnegie Mellon University
12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru                  Additional copyrights listed below
13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruThis code is distributed "AS IS" without warranty of any kind under
15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruthe terms of the GNU Library General Public Licence Version 2, as
16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querushown in the file LICENSE, or under the license shown below. The
17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutechnical and financial contributors to Coda are listed in the file
18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruCREDITS.
19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru                        Additional copyrights
21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru*/
22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru            Coda: an Experimental Distributed File System
26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru                             Release 4.0
27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru          Copyright (c) 1987-1999 Carnegie Mellon University
29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru                         All Rights Reserved
30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruPermission  to  use, copy, modify and distribute this software and its
32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querudocumentation is hereby granted,  provided  that  both  the  copyright
33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querunotice  and  this  permission  notice  appear  in  all  copies  of the
34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querusoftware, derivative works or  modified  versions,  and  any  portions
35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruthereof, and that both notices appear in supporting documentation, and
36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruthat credit is given to Carnegie Mellon University  in  all  documents
37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruand publicity pertaining to direct or indirect use of this code or its
38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruderivatives.
39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruCODA IS AN EXPERIMENTAL SOFTWARE SYSTEM AND IS  KNOWN  TO  HAVE  BUGS,
41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruSOME  OF  WHICH MAY HAVE SERIOUS CONSEQUENCES.  CARNEGIE MELLON ALLOWS
42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruFREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION.   CARNEGIE  MELLON
43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruDISCLAIMS  ANY  LIABILITY  OF  ANY  KIND  FOR  ANY  DAMAGES WHATSOEVER
44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruRESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE  OR  OF
45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruANY DERIVATIVE WORK.
46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruCarnegie  Mellon  encourages  users  of  this  software  to return any
48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruimprovements or extensions that  they  make,  and  to  grant  Carnegie
49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste QueruMellon the rights to redistribute these changes without encumbrance.
50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru*/
51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru *
54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Based on cfs.h from Mach, but revamped for increased simplicity.
55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Linux modifications by
56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Peter Braam, Aug 1996
57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _CODA_HEADER_
60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _CODA_HEADER_
61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Catch new _KERNEL defn for NetBSD and DJGPP/__CYGWIN32__ */
64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#if defined(__NetBSD__) || \
65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru  ((defined(DJGPP) || defined(__CYGWIN32__)) && !defined(KERNEL))
66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <sys/types.h>
67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef CODA_MAXSYMLINKS
70c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_MAXSYMLINKS 10
71c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
72c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
73c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#if defined(DJGPP) || defined(__CYGWIN32__)
74c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef KERNEL
75c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned long u_long;
76c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned int u_int;
77c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short u_short;
78c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef u_long ino_t;
79c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef u_long dev_t;
80c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef void * caddr_t;
81c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef DOS
82c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned __int64 u_quad_t;
83c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else
84c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned long long u_quad_t;
85c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
86c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
87c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define inline
88c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
89c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct timespec {
90c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        long       ts_sec;
91c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        long       ts_nsec;
92c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
93c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else  /* DJGPP but not KERNEL */
94c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <sys/time.h>
95c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned long long u_quad_t;
96c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* !KERNEL */
97c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* !DJGPP */
98c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
99c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
100c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#if defined(__linux__)
101c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/time.h>
102c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define cdev_t u_quad_t
103c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __KERNEL__
104c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#if !defined(_UQUAD_T_) && (!defined(__GLIBC__) || __GLIBC__ < 2)
105c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _UQUAD_T_ 1
106c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned long long u_quad_t;
107c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
108c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else /*__KERNEL__ */
109c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned long long u_quad_t;
110c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* __KERNEL__ */
111c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else
112c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define cdev_t dev_t
113c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
114c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
115c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __CYGWIN32__
116c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct timespec {
117c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        time_t  tv_sec;         /* seconds */
118c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        long    tv_nsec;        /* nanoseconds */
119c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
120c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
121c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
122c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __BIT_TYPES_DEFINED__
123c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __BIT_TYPES_DEFINED__
124c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef signed char	      int8_t;
125c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned char	    u_int8_t;
126c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef short		     int16_t;
127c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	   u_int16_t;
128c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef int		     int32_t;
129c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned int	   u_int32_t;
130c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
131c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
132c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
133c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
134c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Cfs constants
135c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
136c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_MAXNAMLEN   255
137c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_MAXPATHLEN  1024
138c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_MAXSYMLINK  10
139c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
140c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* these are Coda's version of O_RDONLY etc combinations
141c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * to deal with VFS open modes
142c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
143c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	C_O_READ	0x001
144c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	C_O_WRITE       0x002
145c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define C_O_TRUNC       0x010
146c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define C_O_EXCL	0x100
147c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define C_O_CREAT	0x200
148c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
149c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* these are to find mode bits in Venus */
150c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define C_M_READ  00400
151c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define C_M_WRITE 00200
152c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
153c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* for access Venus will use */
154c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define C_A_C_OK    8               /* Test for writing upon create.  */
155c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define C_A_R_OK    4               /* Test for read permission.  */
156c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define C_A_W_OK    2               /* Test for write permission.  */
157c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define C_A_X_OK    1               /* Test for execute permission.  */
158c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define C_A_F_OK    0               /* Test for existence.  */
159c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
160c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
161c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
162c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _VENUS_DIRENT_T_
163c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _VENUS_DIRENT_T_ 1
164c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct venus_dirent {
165c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        u_int32_t d_fileno;		/* file number of entry */
166c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        u_int16_t d_reclen;		/* length of this record */
167c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        u_int8_t  d_type;			/* file type, see below */
168c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        u_int8_t  d_namlen;		/* length of string in d_name */
169c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        char	  d_name[CODA_MAXNAMLEN + 1];/* name must be no longer than this */
170c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
171c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#undef DIRSIZ
172c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define DIRSIZ(dp)      ((sizeof (struct venus_dirent) - (CODA_MAXNAMLEN+1)) + \
173c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru                         (((dp)->d_namlen+1 + 3) &~ 3))
174c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
175c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
176c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * File types
177c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
178c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	CDT_UNKNOWN	 0
179c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	CDT_FIFO	 1
180c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	CDT_CHR		 2
181c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	CDT_DIR		 4
182c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	CDT_BLK		 6
183c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	CDT_REG		 8
184c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	CDT_LNK		10
185c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	CDT_SOCK	12
186c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	CDT_WHT		14
187c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
188c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
189c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Convert between stat structure types and directory types.
190c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
191c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	IFTOCDT(mode)	(((mode) & 0170000) >> 12)
192c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define	CDTTOIF(dirtype)	((dirtype) << 12)
193c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
194c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
195c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
196c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _VUID_T_
197c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _VUID_T_
198c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef u_int32_t vuid_t;
199c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef u_int32_t vgid_t;
200c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /*_VUID_T_ */
201c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
202c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_CODA_FS_OLD_API
203c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct CodaFid {
204c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_int32_t opaque[3];
205c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
206c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
207c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic __inline__ ino_t  coda_f2i(struct CodaFid *fid)
208c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{
209c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	if ( ! fid )
210c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru		return 0;
211c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	if (fid->opaque[1] == 0xfffffffe || fid->opaque[1] == 0xffffffff)
212c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru		return ((fid->opaque[0] << 20) | (fid->opaque[2] & 0xfffff));
213c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	else
214c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru		return (fid->opaque[2] + (fid->opaque[1]<<10) + (fid->opaque[0]<<20));
215c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}
216c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
217c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_cred {
218c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    vuid_t cr_uid, cr_euid, cr_suid, cr_fsuid; /* Real, efftve, set, fs uid*/
219c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    vgid_t cr_groupid, cr_egid, cr_sgid, cr_fsgid; /* same for groups */
220c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
221c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
222c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else /* not defined(CONFIG_CODA_FS_OLD_API) */
223c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
224c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct CodaFid {
225c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_int32_t opaque[4];
226c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
227c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
228c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define coda_f2i(fid)\
229c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	(fid ? (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]) : 0)
230c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
231c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
232c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
233c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _VENUS_VATTR_T_
234c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _VENUS_VATTR_T_
235c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
236c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Vnode types.  VNON means no type.
237c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
238c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruenum coda_vtype	{ C_VNON, C_VREG, C_VDIR, C_VBLK, C_VCHR, C_VLNK, C_VSOCK, C_VFIFO, C_VBAD };
239c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
240c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_vattr {
241c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	long     	va_type;	/* vnode type (for create) */
242c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_short		va_mode;	/* files access mode and type */
243c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	short		va_nlink;	/* number of references to file */
244c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	vuid_t		va_uid;		/* owner user id */
245c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	vgid_t		va_gid;		/* owner group id */
246c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	long		va_fileid;	/* file id */
247c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_quad_t	va_size;	/* file size in bytes */
248c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	long		va_blocksize;	/* blocksize preferred for i/o */
249c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	struct timespec	va_atime;	/* time of last access */
250c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	struct timespec	va_mtime;	/* time of last modification */
251c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	struct timespec	va_ctime;	/* time file changed */
252c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_long		va_gen;		/* generation number of file */
253c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_long		va_flags;	/* flags defined for file */
254c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	cdev_t	        va_rdev;	/* device special file represents */
255c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_quad_t	va_bytes;	/* bytes of disk space held by file */
256c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_quad_t	va_filerev;	/* file modification number */
257c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
258c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
259c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
260c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
261c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* structure used by CODA_STATFS for getting cache information from venus */
262c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_statfs {
263c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int32_t f_blocks;
264c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int32_t f_bfree;
265c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int32_t f_bavail;
266c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int32_t f_files;
267c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int32_t f_ffree;
268c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
269c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
270c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
271c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Kernel <--> Venus communications.
272c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
273c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
274c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_ROOT	2
275c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_OPEN_BY_FD	3
276c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_OPEN	4
277c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_CLOSE	5
278c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_IOCTL	6
279c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_GETATTR	7
280c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_SETATTR	8
281c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_ACCESS	9
282c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_LOOKUP	10
283c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_CREATE	11
284c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_REMOVE	12
285c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_LINK	13
286c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_RENAME	14
287c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_MKDIR	15
288c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_RMDIR	16
289c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_SYMLINK	18
290c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_READLINK	19
291c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_FSYNC	20
292c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_VGET	22
293c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_SIGNAL	23
294c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_REPLACE	 24 /* DOWNCALL */
295c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_FLUSH       25 /* DOWNCALL */
296c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_PURGEUSER   26 /* DOWNCALL */
297c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_ZAPFILE     27 /* DOWNCALL */
298c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_ZAPDIR      28 /* DOWNCALL */
299c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_PURGEFID    30 /* DOWNCALL */
300c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_OPEN_BY_PATH 31
301c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_RESOLVE     32
302c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_REINTEGRATE 33
303c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_STATFS	 34
304c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_STORE	 35
305c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_RELEASE	 36
306c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_NCALLS 37
307c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
308c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define DOWNCALL(opcode) (opcode >= CODA_REPLACE && opcode <= CODA_PURGEFID)
309c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
310c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define VC_MAXDATASIZE	    8192
311c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define VC_MAXMSGSIZE      sizeof(union inputArgs)+sizeof(union outputArgs) +\
312c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru                            VC_MAXDATASIZE
313c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
314c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CIOC_KERNEL_VERSION _IOWR('c', 10, size_t)
315c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
316c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#if 0
317c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_KERNEL_VERSION 0 /* don't care about kernel version number */
318c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_KERNEL_VERSION 1 /* The old venus 4.6 compatible interface */
319c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
320c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_CODA_FS_OLD_API
321c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_KERNEL_VERSION 2 /* venus_lookup got an extra parameter */
322c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else
323c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_KERNEL_VERSION 3 /* 128-bit file identifiers */
324c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
325c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
326c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
327c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru *        Venus <-> Coda  RPC arguments
328c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
329c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_in_hdr {
330c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    u_int32_t opcode;
331c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    u_int32_t unique;	    /* Keep multiple outstanding msgs distinct */
332c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_CODA_FS_OLD_API
333c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    u_int16_t pid;	    /* Common to all */
334c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    u_int16_t pgid;	    /* Common to all */
335c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    u_int16_t sid;          /* Common to all */
336c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_cred cred;  /* Common to all */
337c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else
338c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    pid_t pid;
339c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    pid_t pgid;
340c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    vuid_t uid;
341c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
342c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
343c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
344c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Really important that opcode and unique are 1st two fields! */
345c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_out_hdr {
346c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    u_int32_t opcode;
347c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    u_int32_t unique;
348c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    u_int32_t result;
349c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
350c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
351c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_root: NO_IN */
352c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_root_out {
353c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
354c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
355c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
356c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
357c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_root_in {
358c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr in;
359c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
360c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
361c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_open: */
362c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_open_in {
363c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
364c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
365c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	flags;
366c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
367c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
368c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_open_out {
369c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
370c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    cdev_t	dev;
371c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    ino_t	inode;
372c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
373c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
374c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
375c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_store: */
376c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_store_in {
377c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
378c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
379c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	flags;
380c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
381c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
382c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_store_out {
383c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
384c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
385c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
386c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_release: */
387c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_release_in {
388c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
389c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
390c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	flags;
391c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
392c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
393c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_release_out {
394c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
395c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
396c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
397c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_close: */
398c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_close_in {
399c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
400c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
401c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	flags;
402c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
403c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
404c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_close_out {
405c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
406c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
407c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
408c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_ioctl: */
409c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_ioctl_in {
410c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
411c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
412c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	cmd;
413c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	len;
414c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	rwflag;
415c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    char *data;			/* Place holder for data. */
416c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
417c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
418c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_ioctl_out {
419c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
420c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	len;
421c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    caddr_t	data;		/* Place holder for data. */
422c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
423c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
424c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
425c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_getattr: */
426c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_getattr_in {
427c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
428c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
429c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
430c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
431c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_getattr_out {
432c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
433c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_vattr attr;
434c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
435c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
436c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
437c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_setattr: NO_OUT */
438c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_setattr_in {
439c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
440c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
441c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_vattr attr;
442c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
443c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
444c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_setattr_out {
445c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
446c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
447c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
448c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_access: NO_OUT */
449c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_access_in {
450c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
451c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
452c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	flags;
453c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
454c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
455c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_access_out {
456c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
457c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
458c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
459c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
460c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* lookup flags */
461c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CLU_CASE_SENSITIVE     0x01
462c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CLU_CASE_INSENSITIVE   0x02
463c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
464c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_lookup: */
465c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct  coda_lookup_in {
466c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
467c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
468c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int         name;		/* Place holder for data. */
469c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int         flags;
470c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
471c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
472c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_lookup_out {
473c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
474c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
475c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	vtype;
476c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
477c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
478c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
479c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_create: */
480c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_create_in {
481c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
482c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
483c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_vattr attr;
484c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int excl;
485c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int mode;
486c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int 	name;		/* Place holder for data. */
487c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
488c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
489c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_create_out {
490c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
491c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
492c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_vattr attr;
493c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
494c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
495c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
496c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_remove: NO_OUT */
497c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_remove_in {
498c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
499c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
500c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int name;		/* Place holder for data. */
501c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
502c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
503c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_remove_out {
504c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
505c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
506c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
507c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_link: NO_OUT */
508c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_link_in {
509c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
510c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid sourceFid;	/* cnode to link *to* */
511c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid destFid;	/* Directory in which to place link */
512c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int tname;		/* Place holder for data. */
513c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
514c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
515c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_link_out {
516c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
517c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
518c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
519c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
520c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_rename: NO_OUT */
521c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_rename_in {
522c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
523c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid sourceFid;
524c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int 	srcname;
525c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid destFid;
526c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int 	destname;
527c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
528c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
529c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_rename_out {
530c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
531c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
532c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
533c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_mkdir: */
534c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_mkdir_in {
535c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
536c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
537c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_vattr attr;
538c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	   name;		/* Place holder for data. */
539c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
540c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
541c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_mkdir_out {
542c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
543c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
544c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_vattr attr;
545c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
546c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
547c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
548c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_rmdir: NO_OUT */
549c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_rmdir_in {
550c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
551c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
552c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int name;		/* Place holder for data. */
553c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
554c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
555c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_rmdir_out {
556c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
557c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
558c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
559c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_symlink: NO_OUT */
560c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_symlink_in {
561c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
562c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;	/* Directory to put symlink in */
563c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int srcname;
564c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_vattr attr;
565c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int tname;
566c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
567c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
568c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_symlink_out {
569c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
570c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
571c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
572c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_readlink: */
573c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_readlink_in {
574c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
575c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
576c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
577c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
578c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_readlink_out {
579c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
580c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	count;
581c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    caddr_t	data;		/* Place holder for data. */
582c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
583c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
584c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
585c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_fsync: NO_OUT */
586c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_fsync_in {
587c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
588c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
589c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
590c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
591c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_fsync_out {
592c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr out;
593c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
594c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
595c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_vget: */
596c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_vget_in {
597c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
598c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
599c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
600c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
601c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_vget_out {
602c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
603c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
604c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	vtype;
605c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
606c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
607c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
608c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* CODA_SIGNAL is out-of-band, doesn't need data. */
609c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* CODA_INVALIDATE is a venus->kernel call */
610c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* CODA_FLUSH is a venus->kernel call */
611c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
612c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_purgeuser: */
613c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* CODA_PURGEUSER is a venus->kernel call */
614c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_purgeuser_out {
615c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
616c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_CODA_FS_OLD_API
617c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_cred cred;
618c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else
619c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    vuid_t uid;
620c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
621c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
622c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
623c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_zapfile: */
624c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* CODA_ZAPFILE is a venus->kernel call */
625c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_zapfile_out {
626c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
627c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid CodaFid;
628c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
629c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
630c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_zapdir: */
631c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* CODA_ZAPDIR is a venus->kernel call */
632c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_zapdir_out {
633c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
634c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid CodaFid;
635c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
636c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
637c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_purgefid: */
638c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* CODA_PURGEFID is a venus->kernel call */
639c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_purgefid_out {
640c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
641c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid CodaFid;
642c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
643c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
644c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_replace: */
645c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* CODA_REPLACE is a venus->kernel call */
646c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_replace_out { /* coda_replace is a venus->kernel call */
647c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
648c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid NewFid;
649c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid OldFid;
650c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
651c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
652c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_open_by_fd: */
653c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_open_by_fd_in {
654c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
655c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
656c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int        flags;
657c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
658c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
659c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_open_by_fd_out {
660c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
661c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int fd;
662c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
663c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __KERNEL__
664c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct file *fh; /* not passed from userspace but used in-kernel only */
665c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
666c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
667c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
668c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_open_by_path: */
669c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_open_by_path_in {
670c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;
671c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct CodaFid VFid;
672c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    int	flags;
673c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
674c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
675c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_open_by_path_out {
676c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
677c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	int path;
678c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
679c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
680c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* coda_statfs: NO_IN */
681c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_statfs_in {
682c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr in;
683c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
684c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
685c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_statfs_out {
686c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;
687c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_statfs stat;
688c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
689c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
690c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
691c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Occasionally, we don't cache the fid returned by CODA_LOOKUP.
692c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * For instance, if the fid is inconsistent.
693c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * This case is handled by setting the top bit of the type result parameter.
694c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
695c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_NOCACHE          0x80000000
696c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
697c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruunion inputArgs {
698c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_in_hdr ih;		/* NB: every struct below begins with an ih */
699c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_open_in coda_open;
700c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_store_in coda_store;
701c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_release_in coda_release;
702c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_close_in coda_close;
703c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_ioctl_in coda_ioctl;
704c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_getattr_in coda_getattr;
705c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_setattr_in coda_setattr;
706c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_access_in coda_access;
707c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_lookup_in coda_lookup;
708c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_create_in coda_create;
709c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_remove_in coda_remove;
710c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_link_in coda_link;
711c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_rename_in coda_rename;
712c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_mkdir_in coda_mkdir;
713c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_rmdir_in coda_rmdir;
714c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_symlink_in coda_symlink;
715c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_readlink_in coda_readlink;
716c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_fsync_in coda_fsync;
717c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_vget_in coda_vget;
718c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_open_by_fd_in coda_open_by_fd;
719c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_open_by_path_in coda_open_by_path;
720c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_statfs_in coda_statfs;
721c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
722c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
723c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruunion outputArgs {
724c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_out_hdr oh;		/* NB: every struct below begins with an oh */
725c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_root_out coda_root;
726c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_open_out coda_open;
727c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_ioctl_out coda_ioctl;
728c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_getattr_out coda_getattr;
729c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_lookup_out coda_lookup;
730c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_create_out coda_create;
731c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_mkdir_out coda_mkdir;
732c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_readlink_out coda_readlink;
733c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_vget_out coda_vget;
734c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_purgeuser_out coda_purgeuser;
735c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_zapfile_out coda_zapfile;
736c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_zapdir_out coda_zapdir;
737c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_purgefid_out coda_purgefid;
738c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_replace_out coda_replace;
739c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_open_by_fd_out coda_open_by_fd;
740c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_open_by_path_out coda_open_by_path;
741c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_statfs_out coda_statfs;
742c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
743c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
744c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruunion coda_downcalls {
745c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    /* CODA_INVALIDATE is a venus->kernel call */
746c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    /* CODA_FLUSH is a venus->kernel call */
747c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_purgeuser_out purgeuser;
748c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_zapfile_out zapfile;
749c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_zapdir_out zapdir;
750c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_purgefid_out purgefid;
751c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru    struct coda_replace_out replace;
752c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
753c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
754c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
755c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
756c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Used for identifying usage of "Control" and pioctls
757c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
758c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
759c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define PIOCPARM_MASK 0x0000ffff
760c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct ViceIoctl {
761c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        void __user *in;        /* Data to be transferred in */
762c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        void __user *out;       /* Data to be transferred out */
763c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        u_short in_size;        /* Size of input buffer <= 2K */
764c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        u_short out_size;       /* Maximum size of output buffer, <= 2K */
765c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
766c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
767c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct PioctlData {
768c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        const char __user *path;
769c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        int follow;
770c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru        struct ViceIoctl vi;
771c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
772c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
773c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_CONTROL		".CONTROL"
774c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_CONTROLLEN		8
775c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CTL_INO			-1
776c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
777c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Data passed to mount */
778c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
779c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define CODA_MOUNT_VERSION 1
780c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
781c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct coda_mount_data {
782c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	int		version;
783c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	int		fd;       /* Opened device */
784c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
785c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
786c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
787c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
788