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