1 /* 2 * coda_fs_i.h 3 * 4 * Copyright (C) 1998 Carnegie Mellon University 5 * 6 */ 7 8 #ifndef _LINUX_CODA_FS_I 9 #define _LINUX_CODA_FS_I 10 11 #include <linux/types.h> 12 #include <linux/list.h> 13 #include <linux/coda.h> 14 15 /* 16 * coda fs inode data 17 */ 18 struct coda_inode_info { 19 struct CodaFid c_fid; /* Coda identifier */ 20 u_short c_flags; /* flags (see below) */ 21 struct list_head c_cilist; /* list of all coda inodes */ 22 unsigned int c_mapcount; /* nr of times this inode is mapped */ 23 unsigned int c_cached_epoch; /* epoch for cached permissions */ 24 vuid_t c_uid; /* fsuid for cached permissions */ 25 unsigned int c_cached_perm; /* cached access permissions */ 26 struct inode vfs_inode; 27 }; 28 29 /* 30 * coda fs file private data 31 */ 32 #define CODA_MAGIC 0xC0DAC0DA 33 struct coda_file_info { 34 int cfi_magic; /* magic number */ 35 struct file *cfi_container; /* container file for this cnode */ 36 unsigned int cfi_mapcount; /* nr of times this file is mapped */ 37 }; 38 39 #define CODA_FTOC(file) ((struct coda_file_info *)((file)->private_data)) 40 41 /* flags */ 42 #define C_VATTR 0x1 /* Validity of vattr in inode */ 43 #define C_FLUSH 0x2 /* used after a flush */ 44 #define C_DYING 0x4 /* from venus (which died) */ 45 #define C_PURGE 0x8 46 47 int coda_cnode_make(struct inode **, struct CodaFid *, struct super_block *); 48 struct inode *coda_iget(struct super_block *sb, struct CodaFid *fid, struct coda_vattr *attr); 49 int coda_cnode_makectl(struct inode **inode, struct super_block *sb); 50 struct inode *coda_fid_to_inode(struct CodaFid *fid, struct super_block *sb); 51 void coda_replace_fid(struct inode *, struct CodaFid *, struct CodaFid *); 52 53 #endif 54