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